问题背景:使用 free -h 查看内存,和实际物理内存大小不一致

解答:因为 free 显示的内存去掉了系统使用掉的内存,查看实际内存大小可以使用下面两种方式
内存统计方法一:
命令:lsmem

计算累加:384M+128M+640M+128M+384M+128M+256M=2048M=2G
内存统计方法二:
命令:dmidecode -t memory

被系统用掉的内存大小可以使用命令查看
[root@ansible ~]# cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-4.4.246-1.el7.elrepo.x86_64 root=/dev/vda1 ro vconsole.keymap=us crashkernel=512M-2G:64M,2G-4G:128M,4G-:192M vconsole.font=latarcyrheb-sun16 rhgb quiet LANG=en_US.UTF-8 console=tty1 console=ttyS0,115200n8 video=800x600
其中 crashkernel=512M-:192M 内核预留192M内存。可以手动去掉,但建议保留这个参数, 内核出现宕机的时候可以保留现场。
总结:
(1)系统启动时会初始化相关设备,该过程会占用内存,内核启动时,也会占用一部分的内存。其中,kdump占用的内存是可以自行设置的,如无特殊要求,请勿自行修改kdump占用的内存大小。
(2)free -mh命令查询的是弹性云服务器的可用内存,dmidecode -t memory 命令查询的是实际硬件内存大小(包含内核占用)。因此使用free -mh命令查询到的内存大小比实际的要小一些,属于正常情况
© 版权声明
文章版权归作者所有,未经允许请勿转载。