KSM导致的警告“ ksmtuned …. read-only system ” 的一些说明

  • 2019 年 10 月 5 日
  • 笔记

前段时间在一台测试服务器上安装了KVM,用于实验。没过几天发现满屏幕都是提示

"…. ksmtuned …. read-only system ….."

于是google搜索了下,找到下面的文章:

转载自:http://www.searchvirtual.com.cn/showcontent_49324.htm

原因:KSM(Kernel samepage merging 内核同页合并)服务的启动导致的。

解决方法:

停止ksm相关进程即可。

/etc/init.d/ksm stop

/etc/init.d/ksmtuned  stop

chkconfig ksm off

chkconfig ksmtuned off

原理或说明:

KVM中最重要的参数是内核同页合并(kernel samepage merging ,KSM),这一特性允许内核更有效地处理内存。

KSM允许Linux内核识别出包含相同内容的内存页,然后合并这些内存页,将数据整合在一个位置可以多次引用。

如果在主机上使用KVM,通常会激活数个客户操作系统,而且这些操作系统经常运行相同的OS,这意味着大量的内核页面被多次加载。

通过应用KSM,许多虚拟机可以使用相同数量的内存启动。事实上,KSM允许虚拟机过度分配内存。

但是使用KSM存在性能损失,在一般的环境中,性能损失大概是10%,这也是在某些环境中关闭KSM的原因。

在RHEL 6和Fedora 14中,KSM默认是打开的。KSM通过两个服务:ksmd和ksmtuned实现,这两个服务在系统初始化时自动启动。管理员应该判断他们的环境并决定保持KSM处于运行状态还是关闭它。

决定使用KSM还是关闭:

如果目标是运行尽可能多的虚拟机,而且性能不是问题,应该保持KSM处于运行状态。例如KSM允许运行30个虚拟机的主机上运行40个虚拟机,这意味着最大化硬件使用效率。

但是,如果服务器在运行相对较少的虚拟机并且性能是个问题时,那么应该关闭KSM。

对任何系统来说,最佳选择将取决于创建虚拟环境时的内存估算。

如果在虚拟主机中有足够的物理内存,在没有开启KSM时就能够满足虚拟机的内存需求,那么最好关闭KSM。

使用chkconfig ksmd off, chkconfig ksmtuned off, service ksmd off , service ksmtuned off 命令关闭KSM。但是如果主机内存紧张,那么最好保持KSM处于运行状态。

优化KSM达到最佳性能:

开启KSM的话,可以继续修改一些参数以达到最佳性能。

这些参数位于一个小的配置文件/etc/ksmtuned.conf中:

# 优化KSM的配置文件 

# 优化调整之间应休眠多长时间 

# KSM_MONITOR_INTERVAL=60 

# 在扫描16Gb服务器之间ksm休眠的毫秒数

# 内存较小的服务器休眠的时间更长,内存较大的服务器休眠时间更短。

# KSM_SLEEP_MSEC=10 

# KSM_NPAGES_BOOST=300 

# KSM_NPAGES_DECAY=-50 

# KSM_NPAGES_MIN=64 

# KSM_NPAGES_MAX=1250 

# KSM_THRES_COEF=20 

# KSM_THRES_CONST=2048 

#如果你想获取优化KSM的调试信息,取消以下注释 

# LOGFILE=/var/log/ksmtuned # DEBUG=1 

配置文件中最重要的参数是KSM_SLEEP_MSEC。

Fedora 14使用的默认值是大型服务器的设置值。当在主机上运行较少的虚拟机,使用KSM时最好让主机休眠更长的时间。例如,尝试设置KSM_SLEEP_MSEC=50,然后测试对虚拟机的影响。