KVM:虚拟机的最大内核数量和内存量

我有一个新的8核心机器16GB的RAM。 我想使用Ubuntu和KVM在其上运行虚拟机。 除了SSH以外,别的什么都不会在主机上运行。

我的问题是什么是我可以用于虚拟机的最大数量的内核和RAM。 我可以创build4个虚拟机,并分配2个内核和4GB RAM吗? 主机操作系统是否有这样的设置问题?

换句话说,主机运行虚拟机所需的内核和内存的最小数量是多less? 1个内核和1GB内存是否足以运行虚拟机。

没有最大值,因为没有真正的最大值。 你需要记住以下几点:

  • KVM v-CPU到主机只是KVM进程中的一个线程。 如果你运行的线程多于你的物理内核,他们将会争夺这些核心,主机调度器将不得不照顾给他们CPU时间
  • 避免将更多的v-CPU分配给主机中具有物理内核的单个虚拟机。
  • 不要把HT核心算作真正的核心。
  • 如果可能的话,如果虚拟机上的CPU时间非常关键,则不要为运行的所有虚拟机分配更多的v-CPU。 然而,在不太繁忙的系统上,你可以很容易地重新分配一些真正疯狂的比率(我已经看到一个系统有8个核心运行150个大多数闲置虚拟机,每个虚拟机有2个核心没有问题)

至于内存分配方面,这基本上是一样的思路:

  • 虚拟机只是主机的另一个进程,进程将会有一个内存限制,可以使用
  • 如果你尝试使用更多的内存,那么你最终会进入交换,与内存相比,这个速度已经很慢了
  • KVM提供了分配内存的方法 – 有Baloon和KSM。

所以说,你必须考虑你的虚拟机绝对需要什么(不要只给虚拟机4个内核,因为你可以给它最小的运行时间,如果你看到性能问题,以后再增加)。
内存分配要小心 – 你永远不会想要交换。

主机系统的开销是几百MB,你可以在开机时用free命令立即检查。

在任何情况下,将一些空闲内存用于I / O缓冲区是一件好事。 如果您运行类似的虚拟机,请查看KSM以优化内存使用情况。

除了@dyasny已经解决的问题之外,您还需要考虑主机中有多less个套接字。

如果您拥有双插槽4核设置,那么您不希望为每个虚拟机分配太多内核,因为如果虚拟机需要通过主内存进行通信,性能可能会受到影响。

之前我曾经遇到这个问题,但是YMMV。 testing你的设置。