mpstat:如何理解 %steal和%guest的区别
查看位置
-
%steal
- 查看位置:在虚拟机内部执行
mpstat
时,%steal
表示当前虚拟机因宿主机资源竞争而被迫等待的时间百分比。 - 意义:如果虚拟机内部的
%steal
较高,说明宿主机可能过载,或者当前虚拟机被其他虚拟机抢占了 CPU 资源。
- 查看位置:在虚拟机内部执行
-
%guest
- 查看位置:在宿主机上执行
mpstat
时,%guest
表示宿主机 CPU 用于运行所有虚拟机(客户机)的时间百分比。 - 意义:如果宿主机的
%guest
较高,说明宿主机正在为虚拟机分配大量 CPU 资源,虚拟机的负载较重。
- 查看位置:在宿主机上执行
示例场景
假设有一台宿主机(Host)运行两个虚拟机(VM1 和 VM2),宿主机和虚拟机的 CPU 资源分配如下:
1. 宿主机视角(执行 mpstat
)
%guest
:宿主机上运行的所有虚拟机(VM1 和 VM2)占用的 CPU 时间百分比。- 如果
%guest
较高(例如 50%),说明宿主机正在为虚拟机分配大量 CPU 资源,虚拟机的负载较重。
- 如果
%steal
:在宿主机上通常为 0,因为%steal
是虚拟机内部的指标。
2. 虚拟机视角(在 VM1 中执行 mpstat
)
%guest
:在虚拟机内部通常为 0,因为%guest
是宿主机上运行的虚拟机占用的 CPU 时间。%steal
:表示当前虚拟机(VM1)因宿主机资源竞争而被迫等待的时间百分比。- 如果
%steal
较高(例如 20%),说明 VM1 的 CPU 资源被宿主机上的其他虚拟机(如 VM2)或宿主机任务抢占。
- 如果
详细场景分析
假设宿主机有 4 个 CPU 核心,VM1 和 VM2 各分配了 2 个 CPU 核心。
场景 1:VM1 和 VM2 负载均衡
- 宿主机
mpstat
:%guest
为 50%,表示宿主机正在为 VM1 和 VM2 分配 CPU 资源。%steal
为 0,因为宿主机没有资源竞争。
- VM1
mpstat
:%guest
为 0,因为这是虚拟机内部的指标。%steal
为 0,因为 VM1 没有因资源竞争而等待。
场景 2:VM2 负载过高,抢占 VM1 的资源
- 宿主机
mpstat
:%guest
为 70%,表示宿主机正在为 VM1 和 VM2 分配大量 CPU 资源。%steal
为 0,因为这是宿主机视角。
- VM1
mpstat
:%guest
为 0,因为这是虚拟机内部的指标。%steal
为 30%,表示 VM1 因宿主机资源竞争(VM2 抢占)而被迫等待。
场景 3:宿主机过载
- 宿主机
mpstat
:%guest
为 90%,表示宿主机正在为虚拟机分配大量 CPU 资源。%steal
为 0,因为这是宿主机视角。
- VM1
mpstat
:%guest
为 0,因为这是虚拟机内部的指标。%steal
为 40%,表示 VM1 因宿主机资源竞争而严重受限。
总结
%steal
:在虚拟机内部查看,反映虚拟机因宿主机资源竞争而等待的时间。%guest
:在宿主机上查看,反映宿主机为虚拟机分配 CPU 资源的时间。- 建议:
- 如果虚拟机内部的
%steal
较高,需检查宿主机资源分配或减少虚拟机数量。 - 如果宿主机的
%guest
较高,需优化虚拟机负载或扩展宿主机资源。
- 如果虚拟机内部的