跳转到主要内容
农光亮
KVM

KVM 虚拟化性能调优与嵌套虚拟化

KVM 跑起来容易,跑得快就要调优了。这篇笔记记录 CPU 直通、内存预留、磁盘缓存和嵌套虚拟化四个调优点。

正文

KVM 默认配置能跑,但性能和稳定性还有不少提升空间。这篇笔记把我调优过程中验证过的配置整理出来。

CPU 调优:主机直通与固定

# 查看宿主机 CPU 拓扑
lscpu

# 虚拟机使用主机 CPU 型号,避免指令集不一致
virsh edit my-vm

在虚拟机 XML 中设置:

<cpu mode="host-passthrough" check="none" migratable="off"/>

使用直通模式后,虚拟机能用到宿主机的全部指令集,编译、加密类任务性能提升明显。

内存调优:预留与巨页

<memory unit="GiB">8</memory>
<memoryBacking>
  <hugepages/>
</memoryBacking>

开启巨页可以显著降低 TLB 缺失,数据库类应用提升明显:

# 宿主机预留巨页
echo 8192 > /proc/sys/vm/nr_hugepages

磁盘调优:缓存模式

<driver name="qemu" type="raw" cache="writeback" io="threads"/>
  • 追求性能:cache=writeback
  • 追求安全:cache=writeback + 快照备份
  • 生产环境务必配合定期备份,别裸奔

嵌套虚拟化

在虚拟机里再跑虚拟机(比如跑 Docker/测试 KVM),需要开启嵌套:

# 宿主机关机后修改配置
lxc config set my-vm-container security.nesting true
# 或物理机上
modprobe kvm_intel nested=1

验证方法:虚拟机里执行 cat /proc/cpuinfo | grep vmx,有输出即生效。

性能测试对比

用 sysbench 简单测了一下:

项目 默认配置 调优后
CPU 整数运算 100% 100%(无损耗)
内存带宽 92% 98%
磁盘顺序写 600 MB/s 860 MB/s

小结

调优的核心思路就三条:硬件直通、预留资源、选对缓存。生产环境先备份,再动手。