我在主机操作系统 Windows 10 Pro 中使用 Hyper-V,虚拟操作系统是 Windows Server 2012。我每次只使用一个虚拟机来检查相对于主机操作系统的 VPS CPU 利用率。笔记:虚拟机具有与硬件相同的核心(任何资源均不受限制)
我不知道为什么主机操作系统的 CPU 利用率几乎是虚拟机的两倍。
如上图所示,虚拟机 CPU 使用率仅为 37%,而主机操作系统 CPU 使用率为 68%。
各种测试的结果(每次 1 个虚拟机):
**VM Cpu Usage (%) : Host CPU Usage (%)**
13% : 35%
37% : 69%
50% : 96%
我已经测试过以上内容虚拟机而且结果几乎相同。
我每次只使用一个正在运行的虚拟机,并且没有任何硬件资源限制。我在各种硬件和不同的虚拟机上进行了测试。结果几乎相同。
根据实际结果。这是否意味着使用 Hyper-V 或 VMWare 时我只能使用主机操作系统 (硬件) 50% 的 CPU?
答案1
哦天哪。了解 CPU 利用率是少量比查看任务管理器更棘手。所以我们开始吧。
在虚拟环境中,每个 (v)cpu 周期可以(并且将)连接到另一个物理核心,因此跟踪“核心”不是一种有效的方法。跟踪它的累计总和甚至更糟糕。停止这样做。也不要将所有物理核心 1:1 用作 vcore,因为这会带来很多避免主机过度配置支出。需要时才这么做,否则就不要这么做。
总体利用率
CPU 利用率基本上是需求除以容量。希望通过一个简单的例子可以更好地理解这一点:
假设有一瓶容量为 1000 毫升的水,但瓶子只装满了一半(500 毫升)。要完全装满瓶子,还需要 500 毫升。因此,利用率将是:= 500 / 1000 * 100 = 0.5 * 100 = 50%
“如果瓶子半满,则瓶子的利用率为 50%”
了解 Hyper-V CPU 使用率
在 Hyper-V 中运行虚拟服务器时,在确定实际使用了多少 CPU 以及在哪里使用时,通常会有些困惑。通常,第一种方法是登录 Hyper-V 主机并打开任务管理器。尽管有迹象表明虚拟机的 CPU 利用率为 100%,但大多数人惊讶地发现他们的 CPU 使用率很低。
要真正理解 Hyper-V 虚拟和物理 CPU 使用情况,首先需要我们深入研究一些理论:可用的虚拟处理器数量(容量)由可用的物理核心数量决定。例如,如果您有一台 4 插槽服务器,其中每个处理器有 8 个核心,则将呈现 32 个逻辑处理器。因此,您将能够为虚拟服务器分配最多 32 个虚拟 CPU。每个虚拟 CPU 映射到一个物理核心(例如,通过 VT)。在虚拟机上施加 32% 的负载,可能会显示为 64% 的负载(1% * 32 + 预留 + 每个核心的开销)。
虚拟机预留(百分比)
这是主机为该虚拟机保留的储备。这是已分配系统 CPU 数量的百分比,因此这里的 10% 是所有 16 个核心的 10%。简而言之,它是很多“未使用但标记为已使用”的计划 CPU 时间。
系统总资源百分比是一个计算出来的伪静态值,它以分配的 CPU 数量作为资源。系统总 CPU / 分配的 CPU * 预留。例如 16 / 32 * 10 = 5%
虚拟机限制(百分比)表示虚拟机可以消耗的每个核心的百分比,以过去 30 秒计算。此限制或上限适用于所有已分配的 CPU。
系统总资源百分比是根据分配的 CPU 数量和设置的最大限制计算得出的值。系统总 CPU / 分配的 CPU * 限制。在本例中为 16 / 32 * 90 % = 45%
这将显示在主机的任务管理器中。即使没有那正确的。
处理器调度程序使用相对权重来确定哪个虚拟机优先获得 CPU 调用。具有较高权重的虚拟机将比具有较低权重的类似规格的虚拟机获得更多的 CPU 时间。这是一个具有欺骗性的数字,因为它不是百分比,并且值必须介于 0 到 10 000 之间。VMWare 将其称为“份额”,可以在每个虚拟机的高级选项中设置。
监控“实际” CPU 使用率的最简单方法是查看 Hyper-V 管理控制台,不是任务管理器。CPU 使用率列代表主机的总 CPU 资源。此处的 10% 使用率相当于 32 个 CPU 的 10%,或者如果我们将其计算回分配给虚拟机的资源量,则 16 个 VCPU 的 20% 就是如此。
Hyper-V 管理控制台非常适合获取高层次概览。但要深入了解哪些核心正在被使用以及由哪些进程使用,我们必须使用 Perfmon。