扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
虚拟化的主要优势之一是能够动态地添加CPU和RAM来运行虚拟机。这是处理某些计算问题的很好的办法,并且还不需要停机时间和重新启动。
然而,在某些情况下,通过鼠标点击(动态地或者其他方式)分配CPU和RAM会对你的服务器产生有害影响,所以你需要非常了解你的工作负载以及操作系统。
这涉及你正在运行的工作负载类型、操作系统调度以及虚拟机的虚拟CPU布局。虚拟CPU分配本来是很简单的,你只需要指定你想要分配的虚拟CPU数量即可。然而,随着物理CPU内核数量的增加,NUMA成为常态,这使选择变得很棘手,因为现在,几乎每个主要管理程序都代表着一种虚拟CPU类型选择。
例如,如果你想分配四个虚拟CPU到你的虚拟机,你可以在4个单核CPU、2个双核CPU和1个四核CPU间选择。虽然所有这些选择都能够增加四个虚拟CPU,但它们是以不同的方式实现的,而这种差异性可能会影响运行虚拟服务器的操作系统调度做出的决定。
虚拟机炼金术
对于这些选择,并没有必须遵守的规则。正确的选择完全取决于工作负载配置文件、使用的调度程序、操作系统版本或内核版本。较老版本的内核不太善于处理多核CPU,最好选择单核CPU。而较新的内核和操作系统版本更青睐于多核CPU。
除此之外,工作负载本身的性质也有很大的影响。单线程和多线程工作负载将以不同的方式处理这些实例。在一些工作负载中可能只有细微的差别,但可能与其他工作负载存在巨大差异。
NUMA的优势在于更快的内存存取,并能显著地加快处理器和RAM密集型流程。如果CPU核心只与CPU控制的内存交互,它将会更快地执行,因为它不需要跨越到另一个CPU来分配和使用内存。
这很好理解,有点类似于:你去对面街道的商店买东西要比去另一个镇上的商店买东西要快。然而,当你在操作系统下插入一个管理程序时,CPU内核和RAM分配之间的关系会有点“暧昧”。
根据管理程序向虚拟服务器呈现CPU的方式,操作系统可能会认为每个CPU都具有自己的内存控制器或者四个内核间存在一个共享内存控制器。此外,管理程序不断轮询虚拟机服务器内存分配状态以及评估是否让活跃内存更接近目前为虚拟机处理负载的CPU。这些因素都可能影响性能。
点石成金
幸运的是,有一个办法可以帮助你选出最适合你的工作负载的方法—测试。建立几个虚拟服务器,每个具有不同的虚拟CPU布局,并运行样本工作负载。调查你可以在管理程序水平对NUMA分配做出的调整,并通过调整这些参数来测试不同的情况。
例如,VMware的vSphere具有深度调整参数,例如numa.vcpu.maxPerMachineNode和numa.vcpu.maxPerClient,这些允许你调整可以驻留在单个NUMA节点的最大虚拟CPU数量,以及被管理程序重新平衡作为单个单元的最大虚拟CPU数量。还有几个其他参数可能会影响你的选择,但事实是,你可能需要通过一些微小的调整和测试来提高你的工作负载性能。
这并不是一个新概念,但在很大程度上被大家忽视了。所以当你在建立和调整你的虚拟机时,请记住,当你在谈论虚拟CPU时,四个并不总是等于四个。花一点时间来测试可以帮助你节省很多处理时间。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。