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 |
小结
调优的核心思路就三条:硬件直通、预留资源、选对缓存。生产环境先备份,再动手。