KVM 性能调优,kvm性能调优
KVM 性能调优,kvm性能调优
CPU Tuning
Cache share tuning
对于物理 CPU,同一个 core 的 threads 共享 L2 Cache,同一个 socket 的 cores 共享 L3 cache,所以虚拟机的 vcpu 应当尽可能在同一个 core 和 同一个 socket 中,增加 cache 的命中率,从而提高性能。IBM 测试过,合理绑定 vcpu 能给 JVM 来的 16% 的性能提升。
实现策略:虚拟机 vcpu 尽可能限定在一个 core 或者一个 socket 中。例如:当 vcpu 为 2 时,2 个 vcpu 应限定在同一个 core 中,当 vcpu 大于 2 小于 12 时,应限定在同一个 socket 中。
<vcpu
placement= 'static' cpuset= '0-5' >1< /vcpu > #
cpuset 限定 vcpu
|
NUMA tuning
网易运维团队测试得出:2 个 vcpu 分别绑定到不同 numa 节点的非超线程核上和分配到一对相邻的超线程核上的性能相差有 30%~40%(通过 SPEC CPU2006 工具测试)。可见,同一个虚拟机的 vcpu 需限定在同一个 NUMA 节点,并且分配该 NUMA 节点下的内存给虚拟机,保证虚拟机尽可能访问 local memory 而非 remote memory。
<domain>
...
<numatune>
<memory
mode= "strict" placement= "static" /> #
placement 为auto 时,只能分配 numad 查询得出的内存
...
< /numatune >
...
< /domain >
|
IRQ tuning
CPU0 常用于处理中断请求,本身负荷较重。多数物理机默认 CPU0 完全处理 eth0 的 IRQ,eth1 的 IRQ 完全由另一个 CPU 处理,同时 CPU0 处理着大量的 CAL 类型中断。预留 2 个或者 4 个物理 CPU,这些 CPU 和对应网卡中断做绑定,使得其它 CPU 更好更完整的为云主机所用。
Disk IO Tuning
Disk IO cache Tuning
kvm 支持多种虚拟机多种 IO Cache 方式:writeback, none, writethrough 等。性能上:writeback > none > writethrough,安全上 writeback < none < writethrough。
<disk type = 'file' device= 'disk' >
<driver
name= 'qemu' type = 'qcow2' cache= 'none' /> #
cache 可为 writeback, none, writethrough,directsync,unsafe 等
...
< /disk >
|
Disk IO scheduler
cfq 参数调优。
Memory Tuning
关于 zone_reclaim_mode, disable 掉。
/etc/sysctl.conf
vm.zone_reclaim_mode=0
sysctl -p
关于 swappiness 参数,若 CPU 为 Intel Nehalem 架构,需要配置为 0 ,否则不做修改。
关闭 KVM 内存共享,打开透明大页,能带来 7% 左右性能提升。
echo 0
> /sys/kernel/mm/ksm/pages_shared
echo 0
> /sys/kernel/mm/ksm/pages_sharing
echo always
> /sys/kernel/mm/transparent_hugepage/enabled
echo never
> /sys/kernel/mm/transparent_hugepage/defrag
echo 0
> /sys/kernel/mm/transparent_hugepage/khugepaged/defrag
|
Network IO Tuning
开启 vhost_net 模式。
参考资料
Tuning
KVM for performance
libvirt CPU Tuning
Virtualization
Tuning and Optimization Guide
网易 openstack 运维
评论暂时关闭