银河麒麟操作系统free查看服务器的内存,为什么比实际物理内存少很多?

服务器 0

问题描述:

银河麒麟操作系统创建成功后,free -m命令查询内存大小,查询结果比实际物理内存小很多。

#银河麒麟服务器高级操作系统V10[root@localhost kvms]# uname -aLinux localhost.localdomain 4.19.90-24.4.v2101.ky10.aarch64 #1 SMP Mon May 24 14:45:37 CST 2021 aarch64 aarch64 aarch64 GNU/Linux

创建的虚拟机实际内存为8192M。系统内查询可用内存为6807M
使用dmidecode -t memory命令查看实际的硬件内存大小,free -m查询系统内内存大小如下:
在这里插入图片描述

可以看到使用dmidecode -t memory查看的内存大小与实际配置一致。


下图为redhat7.9,配置的实际内存为8192M,free -m查询结果为
在这里插入图片描述

问题原因

首先,系统启动时会初始化相关设备,该过程会占用内存,内核启动时,也会占用一部分的内存。其中,kdump占用的内存是可以自行设置的,如无特殊要求,请勿自行修改kdump占用的内存大小。

其次,free -m命令查询的是服务器的可用内存,dmidecode -t memory命令查询的是实际硬件内存大小。

因此,使用free -m命令查询到的内存大小比实际的要小一些,属于正常情况,非问题。

说明:

  • 物理机同样存在该问题。

关闭或调小银河麒麟操作系统默认分配的kdump内存值在这里插入图片描述

kdump默认分配内存为1024M

1.修改kdump分配的内存
在这里插入图片描述或 删除crashkernel=auto,high 字段,(关闭kdump服务systemctl stop kdump.service,disable kdump服务systemctl disable kdump.service。不做该步骤也可以释放kdump预留内存。),配置同步grub.cfg。

2.配置同步grub.cfg。

通过测试发现:/boot/grub2/下没有grub.cfg,那么启动方式为UEFI。反之,启动方式为legacv。

当启动方式UEFI模式:

grub2-mkconfig -o /boot/efi/EFI/操作系统/grub.cfg

当启动方式为legacv时:

grub2-mkconfig -o /boot/grub2/grub.cfg

修改完执行

reboot

参考:

  • kdump基本概念
  • 麒麟操作系统kdump配置(手动调整预留内存大小和内核崩溃测试)
  • linux下修改grub及其/etc/default/grub开机引导文件说明

也许您对下面的内容还感兴趣: