iostat - “窃取”字段是什么意思?

use*_*867 5 linux virtual-machine iostat

在输出中iostat有一个steal字段,根据手册页该字段用于:

显示当管理程序为另一个虚拟处理器提供服务时,一个或多个虚拟 CPU 花费在非自愿等待上的时间百分比。

但是,这是什么意思?这是否意味着内核本身太忙而无法管理cpu,导致cpu空闲?

Rui*_*iro 12

管理程序是指管理虚拟环境的层,如 VMware、XEN 或 VirtualBox。

因此,steal 字段应该是一个有趣的字段,可以监控、检测问题或虚拟化环境的超额订阅。该字段本身意味着 VM CPU 必须等待其他 VM(虚拟机)完成它们的回合(切片)或管理程序本身的任务的时间。

ST域存在于iostatvmstatsartop命令。

但是,该线程确认 VmWare 虚拟机不支持窃取字段(我在 VMware 5.5 中对其进行了测试并证实了这一点)。VirtualBox 也不提供 CPU 窃取时间数据。Xen 和 KVM 虚拟环境都支持它。

vmstat在 CPU 区域也有相同的字段,但仅在 Debian 8 之后。必须启用sar工作sysstat数据收集。

根据man vmstat

st:从虚拟机中窃取的时间。在 Linux 2.6.11 之前,未知。

相关线程监控窃取时间 (st) 的工具

进一步阅读:从虚拟机中窃取了 CPU 时间?

这是虚拟机管理程序安排其他运行而不是 VM 中运行的时间。这可能是另一个 VM 或 Hypervisor 主机本身的时间。如果没有时间被偷走,这段时间将用于运行您的 CPU 工作负载或空闲线程。

  • @pkaramol 如第 4 段所述,仅在 Xen 和 kvm 虚拟机内。 (2认同)