关于虚拟机管理程序的实际性能的几句话

虚拟化系统的用户,尤其是服务提供商,经常问自己:“如何充分利用可用的硬件?” 在这种情况下,我们经常必须讨论KVM管理程序以及不同版本的Virtuozzo之间的差异。 在这篇文章中,我们将讨论最新虚拟化系统的一系列测试,以及在典型负载下的实际性能估计,并考虑到Meltdown和Spectre补丁。

对于需要为现有设备上最大数量的任务组织支持的托管公司或IT部门,最重要的是什么? 如果公司按照面向服务的模型工作或出售服务,那么实践表明,最主要的是每台服务器的利润指标。 同时使用什么技术以及达到何种分布密度,业务代表不必太担心。

但是,经常问到一个问题,为什么我们在Virtuozzo 7中使用KVM作为虚拟机管理程序,以及在这种情况下与简单的OpenSource虚拟化系统有何不同? 今天,我想回答这个问题。

过去,Virtuozzo使用其自己的专有虚拟机管理程序进行工作,但几年前,我们意识到,开发它比优化合理成功和高效的KVM更加昂贵和困难。 但是,KVM并不是性能的基准,并且像任何OpenSource平台一样,它需要使用文件进行更新。 这是我们开发部门的一部分。 我们优化代码,将其与数据存储平台和其他组件集成在一起,从而提高生产率和密度。

与其他管理程序的比较


DVD Store是我们用来衡量性能的测试之一。 它使用一套经典的服务器软件:Linux,Apache,MySQL,PHP(LAMP)。 在每个虚拟机内部,该测试模拟了在线DVD存储的操作。 测试的结果是所有虚拟机(纵坐标轴)中提交的总横穿数量。 测试中涉及的虚拟机数量从1个增加到100个(横坐标轴)。

LAMP:CentOS 7.4(虚拟机),开源QEMU KVM与Virtuozzo

如上图所示,与在标准KVM上开始类似负载时相比,在Virtuozzo 7虚拟机管理程序上运行CentOS Linux 7.4的虚拟机的性能提高了30%。 在CPU过量使用时观察到最大的差异,分配给所有虚拟机的处理器核心总数达到CPU服务器的物理核心数目。 对于此服务器,此点对应于20个虚拟机。 此外,Virtuozzo 7核心和自适应内存管理策略可确保在RAM过量使用点(分配给所有虚拟机的RAM总量超过服务器物理内存的大小)之后虚拟机的稳定运行。 在这种负载下,标准KVM无法创建正常运行的条件。

在Virtuozzo 7虚拟机管理程序和Microsoft Hyper-V 3.0之间进行了另一个比较。 在这里,使用vConsolidate测试评估了性能,并且Windows Server 2012 R2用作虚拟机的来宾操作系统。

vConsolidate:Hyper-V与Virtuozzo @ Windows 2012 R2(虚拟机)

图片 与DVD Store不同,在vConsolidate中,所有虚拟机的负载都不相同。 在此测试中,它们分为所谓的CSU(合并堆栈单元)。 每个CSU是一组四个虚拟机,它们分别加载SPECjbb,WebBench和SysBench(OLTP)。 每个CSU中的第四个VM处于空闲状态,即没有负载。 定量结果是从所有虚拟机(纵轴)总共获得的上述三个测试结果的几何平均值。 测试中涉及的CSU数量从1到24(横坐标)依次增加。

对于这两个虚拟机管理程序,测试进行了两次:安装了针对Meltdown和Spectre漏洞的补丁程序,以及没有安装补丁程序的情况。 结果近似显示,Virtuozzo 7平均表现出比“本地” Microsoft虚拟机管理程序高15%的性能。

崩溃和幽灵


如您所知,2018年1月4日,除了Itanium和较早的Atom(直到2013年)之外,所有英特尔处理器中都发现了大规模概念漏洞,整个IT社区对此感到兴奋。 使用这些漏洞,系统中任何没有特权的进程都可以访问内核数据(Meltdown)或来自其他进程的数据(Spectre)。 软件开发人员专注于发布软件更新来解决这些漏洞。 但是,用户自然会对这些更新如何影响系统性能提出疑问。

我们以vConsolidate测试为例,检查了CentOS Linux 7.4的Meltdown和Spectre补丁如何影响容器的性能。 然后,我们进行了另一项测量-使用内核带有“ Retpoline”选项的编译后的修改编译器(例如,GCC和Clang / LLVM提供了此选项)。

Retpoline的性能:vConsolidate @ CentOS 7.4(容器)

如您在上图中所看到的,针对Meltdown和Spectre应用补丁会大大降低容器性能。 此外,最“困难”的补丁是Spectre-V2。 但是,将编译器与新的Retpoline选项结合使用,可以使您在处理器早于Skylake的系统上安全地放弃此补丁程序,并获得高达25%的性能。 但是,由于Meltdown和Spectre-V1的补丁,我们仍然损失了大约5%。

Retpoline的性能:vConsolidate @ CentOS 7.4(虚拟机)


在CentOS Linux 7.4的情况下,虚拟机内部的情况更加乐观:Meltdown和Spectre的补丁只会使性能下降15%,而未修补的内核和使用Retpoline编译的内核之间的性能差异仅为1-2%。 因此,使用新的编译器几乎可以完全弥补性能下降。 但是,值得考虑的是,所有三个测量都是在同一虚拟机上执行的-使用未修补的来宾OS内核。 更新来宾操作系统将导致用户应用程序的其他性能下降。

Retpoline的性能:vConsolidate @ Windows 2012 R2(虚拟机)



今天的最新图表是类似的比较,但与Windows Server 2012 R2虚拟机相同。 在这里,补丁的降速幅度不是很大,大约为10%,与Retpoline一起使用内核可以使差异相对于未补丁的内核减少2-3%。

结论


当然,未修改的KVM具有其优点,而主要优点是免费。 但是进行的测试证明,私人改进和现代化可以提高所用基础架构的回报。 也就是说,如果您需要放置最多的容器和虚拟机,请确保它们的永久存储-全部都在同一平台上,并减少萨满舞-改进的KVM更加有效,特别是如果平台上运行的服务利润丰厚并且带来了真正的钱。 在这种情况下,许可证和支持的成本将在最短的时间内获得回报。

VZ7的优势仍然是同一平台上对不同类型的VM和容器的支持,并且对每种虚拟对象具有更高的性能。 但是,这里不能说万能药。 例如,如果密度的增加并不能为组织带来额外的资金,并且您自己的员工可以轻松地管理和完成OpenSource解决方案,则逻辑上倾向于使用开放工具,包括CentOS和原始KVM。

顺便说一下,在下一篇文章中,我们将讨论分布式存储的发展及其用于虚拟机和容器的实际功能。

Source: https://habr.com/ru/post/zh-CN413127/


All Articles