KVM虚拟化中计算VM使用宿主机CPU的使用率

KVM的虚拟机在宿主机上的表现为宿主机系统的一个qemu-kvm进程,虚拟机以线程的方式调度到宿主机的物理cpu,那么如何计算虚拟机使用的宿主机CPU的使用情况?如何判断虚拟机调度到宿主机CPU的等待情况?

1、查看虚拟机等待宿主机cpu的情况

在宿主机内部执行:#mpstat 1 5 -P ALL

2、计算虚拟机使用宿主机cpu的使用率

通常我们计算一个普通的linux进程cpu使用率,即为进程用户态和内核态cpu使用的总和。但是对于qemu-kvm进程,我们可以这样计算:

#virsh cpu-stats domname (--total)

[root@centos7_kvm qemu]#

[root@centos7_kvm qemu]# virsh cpu-stats jason02 --total

Total:

        cpu_time            44.989056884 seconds

        user_time            0.770000000 seconds

        system_time        10.950000000 seconds

这里不能像理解普通进程一样,理解为cpu_time=user_time+system_time。并且实际也证明不相等。

那怎么回事?

其实Linux是跟踪vCPU线程在用户空间或内核空间时间分别执行访客代码所花费的时间.

即:cpu_time=user_time+system_time+guest_time

因此,可以将system_time+user_time视为在主机端提供QEMU / KVM的实际开销.

并且cpu_time – (user_time+system_time)给出了客户操作系统运行其CPU的实际时间.

要计算CPU使用率,您可能只想每N秒记录一次cpu_time并计算两个样本之间的差值.例如,用法%= 100 *(cpu_time 2 – cpu_time 1)/ N.

参考:

http://www.voidcn.com/article/p-ncxjodqm-bue.html

你可能感兴趣的:(KVM虚拟化中计算VM使用宿主机CPU的使用率)