vSphere - 为 1 台虚拟机分配 100% CPU/效率 88%

vSphere - 为 1 台虚拟机分配 100% CPU/效率 88%

编辑 2:我的应用程序受益于超线程

答:是的,我知道这项技术是什么,以及它能做什么。

B. 是的,我知道物理核心和逻辑核心之间的区别

C. 是的,关闭 HT 会导致渲染运行速度变慢,这是预料之中的!

D. 不,当我将所有逻辑(是的,逻辑)核心分配给一个虚拟机时,我并没有过度授权,如果您阅读了 VMWare 的白皮书,您就会知道调度程序会生成物理硬件的拓扑图并在分配资源时使用该图,将所有逻辑核心分配给一个虚拟机会在 Windows 中生成 16 个逻辑处理器,就像我在物理硬件上安装虚拟机一样。哇哦,看吧,经过 5 次测试后,这种安排产生了最快(也是最高效)的渲染时间。

F. 有问题的应用程序是使用 backburner 和 Mental Ray 渲染器的 3ds max 2014。


TL|DR:我(有时)想在 vSphere 上以尽可能高的 CPU 效率运行一台 VM,如何做?

我希望以一种非标准的方式使用 VMWare 的 ESXI / vSphere 虚拟机管理程序。

通常人们使用虚拟机管理程序在一个系统上同时运行多个虚拟机。我想使用虚拟机管理程序让我在应用程序之间快速切换,但实际上每次只能运行一个虚拟机/应用程序。

这实际上是一个宠物项目,我有一个 5 节点渲染农场(每个节点 2x Intel Xeon E5540),大部分时间都处于关闭状态(当我不渲染时,我不需要运行这些机器)。这似乎是在浪费宝贵的计算时间,所以我希望在不渲染时将它们用于其他事情(一种通用的 40 核/80 线程计算集群)。

我希望 vSphere 可以让我在渲染时启动渲染节点虚拟机,在不渲染时启动其他虚拟机。问题是,当渲染虚拟机运行时,我真的非常需要高 CPU 效率。

我正在使用渲染作业作为基准,在虚拟机上获得的速度约为非虚拟机设置速度的 88%。我希望接近 95%,有什么想法可以实现吗?

编辑:详细信息:

渲染虚拟机正在使用的资源,我不完全明白为什么这个栏没有满:

在此处输入图片描述

该虚拟机的资源设置:

在此处输入图片描述

即使虚拟机没有显示使用 100% 的资源,主机也会:

在此处输入图片描述

我不太明白这里的 % 份额,这是在所有这些虚拟机都开启的情况下吗?另外,我也没有配置其他虚拟机来保留 10%:

在此处输入图片描述

最后,主机确实显示已被充分利用,尽管这里没有显示,但 MHz 利用率较低(即不是 100%):

在此处输入图片描述

虚拟机配置:

在此处输入图片描述

我知道这是一个有趣的案例,但尽管如此,我觉得这个问题是有效和好的,可能会帮助其他处于类似情况的人(尽管我承认这个案例非常特殊)。

答案1

我认为您已经达到了使用旧 Xeon 可能达到的最大限度,但与 ewwhite 不同,我不认为超线程会给您带来任何问题。事实上,至少从 ESXi 5.0 开始,VMware 建议在大多数工作负载中使用超线程,而且您自己的测试似乎证实了您从 HT 中受益。不过,正如 ewwhite 正确指出的那样,使用 HT 会使 vSphere 中的某些指标出现异常。

我认为你这里有一个明显的问题,也可能有一个不明显的问题:

首先,显而易见的问题是虚拟化本身会产生无法完全消除的开销。就 CPU 而言,必须虚拟化某些指令,以便虚拟机管理程序正确地将一个虚拟机与另一个虚拟机隔离开来。因此,虚拟机管理程序不会像在裸机中那样直接执行指令,而是会拦截调用并代替执行多条指令。从以往的经验中我们可以看出87-90% 是 CPU 的预期值。要超越这一目标,就需要在硬件方面取得重大进步。如果您现在看到的是 91% 的原生 CPU 性能,那么它可能已经达到了最佳水平。

第二是 NUMA 这个不太明显的问题。这是多处理器系统的问题,其中部分内存在由最近的 CPU 访问时速度更快,而由其他 CPU 访问时速度较慢。根据渲染作业处理内存的方式,您可以可能通过跑步看到一些好处两个虚拟机中的并行渲染器,每个虚拟机都固定到特定的 CPU 上,并始终访问速度稍快的内存。(如果您在一台主机上运行两个虚拟机,每个虚拟机使用一半的可用 vCPU,ESXi 应该可以自动解决这个问题为您提供帮助。)但是,如果您没有在裸机上看到此问题,则尝试此方法可能不会获得太多好处。

答案2

您的虚拟机和主机配置错误。

需要考虑的事项:

  • 如果您有一个计算量很大的过程,您可能需要禁用超线程。
  • 超线程(逻辑)核心是不是与物理核心相同!
  • Intel E5540 CPU 可以追溯到 2009 年。它们是四核 CPU。您将拥有 8 个物理核心和 8 个逻辑核心(总共 16 个)。
  • 如果你已经配置了单身的具有 16 个 vCPU 的 VM,缩减规模!!
  • ESXi 也需要一些资源。
  • 如果您不愿意禁用超线程,请尝试正确调整虚拟机的大小(8 vCPU)。

其他要做的事情(一般来说)...

相关内容