20170316111406

了解和解释虚拟机上的 CPU Steal Time

虚拟机报告不同类型的使用指标,例如服务器负载、内存使用和Steal Time。客户经常询问Steal Time——它是什么,为什么会在他们的虚拟机上报告?继续阅读,我们将解释Steal Time的工作原理,以更好地了解它对您的虚拟机意味着什么。

  什么是Steal Time?

Steal Time是虚拟机进程在物理CPU上等待其CPU时间的时间百分比。您可以通过在 Linux 服务器上运行“top”命令来监控进程和资源使用情况。在使用指标中,Steal Tim被标记为“st”。

了解和解释虚拟机上的 CPU Steal Time
了解和解释虚拟机上的 CPU Steal Time

  虚拟环境中的 CPU

在云环境中,管理程序充当物理服务器与其虚拟化环境之间的接口。管理程序内核通过将运行进程调度到服务器的物理内核来管理所有这些任务。为虚拟机、网络操作和存储 I/O 请求等进程提供一些CPU时间来处理作业。CPU时间在这些进程之间分配,这会改变优先级并在这些进程之间通过物理内核产生争用。推荐阅读:《什么是虚拟机(VM)(一)》

  %Idle Time

Steal Time也可以在虚拟机上与Idle Time一起显示。Idle Time是指有管理程序分配的 CPU 时间,但虚拟机没有使用该时间。在这种情况下,我们可以假设对性能根本没有影响。

当Idle Time百分比为0 并且存在Steal Time时,我们可以假设虚拟机上的进程有延迟处理。

  多租户云

云平台由单租户和多租户环境组成。CloudStack产品允许您开发和运行多租户环境,使不同类型的用户能够以更低的成本运行他们的云基础设施。除了不会在我们的优质CloudStack 平台上过度销售虚拟内核之外,我们也不会将虚拟机固定到CPU 内核。这允许管理程序将 CPU 时间从所有服务器的物理内核分配给其任何活动进程。推荐阅读:《什么是虚拟机(VM)(二)》

从理论上讲,如果虚拟机100%的时间都可以立即访问其分配的核心,则不会有可见的Steal Time。然而,虚拟机管理程序正在运行许多不同的任务,并不断执行操作,例如重新调度任务以提高效率和处理从其他系统接收到的数据。所有这些进程都需要来自管理程序CPU 的 CPU 时间,从而导致延迟访问物理内核并增加虚拟机的Steal Time。

  分析服务性能

在现代托管环境中,少量Steal Time通常是不可避免的,尤其是在共享云托管上运行时。Steal Time虚拟机体验并不总是从虚拟化操作系统外部可见。

如果您看到虚拟机记录的Steal Time恒定,请尝试查找与您正在执行的任务的相关性。更重要的是,这种Steal Time如何导致性能损失?您是否注意到应用程序的任何性能损失?如果是这样,请尝试测量输出以根据Steal Time发现整个应用程序流中的延迟。如果您确实看到对您的应用程序的体验影响,请通知您的托管服务提供商。在许多情况下,他们可以通过将您的虚拟机移动到不同的虚拟机管理程序来找到更合适的环境。推荐相关阅读:《VMware和VirtualBox哪个好用》