虚拟机是否比底层物理机慢?

虚拟机是否比底层物理机慢?

这个问题很笼统,但我最感兴趣的是,运行 Ubuntu Enterprise Cloud 的虚拟机是否会比没有任何虚拟化的相同物理机慢。慢多少(1%、5%、10%)?

有人测量过 Web 服务器或数据库服务器(虚拟服务器与物理服务器)的性能差异吗?

如果这取决于配置,我们想象一下两个四核处理器、12 GB 内存和一堆 SSD 磁盘,运行 64 位 Ubuntu Enterprise Server。除此之外,仅 1 个虚拟机就可以使用所有可用资源。

答案1

裸机\Type 1 虚拟机管理程序上的通用服务器工作负载的典型体验是大约 1-5% 的 CPU 开销和 5-10% 的内存开销,还有一些额外的开销,具体取决于整体 IO 负载。根据我的经验,在 VMware ESX\ESXi、Microsoft Hyper-V 和 Xen 下运行的现代客户操作系统与此基本一致,其中底层硬件经过了适当的设计。对于在支持最新 CPU 硬件虚拟化扩展的硬件上运行的 64 位服务器操作系统,我预计所有 Type 1 虚拟机管理程序的开销数字都会达到 1%。目前,KVM 的成熟度还不及 Xen(或 VMware),但我认为没有理由认为它会比您描述的示例明显更差。

但对于特定用例,虚拟环境的整体“聚合”性能可以超过裸机“独立服务器”。以下是一个讨论示例关于 VMware 集群实现如何比裸机 Oracle RAC 更快\更好\更便宜。如果您拥有足够多的类似 VM,VMware 的内存管理技术(尤其是透明页面共享)几乎可以完全消除内存开销。在所有这些情况下,重要的是,虚拟化可以提供的性能\效率优势只有在您将多个 VM 整合到主机上时才会实现,您的示例(主机上的 1 个 VM)在某种程度上总是比裸机慢。

虽然这些都很有用,但服务器虚拟化方面的真正问题往往集中在管理、高可用性技术和可扩展性方面。2-5% 的 CPU 性能裕度并不像能够有效地扩展到每台主机上 20、40 或您需要的任意数量的 VM 那样重要。您可以通过选择稍快的 CPU 作为基准或在集群中添加更多节点来处理性能损失,但如果主机无法扩展其可以运行的 VM 数量,或者环境难以管理或不可靠,那么从服务器虚拟化的角度来看,它就毫无价值。

答案2

“性能”有很多方面。新手会测量操作系统的启动时间,例如 Windows 2012 非常棒,因为它在真实 HD 上启动只需 12 秒,在 SSD 上可能只需 1 秒。
但这种测量方法不太有用:性能等于操作系统启动时间,但操作系统每月启动一次,因此优化它没有多大意义。

因为这是我的日常工作,我可能会指出以下构成“表现”的四个部分

  1. CPU 负载
    这应该是可比的,这意味着在裸机上花费 1000 毫秒的任务将在 1000 毫秒的处理时间内执行,在相同硬件上的空闲 VM 环境中可能在 1050 毫秒的时钟时间内执行(稍后会详细介绍)。在 MSDN 上搜索 processtime 和 queryperformancecounter,您可以执行一项操作来显示 VM 占用了多少 CPU 时间。

  2. SQL 性能
    SQL 性能高度依赖于存储 SQL 数据的数据存储的 IO。我已经看到,在各个层面上,第一代 ISCSI(您可以在 Buffalo 家庭 NAS 上找到)与带有 DCE 的 ISCSI 以及真正的老式 FC 环境之间存在 300% 的差异。FC 现在仍然胜出,因为 FC 延迟是最低的,这导致 FC 协议的“复制”以实现 TCP/IP 数据中心增强。在这里,IOps 和延迟至关重要,但从服务器进程到媒体的 IO 带宽也至关重要 - 取决于应用程序是倾向于 No-SQL 还是数据仓库,或者像 ERP 系统一样处于两者之间......Sage KHK 适用于小型企业,SAP 适用于大型企业。两者都有 CEO 对企业财务统计数据的看法,当 CEO 按下按钮时,当数据库的 IO 子系统存在弱点时,他实际上会批准休假几天。

  3. 文件系统访问
    某些应用程序(如视频流)依赖于保证的最小带宽,而其他应用程序则依赖于最大 IO 吞吐量,例如在十六进制编辑器中打开大文件,将视频项目加载到您最喜欢的电影制作程序中。这不是虚拟机上的典型情况……IOps 对开发人员来说也很重要。开发人员经常使用虚拟机,因为开发环境非常敏感,因此在虚拟机中这样做的诱惑很大。编译大型项目通常意味着读取大量小文件,执行编译器操作并构建 EXE 和附带组件。

  4. 客户端的网络延迟
    在这里,像 word 2010、Openoffice Writer、LaTEX、GSView 等 WYSIWIG 程序的可用性高度依赖于速度 - 鼠标操作从客户端到服务器的速度。尤其是在 CAD 应用程序中,这一点很重要……但这也不是 LAN 问题,而是通过 WAN 进行远程访问时,这一点很重要。

