使用命令 dmesg | grep -i memory
查看内核预留内存:
[root@iZuf6hwfrhirwu85zqpl5kZ ~]# dmesg | grep -i memory
[ 0.000000] Base memory trampoline at [ffff940980099000] 99000 size 24576
[ 0.000000] Reserving 161MB of memory at 688MB for crashkernel (System RAM: 1966MB)
[ 0.000000] Early memory node ranges
[ 0.000000] PM: Registered nosave memory: [mem 0x0009f000-0x0009ffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000a0000-0x000effff]
[ 0.000000] PM: Registered nosave memory: [mem 0x000f0000-0x000fffff]
[ 0.000000] PM: Registered nosave memory: [mem 0x14000000-0x1511ffff]
[ 0.000000] Memory: 1777324k/2031416k available (7988k kernel code, 17928k absent, 236164k reserved, 5756k data, 2176k init)
[ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[ 0.087557] Initializing cgroup subsys memory
[ 0.172580] x86/mm: Memory block size: 128MB
Reserving 161MB of memory at 688MB for crashkernel (System RAM: 1966MB):这一行说明系统预留了161MB的内存用于crashkernel
。crashkernel 是一个在系统崩溃时启动的内核,用于收集崩溃信息。这是为什么系统内存少于2GB的主要原因。
Crashkernel
是用于在系统崩溃时收集诊断信息的一种机制。如果不需要这个功能,或者愿意牺牲这个功能以获取更多的可用内存,可以选择关闭crashkernel。
关闭 crashkernel 的方法是编辑 /etc/default/grub 文件,找到 GRUB_CMDLINE_LINUX 这一行,移除 crashkernel=auto 设置,然后更新 grub 配置并重启。
具体步骤如下:
1、打开 /etc/default/grub 文件进行编辑,可以使用 vi 文本编辑器,指令如下:
sudo vi /etc/default/grub
找到 GRUB_CMDLINE_LINUX 这一行,把 crashkernel=auto 改成 crashkernel=0 就可以了。
(操作步骤:先按 i
键进入 – INSERT – 编辑模式,移动光标到对应位置,把“auto”改成“0”,接着按ESC
键退出编辑,然后键盘输入:wq
保存并关闭文件)
2、更新 grub 配置。如果系统是基于 Debian 的(例如 Ubuntu),使用 update-grub
命令;如果系统是基于 Red Hat 的(例如 CentOS),使用 grub2-mkconfig -o /boot/grub2/grub.cfg
命令。
3、重启服务器:sudo reboot
。
重启后就能看到系统可用内存变成1.9G左右了
注意,关闭了 crashkernel 之后,系统崩溃时将无法在收集诊断信息。