我试图了解 CPU 窃取时间。这篇文章是最热门的结果:
https://scoutapm.com/blog/understanding-cpu-steal-time-when-should-you-be-worried
说实话,我不太理解售票亭的比喻。然而,主机上其他来宾虚拟机占用的 CPU 时间的概念似乎很容易理解。
我不明白的是两个可能的原因:
- 您需要一个更大的虚拟机和更多的 CPU 资源(您就是问题所在)。
- 物理服务器超售,虚拟机积极争夺资源(问题不是你)。
对于第 1 点,它进一步指出
Has %st (CPU Steal Time Percentage) increased on every virtual server?
This means your virtual machines are using more CPU. You need to increase
the CPU resources for your VMs.
如果虚拟机显示大量窃取时间,我的虚拟机怎么会出现问题?我的虚拟机的 CPU 周期被占用并分配到其他地方。为什么这是我的虚拟机的错?我的虚拟机是否窃取了自己的 CPU?有人可以解释一下吗?
此外,如果虚拟机显示 CPU 窃取时间。这是否意味着某些其他虚拟机会显示负 CPU 窃取时间,因为它正在窃取其他虚拟机的 CPU?
窃取时间是虚拟机进程(非自愿)等待物理 CPU 获取 CPU 时间的时间百分比。这意味着没有负窃取时间,范围从 开始0 %,最大为100 %
不显示窃取时间的虚拟机只会在请求时获取所需的所有 CPU 资源。该虚拟机不会获得更多“超过其(公平)份额”,不会超过所支付的费用,也不会“窃取您的 CPU”周期,它只是不会在分配 CPU 时间之前花时间等待需要。
但你既可以是“受害者”,也可以同时成为问题的一部分。
根据经验,如果提供商不使用 CPU 超额配置并向客户销售比虚拟机管理程序实际 CPU 核心数量更多的 vCPU,就不可能发生窃取时间的情况。
核心概念是,通过在提供商平台上混合不同客户的不同工作负载,提供商也隐含地(希望)确保一个客户的峰值需求将与另一客户当时的较低资源需求相一致。尽管高峰和低谷不会完全平均,但每个人都会在需要时获得公平的份额和大多数(如果不是全部)资源,并且每个人都或多或少感到高兴。
作为客户,您会受益,因为这通常意味着比购买有保证的资源要低得多的价格。
但这仅在您的工作负载不需要有保证的连续资源时才有效。您的工作负载可以在峰值负载与系统大部分闲置时间较长的情况下实现最佳平衡。(其他客户的工作负载也是如此。)
当您的虚拟机规模过小或过载,并且 vCPU 利用率在较长时间内保持接近或 100% 时,平衡可能会出现偏差,并且您的虚拟机无法通过足够的空闲时间来抵消其 CPU 需求(当其他客户有其空闲时间时)峰值负载)以确保均匀和公平的平衡。因此,您的系统会造成资源争用增加的问题,并且您的系统也会看到更多的窃取时间。
当您增加虚拟机的大小时,系统处于部分空闲状态的次数将会增多,而需要所有分配的资源的次数将会减少,并且系统必须花费在非自愿等待上的可能性也会降低。