The Live Optics collector captures CPU usage on a per Core basis from the host systems that it monitors. The Core count and Core performance is also captured, but individual CPU Core performance is not reported in granular samples over time. Instead, per Core metrics are aggregated together to show a total consumption of CPU against the total capabilities of the CPU itself.
The total amount of Net CPU Cycles (GHz) is shown on a 0-100% vertical scale on the left side of the chart.
The total number of CPU Cores detected will be shown from 1-N, the number of Cores, on the vertical scale on the right side of the chart.
The total amount of time captured in the sample period will be shown from start to finish on the horizontal axis of the chart.
So in the graph below, we have a server with a total of 51.0 Net CPU Cycles measured in GHz. This server also has a Core count of 16 cores.
Understanding CPU Utilization
Due to potentially high Core counts, reporting each Core’s performance values could make the graphs unreadable. The aggregated consumption of those total CPU cycles are displayed at each sample interval over the recording time.
In the graph below you will see a server that periodically spikes to near 30% and sometimes falls to below 10%, but on average is consistent around 16% utilization. This level of utility is common and one might be left to assume that this server is nearly 85% underutilized or has 85% performance still available to workloads.
Understanding Core Saturation
However, individual core usage is important and Live Optics informs you of what we call Core Saturation Count.
For each CPU core in a sampling period that has an individual usage rate above 90%, Live Optics will consider that core to be “Saturated” for that sample period.
The total number of Saturated Cores will be displayed as a yellow line. The count of these Saturated Cores will correlate to the core count shown on the vertical axis on the right side of the chart.
The saturated core count is plotted in a graph overlaying the total CPU usage percentage. This way one can see the total CPU usage of all cores, and identify if individual cores are being fully utilized.
In the example chart below we see that one core is saturated for nearly the entire sample period.
The basic translation here is that although the server at the aggregate CPU utilization level might be reporting utility at only 16%, one process on this machine is being limited by the amount of capabilities assigned and cannot borrow from the other cores to do more.
The Saturated Core Count provides insight into how your CPU workloads are distributed across all the cores.
In regards to software design, a low overall CPU usage accompanying a Saturated Core Count that is above zero indicates applications that are CPU intensive, but also single threaded.
In these cases, the application workload could likely be more efficiently spread across multiple cores by either reconfiguring the application or reworking the software.
In regards to virtual machines, often a virtual machine will be assigned or dedicated to a single Core. In this case the entire VM’s ability to perform is subject to performance limitations due to the capabilities of which it was assigned.
If a Core is saturated, this means that the task that it is processing is bottlenecked on the CPU. This problem can be solved by new hardware with greater CPU/Core capabilities. But, not all performance issues are hardware related. By spreading tasks out over multiple threads (and thus multiple cores) this bottleneck can also be removed.
Live Optics supports saturated core counts for Windows and Linux hosts. Saturated core counts for other host operating systems are not supported.
This write up utilizes the following published project for your reference: