在 2012年3月28日 下午5:02,Osier Yang <jyang(a)redhat.com> 写道:
On 03/28/2012 01:44 PM, Zhihua Che wrote:
>
> Hi, everyone
> I'm writing a virtual machine monitor based on libvirt. As I read
> the api reference, I found I'm confused by some terms.
>
> 1, What is cumulative I/O wait CPU time?
> API reference says that VIR_NODE_CPU_STATS_IOWAIT indicate
> cumulative I/O wait CPU time. I'm confused by this time. As far as I
> know, when cpu meets IO wait situation, it will schedule another task,
> so, how this IO wait time is accounted?
It's from /proc/stat, see man proc (/proc/stat).
>
> 2, How do I get VCPU runtime?
> In my mind, VIR_DOMAIN_CPU_STATS_CPUTIME indicates the physical
> cpu time consumed by the domain. Is there any API by which I can query
> virtual CPU running stats in one domain?
See virDomainGetVcpus, though it doesn't returns the usertime and
systime seperately, only cputime (usertime + systime) for each
vCPU thread.
Regards,
Osier
I guess I miss some important points.
I find that the cpu_time returned by virDomainGetCPUStats is always
increasing despite it's restarted.
Precisely, after calling virDomainGetCPUStats, it return a array of
virTypedParameter, each element for each cpu.
one example is
{
.fiedl = "cpu_time",
.type = 4,
.value.ul = 7744142223
}
I guess this value is cumulative running time of the domain since it's
created? Is that right?