问题现象
具体现象如下图:
从截图看,内存在3.5G左右,虽然linux系统会因为内核,加载的模块,显存等占用部分内存,导致free -m 查看时候显示少于物理机内存,但是这个少近0.5G感觉还是很怪异的。
dmidecode -t memory
dmidecode -t memory命令核实物理内存分配并没有错误。
问题原因
经核实这个是xen balloon driver 的内核bug导致。
解决方法
既然是内核bug那就升级内核解决:
yum update kernel
重启主机后查看:
很不幸升级到CentOS官方的最新内核无法解决这个问题.
使用第三方内核,注意第三方内核可能有未知问题和bug,操作方法:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml
安装完成后修改grub配置使用新内核。
查看有那些内核版本
cat /boot/grub2/grub.cfg |grep menuentry
配置默认内核
grub2-set-default "CentOS Linux (4.12.0-1.el7.elrepo.x86_64) 7 (Core)"
验证是否配置成功
grub2-editenv list
配置没有问题后重启主机验证。
如图已经使用新内核,内存显示3948M。
注意
毕竟是通过第三内核解决的问题,第三方内核稳定性,是否有其他bug未经过测试,可能影响稳定性,如有异常建议使用io优化实例,或者使用centos 6系统。
io优化实例:
CentOS 6 非io优化实例: