文章目录
KSM 介绍
# 1、KSM的全称:Kernel Samepage Merging:内核同页合并
# 2、KSM的原理:一种节约内存的重复数据删除技术,
原理是COW(copy on write)写时复制的共享页
# 3、kvm是如何提供ksm的(通过qemu-kvm-common)
# centos8是默认启用
[root@node139 ~]# rpm -ql qemu-kvm-common | grep ksm
/etc/ksmtuned.conf
/etc/sysconfig/ksm
/usr/lib/systemd/system/ksm.service
/usr/lib/systemd/system/ksmtuned.service
/usr/libexec/ksmctl
/usr/sbin/ksmtuned
[root@node100 ~]# cat /boot/config-5.4.166-1.el7.elrepo.x86_64 | grep KSM
CONFIG_KSM=y
# 4、如何停用|启用KSM
systemctl stop ksm.service
systemctl stop ksmtuned.service
systemctl disable ksm.service
systemctl disable ksmtuned.service
# 5、查看KSM服务状态
systemctl status ksm
systemctl status ksmtuned
KSM是一项内核技术,可以使用ksmtuned进行管理
# 如下是ksmtuned 配置文件介绍
[root@node118 ksm]# cat /usr/local/zjmf/conf/ksmtuned.conf
KSM_THRES_COEF=20 # 内存合并阈值系数(单位百分比),若系统内存8G,合并阈值为8 GB * 20% = 1.6 GB,当系统中的冗余页面占用的内存超过合并阈值时,KSM 将启动页面合并操作
KSM_SLEEP_MSEC=30 # 控制了扫描页面的间隔时间(单位毫秒),较低的值会提升合并效果,但是会增加cpu开销
USE_ZERO_PAGES=1 # 控制是否将零页面纳入内存回收的范围。为0时,KSM只会处理非零页面,即那些具有实际内容的页面;为1时,KSM会处理零页面和非零页面,为1时cpu负载会高些
ksm运行目录相关值介绍
[root@node118 ksm]# pwd
/sys/kernel/mm/ksm
[root@node118 ksm]# tree
.
|-- full_scans # 文件表明已经执行的全区域扫描的次数。
|-- max_page_sharing # 每个分页能运行共享的次数
|-- merge_across_nodes
|-- pages_shared # KSM 正在使用的不可交换的内核页面的数量。
|-- pages_sharing # 一个内存存储指示。 多少节点被共享并且多少被保存。
|-- pages_to_scan # (ksmd睡眠前)一个扫描周期被扫描的内存页数,(范围是1-65536之间的整数)(4096 = 16MB)
|-- pages_unshared
|-- pages_volatile # 频繁改变的页面的数量
|-- run
|-- sleep_millisecs # ksmd进程的休眠时间(单位毫秒)
|-- stable_node_chains
|-- stable_node_chains_prune_millisecs
|-- stable_node_dups
`-- use_zero_pages # 控制是否将零页面纳入内存回收的范围。为0时,KSM只会处理非零页面,即那些具有实际内容的页面;为1时,KSM会处理零页面和非零页面
若是发现ksm内存回收效果不明显时,尝试解决办法
1、确保 USE_ZERO_PAGES=1
2、增大/sys/kernel/mm/ksm/pages_to_scan的值
#先查看默认的值
[root@node118 ksm]# cat /sys/kernel/mm/ksm/pages_to_scan
1250
#手动执行该命令后,再行观察内存可用率(需root执行)
echo 65535 > /sys/kernel/mm/ksm/pages_to_scan
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论