但是——从我多年咨询经验来看——有些用户拥有管理员密码(他们通常是一家大公司的员工,预算和钱包都很宽裕)抱怨这抱怨那,但必须明确哪些性能组件对他们来说很重要,从他们使用的应用程序的角度来看,哪些性能组件很重要。
很可能不是记事本,而是一个用于设计这个和那个的非常复杂的应用程序,它也非常昂贵,应该转移到 VMware、HyperV 或 Xenapp 上,而且它的性能不如预期。

但他们没有想到,它可能在刀片式服务器(并非为纯 CPU 性能而设计的)上运行在 1.5 GHz Xeon 上,它们是按照平均值构建的,比如说“针对每 CPU 周期的 $ 进行优化”或“每瓦特的 CPU 周期数”进行优化。

当我们谈论权衡和节约时,这主要会导致过度承诺。过度承诺会导致资源不足,CPU 可以很好地处理,但内存不足会导致分页,核心路由器中 IO 不足会导致所有事物的响应时间增加,任何类型的存储上的事务过载都可能阻止每个有用的应用程序响应太快。这里需要监控,但许多软件供应商无法提供此类信息……另一方面,拥有 3 个物理服务器资源的主机很可能可以处理与物理服务器布局相同的 8 个虚拟机……

空闲系统上的 CPU 权衡通常会导致系统性能比物理系统慢 50%,另一方面,没有人能够安装客户 IT 人员想要移入 VM 盒的“真实世界”操作系统和“真实世界”应用程序。而且需要几天时间(也许是几周,但肯定是 42 次会议)才能明确 VM 技术可以通过牺牲纯 CPU 速度来提供灵活性。这只是内置在如今托管更大 VM 环境的刀片系统的 CPU 中。此外,内存无法比较,也需要一些权衡。DDR3 1600 CL10 的内存带宽将高于 DDR2 800 ECC LLR - 每个人都知道英特尔 CPU 从中获利的方式与 AMD CPU 不同。但它们很少用于生产环境,更多地用于白盒或托管在第三世界国家的数据中心,这些数据中心提供的数据中心服务价格仅为您所在国家数据中心向您收取的价格的 10%。借助 Citrx,如果最终用户和数据中心之间的延迟小于 150 毫秒,数据中心就可以遍布任何地方。

从家庭用户的角度来看....

最后但并非最不重要的是,有些人想抛弃 Win7 或 XP 并将其换成 Linux,然后游戏问题就出现了,因为实际上只有少数游戏可用于 Linux 和 Windows。游戏高度依赖 3D 加速。VMWare 6.5 Workstation 和连接的免费播放器可以处理 DirectX 9,这意味着虚拟机中的 Doom3 可以在主机显卡上全屏运行。游戏大多是 32 位应用程序,因此它们不会占用超过 3 GB 的空间,而且大多不会占用超过 3 个 CPU(如 Crysis)。较新的 VM 播放器和 WS 可以处理更高版本的 DirectX,可能还可以处理 OpenGL...我在 VMware 6.5 上玩了 UT 和 UT2004,主机有 ATI Radeon 2600 移动版和 T5440 CPU。它在 1280x800 下很稳定,甚至可以在网络游戏中玩...

答案3

我想指出的是,在某些情况下,虚拟化可以超越物理性能。由于网络层不限于千兆速度(即使硬件模拟是特定的局域网卡),同一服务器上的虚拟机可以以超过具有普通网络设备的多个物理服务器的速度相互通信。

答案4

我一直在对运行相同测试的相同软件(基于 .NET 的 Web 应用程序,具有大量 Web 流量和大量 SQL Server 访问)进行一些测试比较。以下是我所看到的:

  • 物理机器更擅长实例化类(这相当于在系统级别分配内存)——这对我来说很有意义,因为物理机器通过内存管理硬件来实现这一点,而虚拟机通过软件来实现这一点(部分硬件辅助)(在虚拟机上,应用程序在其构造函数中花费了大量时间(分配内存(没有执行其他任何操作),在物理机器上,构造函数甚至没有包括在前 1000 名中)
  • 当你处于一种方法的中间时,两者大致相当 - 这可能是大多数基准的构建方式,表明两者“相同”
  • 当您访问网络控制器时,物理控制器会略胜于虚拟机 — 再次强调,物理控制器在 .NET 进程和硬件之间没有太多东西。虚拟机添加了每个事务需要经过的其他“东西”。
  • 实际上,磁盘访问也存在同样的问题(SQL Server 在另一台机器上)——差异很小,但当你把它们加起来时,就会很明显。这可能是由于网络访问速度较慢或磁盘访问速度较慢造成的。

我很容易理解为什么有人可以建立基准测试来证明它们有 1% 的差异或相同,或者虚拟机速度更快。不要包含任何利用本地硬件支持优势的内容,虚拟机需要在软件中模拟它。

相关内容