KVM的虚拟机在宿主机上的表现为宿主机系统的⼀个qemu-kvm进程,虚拟机以线程的⽅式调度到宿主机的物理cpu,那么如何计算虚拟机使⽤的宿主机CPU的使⽤情况?如何判断虚拟机调度到宿主机CPU的等待情况?
1、查看虚拟机等待宿主机cpu的情况
rtre
在宿主机内部执⾏:#mpstat 1 5 -P ALL
2、计算虚拟机使⽤宿主机cpu的使⽤率
通常我们计算⼀个普通的linux进程cpu使⽤率,即为进程⽤户态和内核态cpu使⽤的总和。但是对于qemu-kvm进程,我们可以这样计算:usb flash
#virsh cpu-stats domname (--total)
电缆保护管HDPE[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。并且实际也证明不相等。
那怎么回事?ccty
其实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.
参考: