KVM主机的最佳内核configuration和补丁

我有一台服务器(单插槽Nehalem w / 24GB内存),主要作为一个KVM主机,包含一堆Windows服务器和一些(无tick)Linux实例。

我通常使用BFS CPU调度程序(通过CK补丁集)和BFQ磁盘调度程序来编译我的桌面内核,这些内核可以用1000Hz的无时钟定时器进行抢占。 在服务器上,我使用CFQ以100Hz的非tickless做了所有的香草,并且没有强制抢占。

但是,我没有时间或技能来做这个基准testing,所以我正在寻找关于KVM内核的最佳设置的一些input。 虚拟机的吞吐量是否会受益于1000Hz内核?

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

任何人都可以在这里指出正确的方向吗? 对于低层系统的东西,我是一个新手。 🙂

首先,关于KVMpipe理程序调优的“规范”参考依然是IBM非常优秀的KVM最佳实践 ,我build议您逐点进行。

在仔细testing您的预期工作量之后,您几乎可以肯定会做一些事情:

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

  • 转储BFS。 它被devise用于低端硬件的低延迟桌面负载,作者承认它将“不能扩展到大规模硬件”。 不激发信心。

  • 转储BFQ / CFQ。 实际上,每个人都可以在截止date I / O调度程序中获得最高性能,而在testing时,您可能不会是一个例外。

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

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

在前面提到的IBM指南中还包含了许多其他内容,但这些应该会给您带来最大的回报。

根据我的经验,像RHEL这样的发行版已经做好了足够的校准以提供良好的KVM机器性能,并且所有的基准testing都是在这些基准testing上完成的。 如果你想挤出额外的性能百分比,你需要在堆栈中看起来更高 – 在virtio-scsi和数据平面(为磁盘性能)或802.1Qbg / h为额外的networking性能。