非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右

问题现象

具体现象如下图:
非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
从截图看,内存在3.5G左右,虽然linux系统会因为内核,加载的模块,显存等占用部分内存,导致free -m 查看时候显示少于物理机内存,但是这个少近0.5G感觉还是很怪异的。

dmidecode -t memory

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
dmidecode -t memory命令核实物理内存分配并没有错误。

问题原因

经核实这个是xen balloon driver 的内核bug导致。

解决方法

既然是内核bug那就升级内核解决:

yum update kernel

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
重启主机后查看:
非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
很不幸升级到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

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右

安装完成后修改grub配置使用新内核。
查看有那些内核版本

cat /boot/grub2/grub.cfg |grep menuentry

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
配置默认内核

grub2-set-default "CentOS Linux (4.12.0-1.el7.elrepo.x86_64) 7 (Core)"

验证是否配置成功

grub2-editenv list 

非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
配置没有问题后重启主机验证。
非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
如图已经使用新内核,内存显示3948M。

注意

毕竟是通过第三内核解决的问题,第三方内核稳定性,是否有其他bug未经过测试,可能影响稳定性,如有异常建议使用io优化实例,或者使用centos 6系统。
io优化实例:
非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右
CentOS 6 非io优化实例:
非io优化实例CentOS 7系统 4G内存 free -m 显示内存3.5g左右

上一篇:阿里云突发性能T5实例与全新T6实例和有什么区别?


下一篇:iOS开发系列—Objective-C之内存管理