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