Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Difference between CPU Usage and CPU Utilization?

I was wondering if there is a scientific differentiation in terminology when speaking of CPU Usage and CPU Utilization. I have the feeling that both words are used as synonyms. They both describe the relation between CPU Time and CPU Capacity. Wikipedia calls it CPU Usage. Microsoft uses CPU Utilization. But I also found an article where Microsoft uses the term CPU Usage. Now VMware defines to use CPU Utilization in the context of physical CPUs and CPU Usage in the context of logical CPUs. Also, there is no tag for cpu_utilization in stackoverflow.

Does anyone know a scientific differentiation?

like image 342
Incanus Avatar asked Jun 14 '15 15:06

Incanus


3 Answers

Usage CPU usage as a percentage during the interval. o VM - Amount of actively used virtual CPU, as a percentage of total available CPU. This is the host's view of the CPU usage, not the guest operating system view. It is the average CPU utilization over all available virtual CPUs in the virtual machine. For example, if a virtual machine with one virtual CPU is running on a host that has four physical CPUs and the CPU usage is 100%, the virtual machine is using one physical CPU completely.

virtual CPU usage = usagemhz / (# of virtual CPUs x core frequency) o Host - Actively used CPU of the host, as a percentage of the total available CPU. Active CPU is approximately equal to the ratio of the used CPU to the available CPU.

available CPU = # of physical CPUs x clock rate

100% represents all CPUs on the host. For example, if a four-CPU host is running a virtual machine with two CPUs, and the usage is 50%, the host is using two CPUs completely. o Cluster - Sum of actively used CPU of all virtual machines in the cluster, as a percentage of the total available CPU.

CPU Usage = CPU usagemhz / effectivecpu

CPU usage, as measured in megahertz, during the interval. o VM - Amount of actively used virtual CPU. This is the host's view of the CPU usage, not the guest operating system view. o Host - Sum of the actively used CPU of all powered on virtual machines on a host. The maximum possible value is the frequency of the processors multiplied by the number of processors. For example, if you have a host with four 2GHz CPUs running a virtual machine that is using 4000MHz, the host is using two CPUs completely. 4000 / (4 x 2000) = 0.50

Used: Time accounted to the virtual machine. If a system service runs on behalf of this virtual machine, the time spent by that service (represented by cpu.system) should be charged to this virtual machine. If not, the time spent (represented by cpu.overlap) should not be charged against this virtual machine.

Reference:http://pubs.vmware.com/vsphere-51/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fcpu_counters.html

like image 168
Hafiz ur Rahman Avatar answered Oct 22 '22 14:10

Hafiz ur Rahman


Very doubtful. You will probably find exact definitions in some academic text books but I bet they'll be inconsistent between text books. I've seen definitions in manpages that are inconsistent with the actual implementation within the code. This is a case where everyone assumes the definitions are so obvious they never check to see if theirs is consistent with others.

My suggestion is to fully definite your use and go with that. Others can then have a reference (your formula/algorithm) and can translate between yours and theirs.

By the way, figuring out utilization, usage, etc. is very complicated and fraught with traps. OSs move tasks around, logical CPUs move between cores, turbo modes temporarily bump clock rates, work is offloaded to internal coprocessors, processors go to sleep or drop in frequency, hyperthreading where multiple logical CPUs contend for shared resources, etc. What's worse is that it is a moving target. Exact and well-defined metrics today will start to get out of date quickly as hardware and software architectures continue to evolve per Moore's law and any SW equivalent.

like image 20
Taylor Kidd Avatar answered Oct 22 '22 14:10

Taylor Kidd


Within a single context (paper, book, web article, etc.), there may be a difference, but there are not, as far as I know, consistent universally accepted standard definitions for these terms.

Within one authors writings, however, they might be used to describe different things. For example (not an exhaustive list):

  • How much of a single CPUs computing capacity is being used over a specific sample period
  • How much of a single CPUs computing capacity is being used by a specific schedulable entity (thread, process, light-weight process, kernel, interrupt routine, etc.) over a specific sample period
  • Either of the above, but taking all CPUs in the system into account
  • Any of the above, but with a difference in perspective between real CPUs and virtual CPUs (whether hyperthreading or CPUs actually being emulated by VMware, KVM/QEMU, Xen, Virtualbox or the like)
  • A comparative measure of how much CPU capacity is being used in one algorithm over another
  • Probably several other possibilities as well....
like image 28
twalberg Avatar answered Oct 22 '22 14:10

twalberg