在一台 Centos 7.5 服务上运行了4台kvm, 发现ksmd的CPU占用时间最大, 占用比一直处于30%-50%左右
1 | [root@dlz-192-168-1-82 data]# top |
ksm是基于内核的虚拟机KVM用来自调优的, 通过调整一些参数使KVM主机获得更好的性能. 通过使用kms, 可以使虚拟机获得更多的内存启动, 简而言之, 可以超过宿主机内存限制, 过度分配内存. 但使用ksm会带来性能损失, 一般情况会损失10%.
在RHEL 6+(Centos 6+)和Fedora 16+中, ksm默认打开. ksm通过ksmd和ksmtuned两个服务实现.
是否要使用ksm
- 如果系统资源很充裕, 建议关闭
- 如果系统资源很紧张, 建议开启
关闭ksm
1 | chkconfig ksmd off |
调优ksm
/etc/ksmtuned.conf
是ksm的配置文件, 我们可以适当的进行一些参数调整, 重启服务
1 | # Configuration file for ksmtuned. |
KSM_MONITOR_INTERVAL
表示ksm每次内存扫描的时间KSM_SLEEP_MSEC
表示每次扫描休息的间隔时间(最小值为10),KSM扫描会占用一些CPU的开销,所以当KVM虚拟机数量或者应用软件较少时可以调整KSM_SLEEP_MSEC至一个较大的值,反之则设置较小的值;同时当Hypervisor里面的虚拟机的内存调优到达一个稳定状态,也可以根据情况把这个参数调小节省CPU的开销KSM_THRES_COEF
表示临界值系数KSM_THRES_CONST
表示临界值常量KSM_NPAGES_BOOST
表示内存页合并增加数量KSM_NPAGES_DECAY
表示内存页合并减少数量KSM_NPAGES_MIN
表示内存页合并最小值KSM_NPAGES_MAX
表示内存页合并最大值LOGFILE
表示ksmtuned的日志存放路径,建议使用默认路径DEBUG
取消注释才生效,建议使用默认值