A little Friday esxtop trivia for the performance massive: did you ever notice your Hyper-Threaded systems have three rows showing CPU utilization in the CPU panel header? They are labeled “PCPU USED(%)”, “PCPU UTIL(%)”, and “CORE UTIL(%)”. Here is a screen shot to jog your memory:
This capture shows utilization of each physical and logical processor core in the system. The first row, PCPU USED, provides the percent of each physical core used by the logical core, multiplied by turbo mode, a processor feature that temporarily increases the core’s internal clock frequency. This means two threads running at full, turbo speed might produce a number like 55% for each entry. It also means that one thread can drive its logical CPU to 100% only if the logical core’s sibling is unused. The second row is a straightforward calculation of the utilization of each logical core and the third row similarly shows utilization of physical cores.
Where things get really confusing is when these results are combined into three system-wide, aggregate utilization numbers, as seen by esxtop’s batch printout. The three utilization types above generated different utilization numbers. Unfortunately esxtop’s batch mode labels these counters slightly differently. But this table includes both names:
|esxtop Interactive||esxtop Batch Output (and esxplot)||Description||Single Core Example|
|PCPU USED(%)||% Processor Time||The average of each hardware thread’s use of the physical core multiplied by turbo mode.||One thread running fully: 108%, two threads running fully: 50%|
|PCPU UTIL(%)||% Util Time||Percent utilization of logical cores.||One thread running fully: 50%, two threads running fully: 100%|
|CORE UTIL(%)||% Core Util Time||Utilization of the physical core.||One thread running fully: 100%, two threads running fully: 100%|
The “Single Core Example” column provides an example calculation based on threads running as fast as possible on a single Hyper-Threaded physical core. There are some interesting observations on these calculations:
- Even a great number of threads running full bore on an HT system will not produce a PCPU USED(%) number much over 50%.
- Two running threads will produce a lower PCPU USED(%) than one running thread. This is because each thread’s utilization is calculated against the physical core. With two running, each is averaging 50% of the core. But a single thread that is not sharing the core can drive this to 100%. In both cases the actual number could be a little higher if turbo mode is on.
- You must have at least two threads–one on each logical core–to drive PCPU UTIL(%) to 100%.
- CORE UTIL(%) can be driven to 100% with only one thread per physical core.
Look for this content to be rolled into our esxtop documentation soon.