客户经常询问关于 CPU 占用时间(CPU steal time)的问题。特别是那些重度使用 CPU 且将其视为关键性能指标的客户。在物理环境和虚拟环境之间,CPU 和内核的设置与行为存在相当多的差异。甚至在不同的云服务商之间,设置上的差异也使得表面上的同类对比变得困难。因此,我们认为有必要为客户简要介绍我们的设置和 CPU 分配逻辑,并解释 CPU 占用时间最常见的来源。
首先,对于不熟悉这个概念的人来说,CPU 占用时间是指当虚拟机监视器(hypervisor)忙于将物理 CPU 用于其他用途(例如其他虚拟机/云服务器)时,您的云服务器内的虚拟 CPU 必须等待真实物理 CPU 的时间。这是一篇关于 CPU 占用时间的优秀文章,非常值得一读。
关于我们 CPU 设置的一些信息
首先需要了解的是,我们在托管您计算服务的每个物理计算节点上的虚拟机之间分配内核的方式。在 CloudSigma,CPU 及其内核是共享的。换句话说,我们不会将客户的云服务器绑定到特定的内核上。CPU 时间由物理计算节点的调度程序动态分配,所有资源都是共享的。我们相信,通过允许计算节点在运行中做出合理的分配调整以平衡负载,这在整体上提供更可靠的性能方面具有许多优势。
与此相结合,我们使用控制组(简称 cgroups),以确保根据您通过服务器大小设置的资源,为每个云服务器提供足够的 CPU 时间。最后,调度程序决定如何处理任何剩余的资源和 cgroups。同样值得注意的是,我们保留了一组特定的内核,使其不属于客户计算工作负载的分配范围。We use these cores to run the operating system of the physical host. In particular, we reserve additional cores for processing of networking and storage operations. All of this aims to increase stability of the overall machine. Furthermore, it helps deliver reliable performance levels over time independent of other customers’ load for you as a customer.
虚拟化环境中 CPU 占用时间的来源
与物理环境不同,在虚拟化环境中,有多种来源和情况会导致您遇到 CPU 占用时间。这是因为在多租户虚拟化环境中情况更为复杂。并非所有这些情况都真正意味着您没有获得应有的 CPU 时间,事实上,在许多情况下,您通常可以吸收超出分配大小的空闲 CPU 周期,但这并不是您会看到 CPU 占用时间的情况。以下将更详细地介绍三种最常见的情况。
您的云服务器过载
这种情况时有发生!每个人都希望尽可能充分利用自己所付费的容量,但是,如果分配给虚拟云服务器的 CPU 不足以处理工作负载,随着任务在虚拟 CPU 内积压和排队,您可能会看到 CPU 占用时间。如果这是 CPU 占用时间的根本原因,那么解决方法是调整云服务器的大小。如果这是临时过载,您可以安全地保持现状。当您的负载下降时,您会看到 CPU 占用时间消失。
托管您云服务器的物理服务器过载
如果出现主机过载,在这种情况下,这是我们方面的故障。这很罕见,但确实可能发生。在这种情况下,我们使用热迁移(live migration)在不中断的情况下将虚拟机迁移到其他物理计算节点,从而将负载水平恢复到正常水平。通常,我们将主机的负载保持在远低于满载的水平。因此,如果您在较长时间内继续观察到这种情况,请与我们联系。我们免费的 24/7 支持服务可以检查您所在的物理主机。如果没有过载,那么这不太可能是您 CPU 占用时间的根本原因。
您正在使用较小的虚拟核心大小
在 CloudSigma,我们允许您定义虚拟核心大小,以便在任何云服务器配置下,都能利用例如更多较小虚拟核心的更多 CPU 线程。操作系统中的云服务器将始终将核心大小识别为完整的物理大小。
如果物理核心是 2.6GHz,但您的 VM 是 4GHz 且有两个核心,那么每个虚拟核心将是 2GHz。因此,您将始终看到窃取时间。事实上,这是因为由于虚拟核心大小较小,您获得的是总核心的按比例分配额度,而不是完整大小。因此,如果您确实在使用较小的虚拟核心大小,您应该始终调整 CPU 窃取时间的任何计算,以考虑到较小的虚拟核心大小。为了避免这种情况,您可以为每个核心使用完整的核心大小。您可以通过将虚拟核心大小扩展到完整的 CPU 核心大小(例如 Intel v4 2.6GHz)来实现这一点。
结论
云中的 CPU 窃取时间比传统的单租户物理环境要复杂一些。然而,它确实仍然存在。然而,操作系统对 CPU 窃取时间的报告并未针对不同的情况进行调整。这意味着您可能会得到误报。当您发现 CPU 窃取时间时,通常意味着正在发生资源限制。我们希望这篇文章能帮助您快速找出根本原因,并确保持续顺畅的运行。
祝您计算愉快!
Robert
评论
暂无评论。发表第一条评论吧。