我正在尝试检查虚拟机中的 CPU 窃取时间。目标是能够检测我的应用是否在虚拟机中运行在过度使用的硬件上。
我目前正在进行测试,为后续的生产做准备。
我尝试在 Ubuntu 11.04 上测试这一点,在 Max OS 10.6.8 上的 Virtual Box 4.1.4 上运行。
当我运行 vmstat 命令时,手册页让我相信我应该在 CPU 部分下看到一个“st”列。但我没有看到。我只看到“us sy id wa”。
我可以执行“vmstat -s”,然后得到“0 stealing cpu ticks”。即使我将主机加载到虚拟机仅获得 20% 的 CPU(并且 VB 正在运行多个 CPU 消耗循环),我得到的也是 0。
我感觉 vmstat 没有检测到 Ubuntu 中被盗的 CPU 周期。
我还应该做些什么吗?或者我的基本理解有误?
有没有更好的方法来检测虚拟机中 CPU 时间是否不足?
答案1
如果你运行 top,你应该会看到一行 Cpu(s):。CPU 行的末尾是 '%st'。它代表“Steal Time”。Steal time 是指 CPU 正在运行某项任务,但虚拟机管理程序正在运行其他任务的时间。
如果您在 top 中没有看到 %st 或者在 'vmstat -s' 中没有看到 'Stolen CPU ticks',那么我会尝试升级您的 procps 安装。