Simple %CPU usage for a domain is calculated by sampling
virDomainGetInfo
periodically and looking at the
virDomainInfo
cpuTime field. This 64 bit field counts nanoseconds of CPU time used
by the domain since the domain booted.
Let
t
be the number of seconds between samples. (Make
sure that t
is measured as accurately as possible, using
something like gettimeofday(2)
to measure the real
sampling interval).
Let
cpu_time_diff
be the change in cpuTime
over this time, which is the number of nanoseconds of CPU time used by
the domain, ie:
cpu_time_diff = cpuTimenow — cpuTimet seconds ago
Let nr_cores
be the number of processors (cores) on the
system.
Use virNodeGetInfo
to get this.
Then, %CPU used by the domain is:
%CPU = 100 × cpu_time_diff / (t × nr_cores × 109)
Because sampling doesn't happen instantaneously, this can be
greater than 100%. This is particularly a problem where you have
many domains and you have to make a virDomainGetInfo
call for each one.
沒有留言:
張貼留言