KVM 报告奇怪的 CPU 使用峰值(bash 无限递归)

KVM 报告奇怪的 CPU 使用峰值(bash 无限递归)

在运行 Fedora 20 的 KVM 机器上,我运行了ulimit -s unlimited(这消除了堆栈大小的限制)和一个实验性的折磨测试脚本。这个脚本所做的只是无限递归:

#!/bin/bash

fn() {
    true
    fn
}

fn

我预计 CPU 使用率会达到 100%,并且在一些资源耗尽(这可能需要很长时间)之后,bash 最终会被内核击落。

但真正发生的事情有点奇怪,我没有正确的知识来解释:

  • 在虚拟机内部,top 报告这个有趣的脚本的 CPU 使用率为 100%。这就说得通了。

  • 但从外部看,virt-manager 显示 0% 无 CPU 使用率,预计会反复出现 100% 的峰值。好像这还不够奇怪,每个连续峰值之间观察到的延迟正在增长(最终延迟停止增长并变得一致):

CPU使用高峰

为什么是这样?里面到底发生了什么?或者 virt-manager 报告的用法是否具有误导性?那么是什么造成了峰之间的图案呢?

答案1

如果您在虚拟机内使用 top,您会注意到 cpu 使用率约为 100%,但在物理主机中,虚拟机无法使用所有 cpu 时间,这是因为从内核角度来看,kvm vm 是正常的正常进程,因此内核进程调度程序与其他进程共享CPU

相关内容