[libvirt-users] What does cpu_time returned by virDomainGetCPUStats mean?

Eric Blake eblake at redhat.com
Tue Apr 17 04:11:54 UTC 2012


On 04/16/2012 09:15 PM, Zhihua Che wrote:
> After reading your post, I did the below experiment again.
> I started the domain by issuing 'start ubuntu-1' and shutted down my
> domain by issuing 'destroy ubuntu-1'.

That's a forceful shutdown - it removes the virtual power cord, and
always works, but may leave your disks in a state that requires fsck to
recover.

> (BTW, I cannot shutdown my domain by 'shutdown ubunut-1'. I guess my
> domain image got something wrong. I wish this didn't affect the
> experiment)

shutdown requires the guest to understand an ACPI power request (not all
guests do), or to have a guest agent installed (even fewer guests have
qemu_ga installed, as it is still quite new).  But when it does work, it
is nicer, because it lets the guest shut down gracefully.

> 
> Here are my two sample values.
> 
> start ubunt-1
> cpu0+cpu1 11239925290
>           cpu0 6034491893

6 seconds active use attributed to cpu0,

>           cpu1 5205433307

5 seconds on cpu1

> 
> destroy and start ubunu-1
> cpu0+cpu1 10621566430
>           cpu0 5403373809
>           cpu1 5218192621

5 seconds on each cpu.  Yes, the values reset for you, and your testing
happened to time the guest with about the same amount of usage time
between your two starts and queries.  You'll notice much more impressive
numbers if you let the guest run for 10 minutes, then query, then
restart, then query right away.

> These values really confuse me.

They are merely kernel counters of how many nanoseconds of processor
time has been attributed to the cgroup owning the qemu process since the
cgroup was created.  A qemu process is created each time you boot the
guest from scratch, and 'virsh destroy' followed by 'virsh start' is
indeed sufficient to start the guest from scratch.

> 
> I check the kvm process id through ps. I'm sure the  two running
> domain are assigned two different process id. I guess that means they
> run as different qemu process as you mentioned.

Technically, a cgroup can own multiple pids, so distinct pids is not
always a guarantee of distinct cpuacct numbers.  However, libvirt does
indeed create a new cgroup for each qemu pid, so in this instance, yes,
a different qemu pid should mean that the numbers started from scratch.

-- 
Eric Blake   eblake at redhat.com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 620 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20120416/122fcaef/attachment.sig>


More information about the libvirt-users mailing list