那么,真的,虚拟化的开销是多少?我应该何时关注?


16

我正在寻找良好的经验法则,以了解何时不对计算机进行虚拟化。

例如,我知道利用率接近100%的完全受CPU约束的进程可能不是虚拟化的好主意,但是在某种程度上运行大多数情况下会“大量”利用CPU的东西有任何意义(例如40或50%)?

另一个例子:如果我虚拟化了1000台计算机,即使只是轻度或中度使用它们,那么在只有4个内核的主机上运行全部计算机可能会很不好。

与主机资源相比,有人可以根据计算机工作负载或来宾计算机的数量来总结有关虚拟化的提示吗?

我通常使用VirtualBox或VMWare在Windows主机上进行虚拟化,但是我假设这是一个非常普通的问题。


1
即使有一些CPU限制的任务,虚拟化也很重要-允许用户将作业提交到群集,因为VM映像使他们对作业运行的环境的控制比仅使用简单的批处理调度程序要好得多。
Flexo

但是在某个时刻,当已经很难在单个VM中调度线程时,“ VM执行”的调度似乎是不必要的开销,对吗?
kvista 2011年

Answers:


13

磁盘子系统。这通常是最少共享的资源。内存,当然,但是那是显而易见的。

磁盘子系统限制以两种方式起作用。如果系统使用大量磁盘I / O,则其他来宾会变慢。如果此访客正在生产中,则可能需要快速响应Web查询。这可能非常令人沮丧,也是为什么不租用虚拟硬件的重要原因。您可以通过使用专用磁盘来最大程度地减少此问题。

Guest虚拟机仅使用512 MB内存,会将所有磁盘缓存放在主机上。而且客人之间的分配不均。

不用担心CPU IO。这样,虚拟化非常高效,通常仅与在同一系统上运行的多个进程相关。我很少看到多至强系统在CPU上100%运行。

编辑:错别字


3
大量的磁盘I / O需求将是不进行虚拟化的第一大原因-这是受到虚拟化惩罚最严重的资源,请参阅codinghorror.com/blog/2006/10/…–
Jeff Atwood

谢谢-两条评论都很有帮助。只是想知道是否有人知道为什么高磁盘使用率会对虚拟化造成问题?虚拟化工程师为什么会忽略这个相对基本的问题?还是从根本上说比CPU虚拟化更复杂?
kvista 2011年

注意-@Jeff,我正在阅读您的2006年博客文章,并且我认为这会解释为什么更好(例如,主轴预留),但是我对虚拟化设计者/实施者的问题仍然相同-这对于虚拟化在本质上来说是有问题的是不是CPU虚拟化的一种方式?
kvista 2011年

3
硬盘可以做的只有这么多。对于5毫秒的硬盘,这将是200次搜索。而且,通常,当操作系统复制文件或扫描目录时,它总是使用磁盘io的100%。在这段时间内,磁盘上的所有小请求都被延迟,并且其中有很多请求。另外,由于复制,文件系统缓冲区也被浪费了。可以说我们的操作系统工作原理依赖于空闲的硬盘驱动器。
2011年

1
谢谢。我想看看SSD是否完全改变了这个方程式将会很有趣。但是现在我们进入讨论模式太远了。我明白了-谢谢大家。
kvista 2011年

15

我永远不会放入VM的东西:

  • 使用无法虚拟化的特定硬件的任何东西:通常是图形,相当多的硬件安全模块,带有自定义驱动程序的任何东西(例如,专用网络驱动程序)。

  • 有许可证问题的系统。每个物理CPU或内核都会收取一些软件费用,无论您分配给VM的费用是多少。如果您拥有在32核服务器上的VM中运行的单核许可软件,您将在审核中受到打击。

我不建议在VM中安装的东西:

  • 已经努力使用商品硬件中所有资源的软件。像hadoop这样的作为“大数据”工作一部分工作的机器通常被设计为在裸机上运行。

  • 任何需要进行微调以利用资源的事物。当您真正开始调优数据库时,争夺资源的VM确实会在工作中费劲。

  • 任何已经存在很大瓶颈的东西。它本身已经不能很好地发挥作用,也可能不会与其他人很好地发挥作用。

放入虚拟机有一些很棒的事情:

  • 任何花费大量时间闲置的事物。邮件和DNS之类的实用程序主机很难在现代硬件上产生足够的负载以保证专用服务器。

  • 本身无法很好(或轻松)扩展的应用程序。旧版代码经常属于此类。如果应用程序无法扩展以占用服务器,请使用许多小型虚拟服务器。

  • 从小开始但不断发展的项目/应用程序。与在裸机上启动相比,向VM添加资源(以及迁移到更新,更大的硬件)要容易得多。

另外,我不确定您是否夸大将单个主机上放置大量VM的问题,但是如果您尝试使用较大的VM:HW比率,则可能要考虑使用ESX,Xen,KVM。您将比在Windows上使用VMware或virtualbox更好。


1
+1非常有用的有组织的评论-谢谢!
kvista 2011年

再说一遍-即使我使用ESX等,我认为在某个时候将X机放在Y核心主机上也没有意义。有什么好的经验法则?我认为某处的虚拟化软件白皮书必须解决此问题,但遗憾的是我无法轻松找到它。
kvista 2011年

1
对于VMware,您可以从这里开始:vmware.com/technology/whyvmware/calculator
Cakemox 2011年

作为参考:通过上面的VMWare链接,每个CPU最多可以配置30个VM。默认值为每个CPU 6个VM。
Alex Yursha '19

4

虚拟化性能有两点。

  • 共同的瓶颈
  • 仿真

在共同的瓶颈上,还有谁在同一个铁杆上?如果您位于虚拟环境中,则非常需要托管合作伙伴对您诚实。

我认为要询问原始性能(特别是交互性)的主要问题是虚拟化系统的哪些部分是仿真的。这取决于设置。磁盘和网络是典型的候选者。根据经验,仿真会使执行操作的性能“成本”加倍,因此,任何硬件延迟时间都应计为两倍,并且任何吞吐量数量都应减半。


1
我看到的数字是(裸机)CPU占96-97%,网络占70-90%和磁盘占40-70%
Jeff Atwood

1
+1经验法则评论很有帮助。
kvista 2011年


1

anttiR的良好回答。

此外,时间紧迫的系统。我只是想知道Hyper-V毛钱(虚拟机慢慢落后,虚拟机中所有现代OS都这样做,经常重新同步)在我开发的一些时间紧迫的应用程序中表现不佳。另外,我将在那里使用“很多” cpu,并计划为该应用程序生产一台12核机器。


星号就是这样一种应用。可视化时,您会在电话会议中发生一些非常时髦的事情。
Ryaner 2011年

我有数据记录的时钟稳定性问题;)谢谢,我从数据源中获得了可靠的时间戳,但是当系统时钟不稳定时,很难确定是否存在网络问题。
TomTom
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.