KVM 主机的最佳内核配置和补丁

Edw*_*ånd 7 linux kernel kvm-virtualization

我有一个服务器(带有 24GB RAM 的单插槽 Nehalem)主要用作 KVM 主机,其中包含一堆 Windows 服务器和一些(无滴答声)Linux 实例。

我通常使用 BFS CPU 调度程序(通过 CK 补丁集)和 BFQ 磁盘调度程序编译可抢占的桌面内核,使用 1000 Hz 无滴答计时器。在服务器上,我使用 CFQ 以 100 Hz 无滴答声进行所有操作,并且没有强制抢占。

但是,我没有时间或技能对此进行基准测试,因此我正在寻找有关 KVM 内核最佳设置的一些输入。虚拟机的吞吐量会从 1000 Hz 内核中受益吗?

并且,使用 BFS 调度程序会不会是一个坏主意?我听说它也可能给单 CPU 服务器带来好处。我也在考虑在禁用low_latency 选项的情况下使用 BFQ 磁盘调度程序。

任何人都可以指出我正确的方向吗?当涉及到低级系统的东西时,我是一个新手。:-)

Mic*_*ton 8

首先,KVM 管理程序调优的“规范”参考仍然是 IBM 出色的 KVM 最佳实践,我建议您逐点阅读。

在对您的预期工作负载进行仔细测试后,您几乎肯定会想做一些事情:

  • 在您的 Windows 客户机中使用virtio 驱动程序。你应该已经这样做了;如果你不是,这会给你一个非常明显的加速。Linux 来宾应该从安装中自动使用 virtio,但如果您正在虚拟化非常旧的 Linux 系统,请仔细检查它们。

  • 转储 BFS。它是为低端硬件上的低延迟桌面负载设计的,它的作者承认它“不会扩展到大规模硬件”。不会激发信心。

  • 转储 BFQ/CFQ。几乎每个人都可以通过截止时间I/O 调度程序获得最高性能,虽然您应该进行测试,但您可能不会例外。

  • 确保内核同页合并正在运行,并对其进行适当调整。这可以显着降低虚拟机管理程序的内存需求,尤其是当多个来宾运行相同的操作系统时。

  • 使用本地存储时,请使用原始块设备,例如 LVM 逻辑卷,而不是映像文件。这从磁盘 I/O 中删除了一个抽象层。

我之前提到的 IBM 指南中还涵盖了许多其他内容,但这些内容应该会为您带来最大的收益。


dya*_*sny 1

根据我的经验,像 RHEL 这样​​的发行版已经过足够好的校准,可以提供 KVM 机器的良好性能,并且所有基准测试都是在这些发行版上完成的。如果您想获得额外的性能百分比,则需要在堆栈中寻找更高的位置 - virtio-scsi 和数据平面(用于磁盘性能)或 802.1Qbg/h 以获得额外的网络性能。