这个问题是相当普遍的,但最具体的说,我有兴趣知道运行Ubuntu Enterprise Cloud的虚拟机是否比没有虚拟化的同一台物理机慢。 多less(1%,5%,10%)?
有没有人测量Web服务器或数据库服务器(虚拟VS物理)的性能差异?
如果取决于configuration,让我们来想象两个四核处理器,12 GB内存和一堆SSD磁盘,运行64位ubuntu企业服务器。 最重要的是,只有1个虚拟机允许使用所有可用的资源。
在裸机\ 1型虚拟机pipe理程序上,通用服务器工作负载的典型体验是CPU开销的1-5%和内存开销的5-10%,而一些额外开销取决于总体IO负载。 这与我在VMware ESX / ESXi,Microsoft Hyper-V和Xen下运行的现代客户操作系统的经验非常一致,其中底层硬件已经过适当devise。 对于在支持最新的CPU硬件虚拟化扩展的硬件上运行的64位服务器操作系统,我希望所有types1的虚拟机pipe理程序都能够使用这个1%的开销数量。 KVM的成熟度目前还不是Xen(或者VMware)的成熟度,但是我认为没有理由认为它会比你描述的例子更糟糕。
尽pipe虚拟环境的总体“性能”可以超过裸机/分立服务器,但对于特定的使用情况。 以下是讨论 VMware群集实施如何比裸机Oracle RAC更快,更好,更便宜的一个例子 。 如果您拥有足够相似的虚拟机,VMware的内存pipe理技术(特别是透明页面共享)几乎可以完全消除内存开销。 在所有这些情况下,重要的是,只有在将多个虚拟机合并到主机上时,才能实现虚拟化所能提供的性能\效率优势。您的示例(主机上的一个虚拟机)在某种程度上总是比裸机要慢。
虽然这是有用的,但是服务器虚拟化方面的实际问题往往集中在pipe理,高可用性技术和可扩展性方面。 2-5%的CPU性能优势不如能够有效扩展到每个主机所需的20,40或VM数量那么重要。 您可以通过select稍微快一点的CPU作为基准来处理性能问题,或者通过在群集中添加更多节点来处理性能问题,但是如果主机无法扩展可以运行的虚拟机数量,或者环境难以pipe理或那么从服务器虚拟化的angular度来看,它就毫无价值。
“表演”有很多方面。 n00bs可以衡量一个操作系统的启动时间,比如说Windows 2012非常棒,因为它在真实的高清上启动了12秒,在SSD上可能只有1秒。
但是这种措施不是很有用:性能等于操作系统启动时间,但操作系统每个月启动一次,所以优化没有多大意义。
因为这是我日常的事情,所以我可以指出以下四个部分组成了“表演”
CPU负载
这应该是可比较的,这意味着在裸机上花费1000毫秒的任务将在1000毫秒的处理时间内执行,并且在相同硬件(稍后的一些细节)的空闲VM环境中可能会执行1050毫秒的时钟时间。 谷歌MSDN的processtime和queryperformancecounter和宇可以做一个事情,可以显示虚拟机吃了多lessCPU时间。
SQL性能
SQL性能高度依赖IO来存储SQL数据的数据存储区。 我已经看到在Buffalo家庭NAS上可以find的第一代ISCSI,然后是在DCE上的iSCSI和在所有级别上的真正的旧式FC环境,都有300%的差异。 如今FC仍然获胜,因为FC延迟是导致FC协议“复制”TCP / IP数据中心增强function的最低成就。 这里IOps和延迟是至关重要的,但也从服务器进程到媒体IO带宽 – 取决于如果应用程序倾向于无SQL或数据仓库或在ERP系统的中间… Sage KHK为小企业,SAP为巨大的。 两位CEO都有企业财务统计的观点,当首席执行官点击button时,他有效地授予了数据库IO子系统存在弱点的假期。
文件系统访问
一些应用程序(如videostream)依赖于保证的最小带宽,另一些应用程序依赖最大IO吞吐量,如在hex编辑器中打开大文件,将video项目加载到最喜欢的电影制作中。 不是一个典型的情况…. IOPS也可能是开发人员的重要。 开发人员经常使用虚拟机,因为开发环境非常敏感,所以在虚拟机上做这件事的诱惑力很高。 编译一个大项目通常意味着读取大量的小文件,编译器的东西,并build立一个EXE和相关的组件。
networking延迟到客户端
在这里,所见即所得的可用性像word 2010,OpenOffice Writer,LaTEX,GSView和其他产品一样高度依赖于速度 – 鼠标动作从客户端到服务器的速度有多快。 特别是在CAD应用程序中,这很重要….但也不是局域网问题,它是通过WAN进行远程访问的地方。
但是 – 我从多年咨询的angular度讲话 – 有些用户拥有pipe理员密码(他们通常是一家BIG公司的雇员,拥有大笔预算和一个大笔钱袋子)抱怨这一点,但是必须澄清哪个性能分量对他们来说是重要的,哪些对于他们使用的应用来说是重要的。
这很可能不是记事本,而是一个非常复杂的应用程序,用于devise这个,这也是非常昂贵的,应该在VMware,HyperV或XenApp上移动,并且不会按预期执行。
但是他们并不知道它可能运行在不是纯CPU性能的刀片上的1.5 GHz至强处理器上,而是build立在一个平均值的基础上,比如“针对每CPU周期进行优化”或“每瓦CPU周期” 。
而当我们谈论权衡和经济 – 主要导致过度承诺。 过度使用会导致缺乏资源,CPU可以很好地处理,但内存不足导致分页,核心路由器中缺lessIO会导致所有内容的响应时间增加,并且任何types的存储上的事务性过载可能会阻止每个有用的应用程序从响应太快。 这里需要进行监视,但是许多软件供应商不能提供这样的信息……另一方面,具有3个物理服务器的资源的主机可能最有可能处理8个与物理服务器相同的布局的虚拟机…
CPU在空闲系统上的权衡通常导致系统比物理系统执行速度慢50%,另一方面,没有人能够安装“真实世界”OS和客户的IT人员想要移入VM的“真实世界”应用程序框。 而且需要花费数天时间(可能是几周,但肯定是42次会议)来明确虚拟机技术可以通过纯粹的CPU速度提供灵活性。 这只是内置于现今托pipe较大VM环境的这些刀片系统中的CPU。 内存也不可比,也有一些权衡。 DDR3 1600 CL10将比DDR2 800 ECC LLR具有更高的内存带宽,而且大家都知道,英特尔CPU以与AMD CPU不同的方式从中受益。 但是他们很less用在生产环境中,更多用在白盒或者在第三世界国家托pipe的数据中心,他们提供数据中心服务的价格是你自己国家数据中心价格的10%。 多亏了Citrx,如果数据中心的最终用户和数据中心之间的延迟小于150毫秒,那么数据中心可能无处不在。
和家庭用户的angular度来看….
最后但并非最不重要的一些人想扔掉Win7或XP,并交易一个Linux,然后出现游戏的问题,因为实际上只有几个游戏可用于Linux和Windows。 游戏高度依赖于3D加速。 VMWare 6.5工作站和连接的免费播放器可以处理DirectX 9,这意味着VM中的Doom3可以全屏运行在主机graphics卡上。 游戏大多是32位应用程序,所以它们不会吃掉超过3 GB,大多数不超过3个CPU(在Crysis上可见)。 较新的VM播放器和WS可以处理更高的DirectX版本,也可能是OpenGL …我在VMware 6.5上玩过UT和UT2004,主机上有一个ATI Radeon 2600移动和一个T5440 CPU。 它稳定在1280×800,即使在networking游戏上也可以播放….
是。 但这不是问题。 这个差别通常是可忽略的(1%到5%)。
我想指出,在某些情况下,虚拟化可能会超过物理性能。 由于networking层不限于千兆速度(即使硬件仿真是特定的LAN卡),在同一台服务器上的虚拟机之间可以以超过具有普通networking设备的多个物理服务器的速度相互进行通信。
您正试图将安装在特定物理硬件上的操作系统,软件和数据与在相同原始硬件上的虚拟机pipe理程序中安装的相同操作系统,软件和数据进行比较。 这个比较是无效的,因为几乎没有人这样做。 当然这可能会变慢。 谢天谢地,它完全忽略了为什么你虚拟化服务器的最常见的一点。
这里的一个更好的例子是查看数据中心中的两台(或更多台)较旧的服务器。 寻找性能相当好的服务器,但现在已经老了,并且正在进行更新周期。 这些服务器在较旧的硬件上已经performance良好,所以感谢摩尔定律,任何你所得到的新东西都将被过度的指定。
所以你会怎么做? 这很简单。 而不是购买两台新服务器,而是只购买一台,然后将两台旧服务器迁移到同一台物理新设备上。 当准备购买新的服务器时,你的计划是让你有足够的容量来处理来自两个旧服务器的负载,而且还要处理来自pipe理程序的任何负载(也许还有一点额外的负担,这样你仍然可以获得性能提升,可以允许增长)。
总之:虚拟机在大多数情况下提供“足够好”的性能,并帮助您更好地使用服务器,以避免“浪费”的计算能力。
现在让我们进一步拉伸一下。 由于这些服务器都是旧的,所以也许你正在看几台1500美元的比萨盒服务器来代替它们。 有可能,即使其中一个比萨饼盒仍然可以轻松地处理来自两个假设的旧机器的负载……但是假设您决定花费7500美元或更多的钱在一些真正的硬件上。 现在,您可以轻松处理多达十几台现有服务器(取决于您如何处理存储和networking),初始成本只有5个。您还可以享受只pipe理一台物理服务器,解耦您的硬件(例如:硬件刷新现在不太可能需要新的Windows许可证或导致停机时间),您可以节省大量的电力,pipe理程序可以为您提供比过去更好的性能信息。 获取其中的两个,取决于你有多大,也许你的整个数据中心只有两台机器,或者你想用第二台服务器作为热备用,以告诉更好的高可用性故事。
我的观点是, 这不仅仅是表演。 我永远不会采取一个完美的生产服务器,并将其单独虚拟到同等的硬件,因为。 更重要的是您可以从整合中获得成本节省和其他好处,例如高可用性。 意识到这些好处意味着您将服务器移动到不同的硬件,这意味着您需要花时间适当地调整硬件的大小,包括解决pipe理程序的损失。 是的,你可能需要稍微多一点的计算能力,如果每一台机器都在自己的物理设备上(提示:实际上你可能需要的总计算能力要less得多 ),但是这样会更便宜,更节能,更容易维护运行一台物理服务器而不是运行多台服务器。
我一直在做同样的软件运行相同的testing(基于.NET的Web应用程序与大量的networkingstream量和大量的SQL Server访问)的testing比较。 这是我所看到的:
我可以很容易地看到有人可以build立基准,certificate他们是1%不同或相同或虚拟机更快。 不要在虚拟机需要在软件中模拟虚拟机的地方使用本地硬件支持的好处。
我刚刚升级到SSD(OCZ Vertex 2),我运行XP VM开发环境,我是一个软件开发人员。 我注意到的一件事是,当我启动一个程序(一个足够大的时间来加载)的时候,虚拟CPU的一个核心就会被locking。 这也发生在加载IE时。 由于CPU挂钩,我认为瓶颈是CPU而不是SSD。 但似乎很奇怪,我有一种感觉,如果同样的事情在物理机器上完成,加载速度会更快,而且我的感觉是VMWare正在做一些额外的处理开销,因此在使用磁盘访问时会消耗CPU。
举一个例子,我使用Delphi,并且在具有普通HDD的物理机器上,从冷启动开始可能需要20秒。 在运行SSD的虚拟机中,在冷启动后的19秒内加载。 没有太大的区别,我敢打赌,如果SSD在物理机器上,它会加载得更快。 尽pipe我没有检查物理机上的CPU使用情况,但是它可能是CPU的瓶颈。
但是虚拟机的感觉是磁盘访问虚拟机。
虚拟机显然比物理机器慢。 但是,当你在这种情况下,你必须评估什么是最佳的,以满足您的需求。 如果只需要一个系统,并且需要快速,那么直接安装到硬件上。 另一方面,如果您需要灵活性,可扩展性(以及所有其他虚拟化优势:P)将部署虚拟机。 它会慢一点,但恕我直言,在某些情况下,这是合理的,性能不是很慢。
看来微软已经使用BizTalk服务器做了一些基准testing,而SQL Server在这方面的configuration也不同。 请参阅以下链接:
http://msdn.microsoft.com/en-us/library/cc768537(v=BTS.10).aspx
理想情况下,虚拟PC性能如下:
CPU:主机的96-97%
networking:主机的70-90%
磁盘:主机的40-70%
抱歉,不同意TomTom。
我一直在使用VMware Workstation,主要是在Windows XP,Windows Vista和现在的Windows Seven本机系统上运行不同的Windows风格以及Ubuntu。
是的,虚拟化环境比本地系统慢,可能在5到100%的范围内。
主要问题不是CPU负载太多,而是物理内存不足。
假设您已经在4 Gb系统上运行了Windows 7 64 Ultimate,在空闲时需要将近1.5 Gb,并使用CPU的10%左右。 启动额外的VMware将花费你300Kb,CPU负载将上升到20%左右。 然后,在VMware内部启动一个虚拟系统,将至less要求为该虚拟机定义的内存量至less为1 Gb,适用于任何像样的系统。 然后,如果虚拟机为Ubuntu,则会看到CPU负载约60%,对于最近的Windows操作系统,则会看到约80%的CPU负载。
现在,您将在该虚拟机内启动不同的应用程序。
如果您为该虚拟机设置的内存量不足,则虚拟化系统将开始交换,然后显着降低整体性能和响应速度。
如果您为该虚拟机设置的内存总量加上您的本机系统所需的内存量超过了本机系统的内存量,那么您的本机系统将会交换,减慢本地和虚拟化系统。
所以,它首先取决于本机和虚拟机所需的内存平衡。
现在它与CPU负载几乎相同。 如果虚拟化应用程序需要巨大的CPU负载,而且本地应用程序也需要巨大的CPU负载,则您的本机系统将不得不pipe理优先级并平衡不同应用程序之间的CPU电量,虚拟化系统只不过是一个应用程序,现象是一个典型的CPU负载问题,你可以利用应用程序的优先级欺骗。
所以,如果你需要使用虚拟化技术,我的第一个build议就是把大量的内存放在你的机器上,无论你使用的是本机还是虚拟机。
只是我2美分。
最好的祝福。
根据我的经验,虚拟机总是比物理机器慢得多。
当运行碰到磁盘的应用程序时,您只会注意到这一点,并且会对CPU征税很多。 我在虚拟机上运行了许多数据库和web服务器,并且作为最终用户以及其他最终用户(即:从远程web浏览器访问应用程序)的反馈,使用虚拟机时有相当大的滞后。
当然,正确configuration的虚拟机可能会达到80%(我不知道真正的数字),或任何物理机器的速度,但最终不得不深入了解应用程序正在做什么以及虚拟机作品。 所以我想这是一个成本等式,你的时间configuration虚拟机是多么宝贵,只是购买和托pipe一个新的服务器。
对于我来说,虚拟机并不是关于性能,而是关于更容易pipe理和当然托pipe几个低性能的虚拟机。