我已经问过这个问题了,但是有人build议我在SF上问这个问题,所以在这里。
https://stackoverflow.com/questions/3010753/wastage-of-resources-in-virtualization
我不确定这是否正确的地方提出这个问题。 不过我希望是的。
在今天早些时候寻找VPS时,我试图了解每个容器如何在后台工作。 记住操作系统使用系统中大部分内存和电源的事实,在同一台机器上不会有多个操作系统意味着更多的资源浪费。
例如,如果我在一个专用的盒子上运行centOS,并且运行可以说20个后台操作系统级别的进程。 然后我去安装一个虚拟化平台,在同一个系统上安装5个centOS虚拟机,这个虚拟机和主机操作系统完全一样。 这是不是意味着这两个过程重复6次? 所以在内部,上下文切换发生在120个进程而不是20个进程之间?
进一步的注意事项:这是一个我在想什么的例子:我有一个长时间运行的主从configuration,cpu +内存密集型进程,可以分配给4台机器。 可以说,当这些进程运行在这4台机器上,让我们说1 Gh的CPU和1千兆内存,我从集群每小时400结果(假设从一台机器100结果)。 现在我得到一个更大的机器(可以说4Gh和4G内存),有1个Gz CPU和1个内存的4个虚拟主机。 这个configuration会给这些4个虚拟主机每小时100个结果吗?
客人机器中的大多数进程几乎一直处于睡眠状态。 您可以使用ps命令检查进程有多less个进程。 在现代pipe理程序中,重复的内存页面在虚拟机之间共享,在Linux上使用KSM技术。 VMware也有同样的事情。 现在还不确定Hyper-V。
总而言之,虚拟化具有开销,但并不像您想象的那么多。
首先,“操作系统使用系统中的大部分内存和电源”这一事实,对于大多数服务器来说,这远远不是这样。
但是,要回答你的问题是,这意味着所有这些进程都在进行,但是现在的想法是,对于现在的多核CPU,单个操作系统几乎不能使用所有可用的资源,所以为什么不使用它来虚拟化。 如果你有一个单一的旧CPU,那么确定它会放慢一切,但这不是大多数情况下发生的事情。
我看到你的问题有关操作系统足迹的部分已经回答在SO,所以我只会在这里考虑性能的考虑。
你不会得到完全相同的性能水平。 但是,我不能肯定地告诉你,performance会好还是坏。
是的,即使有了当今最先进的硬件和硬件辅助虚拟化,仍然会产生一定的开销。 然而,这种开销正在逐渐变小,对于给定的使用可能已经微不足道了。
另一方面,以四台运行分布式进程的机器为例,还有更多的variables可能会影响性能。 例如,这可能是四个节点需要彼此大量沟通他们正在做的事情。 在这种情况下,如果四台机器在一台硬件机器上运行(使用某种虚拟机间networking通信),则可能会看到通信速度和响应时间的增加。 这可能会增加整个过程的performance。
再举一个例子,假设这个过程非常networking化。 如果你有四台物理机器运行这个进程,他们都将拥有自己的网卡。 但是,如果在一台服务器上运行四个虚拟机(假设服务器只有一个网卡),则虚拟机将需要共享一个网卡。 在这两种情况下,如果给每个NIC带宽相同,则会降低性能。
简而言之:它基本上全部取决于可用资源,以及每种资源的使用情况。