问题描述:
银河麒麟操作系统创建成功后,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开机引导文件说明