I have a Win 2000 system with two CPUs and hyper threading enabled. I can verify that hyper threading is working when I look at the Task Manager and the Device Manager and I see four CPU panels.
However, when I run a particular application (the ANTs Database), it appears that this application only uses the physical CPUs, but does not use the hyper-threaded CPUs. How can I get the application to use both the logical CPUs?
How do I know that the application is not using all of the CPUs? If I tell the database to use 1 CPU and run a compex query, it maxes out at 25% CPU utilization. If I tell it to use 2 CPUs and run a complex query, it maxes out at 50% CPU. If I set processor affinity I see the or or two of the CPUs busy, but the other CPUs are idle.
Thanks for any information you can provide.
The application database might only beconfigured for2 threads.
Also, on HT systems each CPU has two integer execution units but only one floating point execution unit and all share resources such as the memory controller and cache system. Your system has two CPUs with 4 integer execution units but only 2 floating point execution units. Under very favorable circumstances each CPU can attain about 30% performance improvement but generally youmaysee 15% improvement per CPU and under least favorable circumstances (all FPU bound) you will observe no performance improvement per CPU. Therefore, your system will be maxed out between 50% and 65% registering on the Task Manager.
2x (25% + (0% of 25%)) = 50% on low end
2 x (25% + (30% of 25%)) = 65% on high end