提高虚拟机性能 避免使用CPU亲和力

日期: 2015-06-01 作者:Alastair Cooke翻译:郑文帅 来源:TechTarget中国 英文

在虚拟机上设置CPU亲和力可能会导致性能降低,并且更难于管理。 在vSphere资源控制方面有几个被误解的地方,CPU亲和力就是其中之一。控制交付给一台虚拟机的CPU资源是性能管理的一个重要部分。在虚拟机上很少见到CPU亲和力的配置,一旦配置就很难移除。

一旦虚拟机设置了CPU亲和力就无法获得更多的CPU资源。 CPU亲和力无保障 在ESXi服务器中内核较少,由VMkernel负责处理和调度更多的虚拟CPU(vCPU)给虚拟机。这样的分配行为使得CPU可以过量使用。过量使用是虚拟化技术节省成本的核心部分。

VMkernel会每个几毫秒去查看一下每个内核上的vCPU状态,选择是否改变运行着的vCPU……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

在虚拟机上设置CPU亲和力可能会导致性能降低,并且更难于管理。

vSphere资源控制方面有几个被误解的地方,CPU亲和力就是其中之一。控制交付给一台虚拟机的CPU资源是性能管理的一个重要部分。在虚拟机上很少见到CPU亲和力的配置,一旦配置就很难移除。一旦虚拟机设置了CPU亲和力就无法获得更多的CPU资源。

CPU亲和力无保障


在ESXi服务器中内核较少,由VMkernel负责处理和调度更多的虚拟CPU(vCPU)给虚拟机。这样的分配行为使得CPU可以过量使用。过量使用是虚拟化技术节省成本的核心部分。VMkernel会每个几毫秒去查看一下每个内核上的vCPU状态,选择是否改变运行着的vCPU。虚拟机中的工作负载有它们自己的工作负载高峰和低谷。而VMkernel必须将vCPU从这个核上移动到另一个核上,可能将任意vCPU运行在任意的核上。VMkernel将尝试使用每个核心交付虚拟机所需的所有CPU。

对CPU亲和力的主要误解是它将一个内核提供给一个特定的虚拟机。这也是管理员通常错误地将CPU亲和力应用到一个非常依赖CPU性能的关键虚拟机上的原因。这样反而会造成虚拟机性能下降。因为CPU亲和力并不能保证内核,从而导致虚拟机不能使用其他的内核。目前vSphere无法保证将特定的内核提供给单个虚拟机。唯一能保证的就是预留。预留是保证预留的资源可用而不是保证资源专用。对于有关键CPU资源需求的虚拟机,你应该设置足够的CPU预留来保证虚拟机的SLA。在虚拟机上设置CPU亲和力永远不会提高该虚拟机的CPU性能,事实上,结果完全相反。

CPU亲和力的目的是删除一些VMkernel上的调度灵活性。CPU亲和力会限制可能用于虚拟机vCPU的内核。不管什么时间我们限制了VMkernel的灵活性,都会导致效率降低与性能风险。一个12核的ESXi服务器意味着有12个地方让VMlernel运行vCPU。如果一个虚拟机为内核2和3设置CPU亲和力,那么其他10个内核都不能用于该虚拟机。即使这10个核是空闲的,VMkernel也不能将它们用于这个虚拟机。更糟糕的是如果两个繁忙的虚拟机CPU亲和力设置了相同的内核。那么这两个虚拟机将被迫争夺这一个核,即使其他核心都处于空闲状态。下图为在虚拟机属性里设置CPU亲和力内核2和3。

CPU亲和力的其他问题


CPU亲和力的另一个问题是禁用vMotion。CPU亲和力是在ESXi服务器中指定特定的内核用于虚拟机。因为这些物理内核不能在主机之间移动,也不能移动必须运行在这些内核上的虚拟机。这在分布式资源调度(DRS)群集中具有很大的影响。这是在ESXi服务器之间的vCenter vMotions虚拟机交付峰值性能的体现。

不用使用vMotion的虚拟机导致集群不平衡,从而导致性能问题。在ESXi维护期间将会迁移大量的虚拟机,不能移动的虚拟机将会导致操作问题。甚至更糟的是,如果你将DRS群集设置成全自动的模式,那么CPU亲和力界面就会没有了。如果有任何CPU亲和力设置已经应用,你都不能移除这个设置。下图是已经设置了CPU亲和力,在全自动的DRS群集里就不能移除该设置。

虽然设置了CPU亲和力不能vMotion,但能支持HA故障转移。一个设置了CPU亲和力的虚拟机会在HA集群里的其他主机上启动,并在新的主机上保留CPU亲和力设置。

CPU亲和力的用途


CPU亲和力的好处是什么?我用它来模拟两个虚拟机争夺CPU。如果你设置两个虚拟机来使用相同的内核,它们可以使内核运行饱和而ESXi不饱和。这不是一个现实的用途,但它是一个很好的实验室技术。

在现实中,我只听说过关于CPU亲和力的一个用途,那就是为了在虚拟机中支持老的需要授权的应用程序,而这个应用程序的授权需要绑定CPU的内核序列号。在虚拟化中支持该应用程序的唯一方式就是使用CPU亲和力绑定一个核心。

相关推荐