Thursday, August 23, 2012

How Can I Tell if My System Is Using Hyper-Threading Technology?

New microarchitecture poses challenges for traditional system monitoring tools in terms of how CPU utilizations should be interpreted when logical or virtual processors are exposed to operating systems as if they were physical processors.

Whether it's a physical processor, a hyperthreaded logical processor, or a core, they all appear as a CPU to the operating system, which imposes challenges for interpreting the log data you collect with the processor performance counter.

What's Hyper-Threading?


Intel® Hyper-Threading Technology (Intel® HT Technology) delivers two processing threads per physical core. It is a form of simultaneous multi-threading that takes advantage of super scalar architecture (multiple instructions operating on separate data in parallel). They appear to the OS as two processors, thus the OS can schedule two processes at once. In addition two or more processes can use the same resources. If one process fails then the resources can be readily re-allocated.

Many of the desktop and server platforms that ship with Intel processors include hyper-threading support.  This means that you must have a processor, chipset, operating system, and BIOS that all support the technology.  Most of these platforms will allow you to enable or disable Hyper-Threading Technology as a BIOS option (it should be enabled by default).

You can view your CPU information using the Task Manager in Windows, and /proc/cpuinfo in Linux. If you have a supported platform and Hyper-Threading is enabled, you should see twice the number of CPUs as you have physical cores in your platform.

/proc/cpuinfo


Using our system (i.e., Westmere-EP) as an example, it is a dual-processor Xeon® 5650 series server.  Then you should see 24 logical CPUs (24 hardware threads running on 6 physical cores, 2 threads per core) from /proc/cpuinfo.

$ cat /proc/cpuinfo | egrep "physical\ id" | sort | uniq -c
     12 physical id     : 0
     12 physical id     : 1
The above shows that our system has two physical processors.  We know each processor has 6 cores.  Because hyper-threading was enabled, we see 12 logical CPUs per processor as shown on the lines.

References

  1. Intel® Hyper-Threading Technology: Your Questions Answered
  2. Intel® Xeon® Processor X5650
  3. Westmere-EP

No comments: