如何解释虚拟服务器上的系统负载?

如何解释虚拟服务器上的系统负载?

我理解 linux 'top' 报告的系统负载是等待 CPU 时间的进程的平均数量,因此在解释负载时应该考虑 CPU 核心的数量。因此,4 核系统上的负载 4 大致等于单核系统上的负载 1。

我的问题是:对于 CPU 核心不直接映射到处理器的虚拟服务器来说,这也适用吗?

答案1

在虚拟化环境中,从主机的角度来看,客户虚拟机的虚拟 CPU 只是执行的进程(或线程)。它们不需要在单独的 CPU 上运行,也不需要与主机 CPU 数量相同。

尽管如果模拟客户机虚拟 CPU 的任务与主机 CPU 一对一运行,因此只有一个执行线程绑定到单个主机 CPU,那么它具有一个很大的优势:它使客户机虚拟机能够像在非虚拟化环境中一样优化其任务。


负载问题实际上是与此无关的。负载是指在任务调度中可以获得时间片的可运行进程的平均数量。简而言之,它意味着:“如果一个简单的单线程任务试图分配尽可能多的 CPU,则可以获得 1/负载的 CPU。”因此,如果负载为 5,则“平均”进程可以获得 20% 的 CPU 时间。对于单线程进程,它位于单个 CPU 上。

这些 CPU 是否是虚拟的并不重要。在大多数虚拟化场景中,主机对进程客人,他只能看到中央处理器客户机的线程。但这不会改变系统负载的定义,无论它是虚拟化系统还是主机。


从实际角度看,这个问题的重要性有限,因为专业系统管理员面临的实际问题大多与 CPU 故障无关。大多数情况下,问题来自可配置性、自动化和系统资源的冗余可用性。

从这些问题的角度来看,虚拟化的目标是解决(或让我们的生活更幸福),尽管也存在非常有趣的例外(主要是在学术或研究/开发领域)。

相关内容