在 2012年4月17日 上午4:11,Eric Blake <eblake@xxxxxxxxxx> 写道: > On 04/16/2012 05:37 AM, Zhihua Che wrote: >> >> I thought this value store the run time of the cpu since last boot. > > The intent is to store run time of the hypervisor process managing the > guest (which therefore is larger than the amount of time that the guest > thinks it has been running, since the hypervisor has some overhead). > But the API is flexible enough that we can add more statistics, if it > proves easy to collect such additional statistics. > >> But I find I was wrong because this value would increase until it >> wraps down and doesn't reset even the domain is restarted. > > How are you restarting the guest? If it is by rebooting the guest > _within the same qemu process_, then no, the numbers won't reset. Based > on how the cpuacct cgroup works, the numbers should only wrap when you > actually create a new qemu process (actually stop the guest and boot it > fresh in a new qemu process, rather than rebooting the guest within the > same qemu process). > > Perhaps we should be improving our XML to track delta usage since a > given point in time, and when we detect a domain reboot, update that > delta point so that the usage will again appear to be 0; allowing a > delta calculation would also let us "track" CPU usage even across domain > migration or managedsave/restore. > >> >> So, what does this value mean? >> >> How can I get the CPU usage of the domain? >> >> I found nothing on the API reference doc page:-(. No word is >> related with the meaning of the returned array of virTypedParameter by >> virDomainGetCPUStats(). > > I found this: > > http://libvirt.org/html/libvirt-libvirt.html#VIR_DOMAIN_CPU_STATS_CPUTIME > > "cpu usage in nanoseconds, as a ullong" > > and looking at libvirt.h, VIR_DOMAIN_CPU_STATS_CPUTIME maps to the > "cpu_time" name of your API call. > > If that still isn't enough information, could you help out by submitting > patches to improve our documentation? > > -- I hope this help user to know what the virTypedParameters mean. As for me, I didn't connect the function with macros like VIR_DOMAIN_CPU_STATS_CPUTIME. I don't know which files in directory docs I should modify. I guess our docs are generated by extracting comments in source code. So I modify in comments above virDomainGetCPUStats(). Feel free to tell me if I'm wrong.
diff --git a/src/libvirt.c b/src/libvirt.c index 53b485a..c32d828 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -18642,7 +18642,8 @@ error: * any unpopulated parameters will be zeroed on success (this includes * skipped elements if @nparams is too large, and tail elements if * @ncpus is too large). The caller is responsible for freeing any - * returned string parameters. + * returned string parameters. See VIR_DOMAIN_CPU_STATS_CPUTIME etc for more + * information on exact meaning of parameters returned here. */ int virDomainGetCPUStats(virDomainPtr domain, virTypedParameterPtr params,
_______________________________________________ libvirt-users mailing list libvirt-users@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvirt-users