Below is the result of running CPUCount on our IBM Server:
Hyper-Threading Technology: Enabled
Hardware capability and its availability to applications:
System wide availability: 2 physical processors, 4 cores,8 logical processors
Multi-core capabililty : Maximum 2 cores per package
HT capability: Maximum 2 logical processors per core
All cores in the system are enabled for this application.
Relationships between OS affinity mask, Initial APIC ID, and 3-level sub-IDs:
AffinityMask = 1; Initial APIC = 0; Physical ID = 0, Core ID = 0, SMT ID = 0
AffinityMask = 2; Initial APIC = 2; Physical ID = 0, Core ID = 2, SMT ID = 0
AffinityMask = 4; Initial APIC = 4; Physical ID = 4, Core ID = 0, SMT ID = 0
AffinityMask = 8; Initial APIC = 6; Physical ID = 4, Core ID = 2, SMT ID = 0
AffinityMask = 16; Initial APIC = 1; Physical ID = 0, Core ID = 0, SMT ID = 1
AffinityMask = 32; Initial APIC = 3; Physical ID = 0, Core ID = 2, SMT ID = 1
AffinityMask = 64; Initial APIC = 5; Physical ID = 4, Core ID = 0, SMT ID = 1
AffinityMask = 128; Initial APIC = 7; Physical ID = 4, Core ID = 2, SMT ID = 1
As you can probably tell this server is running two dual core xeon's with HT enabled. I am sure this has been discussed in documentation or forums somewhere but I havent stumbled across it yet, but how can i determine the cores vs. the HT. I am running a SQL server and noticed that if i completely disabled HT in the BIOS i was presented with two CPUs in Windows. SQL Actually performed significantly better using just two CPUs rather than all 8 logical cores. I have read this has to do with the Hyperthreading, and the suggestion was to limit SQL to use only the physical cores, not the hyperthreading portion (i hope that makes sense, still trying to wrap my brain around all this). Would my physical cores be the first four listed with SMT ID = 0? Any help you could provide would be appreciated.
I believe you are correct. By enumerating all physical cores first, before repeating the list with the 2nd HT ID, the BIOS has set up so that you could limit operation to 4 separate cores in several ways:
a) by rebooting with ncpu=4
b) by shutting off HT in the BIOS options screen
c) by using the Windows affinity mask to limit yoursession to the 1st 4 logical CPUs.