我有一台新的 8 核机器,内存为 16GB。我想使用Ubuntu 和 KVM。主机上除了 SSH 之外不会运行任何其他程序。
我的问题是最大限度我可以为虚拟机使用多少核和多少 RAM。我可以创建 4 个虚拟机并为每个虚拟机分配 2 个核和 4GB RAM 吗?主机操作系统在这种设置下会出现问题吗?
换句话说,最低限度主机运行虚拟机需要多少核心和 RAM?1 个核心和 1GB RAM 是否足以运行虚拟机。
答案1
不存在最大值,就像内存不存在真正的最大值一样。您需要记住以下几点:
- 对于主机来说,KVM v-CPU 只是 KVM 进程中的一个线程。如果你运行的线程比物理核心多,它们就会争夺这些核心,主机调度程序必须负责为它们分配 CPU 时间
- 避免为主机中具有物理核心的单个 VM 分配更多 v-CPU。
- 不要将 HT 核心算作真正的核心。
- 如果虚拟机上的 CPU 时间至关重要,则尽可能不要为所有正在运行的虚拟机分配比物理核心更多的 v-CPU。但是,在不太繁忙的系统上,您可以轻松地过度分配到一些非常疯狂的比例(我见过一个具有 8 个核心的系统运行 150 个大多空闲的虚拟机,每个虚拟机有 2 个核心,没有任何问题)
至于 RAM 分配,基本上是同样的思路:
- 虚拟机只是主机的另一个进程,并且进程可使用的内存有限
- 如果你尝试使用比实际拥有的更多的 RAM,那么最终将进入交换区,与 RAM 相比,交换区的速度非常慢
- KVM 提供了过度分配内存的方法 - 例如膨胀和 KSM。
因此,话虽如此,你需要考虑你的虚拟机绝对需要什么(不要仅仅因为可以就给虚拟机 4 个核心,给它运行所需的最小核心,如果发现性能问题,稍后再添加更多核心)。
小心内存分配 - 你永远不想最终陷入交换。
答案2
主机系统的开销大约为几百 MB,您可以在启动时使用 free 命令立即检查它。
无论如何,留出一些可用内存用于 I/O 缓冲区是件好事。如果您运行类似的 VM,请查看 KSM 以优化内存使用情况。
答案3
除了@dyasny 提到的考虑因素之外,您还需要考虑主机中有多少个套接字。
如果您有 2 插槽 4 核设置,那么您不想为每个 VM 分配太多核心,因为如果 VM 需要跨主内存进行通信,您的性能可能会受到影响。
我以前也遇到过这个问题,但 YMMV。测试您的设置。