Q6600, only one core does most work
Just like the title says, one of my cores (core 2) does most of the processing. Is there something I need to configure with my motherboard or OS. I have a Gigabyte GA-P35-DS3R mobo and running xp pro. Thanks!
As others said it depends on the kind of programs you run, but take on account that Intel CPUs are fairly less efficient than AMD ones on processing sharing acrross multiple cores.
As an example the linux 2.6 kernel compilation task with GNU make charges an E6400 with 68% on Core0 and 32% on Core1, besides the same on an Athlon X2 4000+ charges 56% on Core0 and 44% on Core1 resulting in a real 15% less total time required over Intel CPU.
Taking on account that the frequency is the same (2.13GHz for E6400 vs 2.10GHz for 4000+) while the AMD machine was equipped with DDR2-667-4-4-4-12 vs DDR2-800-4-4-3-8 (both 2x512MB modules).
Speaking of raw performance Intel chips are far superior now (except for Floating Point and pure 64 bit calculations where AMD still takes a little lead), but seems that Intel Core 2 has still a little troubles in allocating threads to multiple cores.
Using the Core Affinity setting in the task manager could help this significantly.
Don't worry about it! What you see in Task Manager is not the whole story. It shows the processes that are alive in the system, not the threads. Each process can have multiple threads. You can have it show the number of threads by selecting View->Select Columns. I don't think it is possible to see what each thread is doing, unless (like me) you are a programmer who is using development tools to do so.
Windows may be putting most processes on one CPU because it is a lot more efficient to do so. Windows programs wait for some kind of message from Windows that something occurred, like a mouse click. It then passes those messages to the applications main thread. There are very few main threads alive in your system. The vast majority of processes you see are DLLs, COM objects, Services, etc. that the applications use to perform various tasks. You want them to be on one CPU to make it a lot more efficient for the main threads to call them.
Each main thread (within a process) can also spawn other threads to do various things. Like a game can spawn another thread to load resources from the HD or play the background music. Word uses another thread to do its spell-checking while you type. Photoshop may launch several threads to perform various filters on an image. One of the tests that THG shows is a 3DS MAX operation that uses multiple threads effectively, where the number of CPUs is more important than the clock speed of the CPU (Q6600 is faster than E6850).
So, having a thread running on another CPU is really only valuable when an application process uses multiple threads to do several things at once. The system could create those threads to use the other CPUs, so they can all run concurrently. Performance improves as each thread performs an operation that takes more time.
The benefit to games is actually limited. Only one thread can receive user input. The reason DirectX10 is not doing really well is because it assumes you will use multiple threads to access the various buffers and performs system locks on those buffers when they are accessed.
With DX9 it was optional to create the DX device to use more than one thread. When created to use one thread (the default) no locking was necessary to update the various DirectX managed buffers.
When you want the game to perform at 40+ FPS, you gotta weigh the cost of managing multiple threads versus the benefit of doing several operations concurrently. It is quite a challange. This is why applications that perform long operations benefit the most from multiple CPUs. When you have 25 milliseconds to render each frame, the cost of managing multiple threads becomes expensive. This is why DX10 games are having issues with performance.
I know that Intel is working to improve the performance of their architecture and microcode for multi-threading. Eventually the cost of creating and managing multiple threads will improve. It may require changes to both the chipset and CPU architectures in addition to the microcode. If so, it may also require MS to redo their compilers to use any new features.
For now, most people will benefit more from an E6850 than a Q6600.
Download and runthis.
While running it open up your task manager and click on the x-cpu button.
Once the picture is rendering you should see 4 or more lines. If you see that then your
cpu is working fine.
You have a lazy core, you need to put a patch over the core that is doing all the work - wait thats an eye?
Seriously, if your running some apps you see that but if you see it all the time something is wrong.
drag out your task manger full screen - stretch itm then open multiple apps - antivirus, browsers and such shrink the screen and check the task manager you should see a good distribution, on both cores.
with a quad core, especially, 2 cores tend to work since most apps are built for ht and works with dual cores.
with intel bringing back ht, the hper threading quad cores will allow developes to make octo ready apps