在一个RedHat系列的Rocky/CentOS系统的VPS上,free显示不对,有8G内存但是只显示了7.6G,少了400多MB
[root@test ~]# free -h total used free shared buff/cache available Mem: 7.6Gi 4.2Gi 1.4Gi 265Mi 2.0Gi 2.8Gi Swap: 4.0Gi 1.9Gi 2.1Gi
1、使用dmidecode命令查看linux硬件信息
dmidecode -t memory
# dmidecode 3.2 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x1000, DMI type 16, 23 bytes Physical Memory Array Location: Other Use: System Memory Error Correction Type: Multi-bit ECC Maximum Capacity: 8 GB Error Information Handle: Not Provided Number Of Devices: 1 Handle 0x1100, DMI type 17, 40 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: Unknown Data Width: Unknown Size: 8 GB Form Factor: DIMM Set: None Locator: DIMM 0 Bank Locator: Not Specified Type: RAM Type Detail: Other Speed: Unknown Manufacturer: QEMU Serial Number: Not Specified Asset Tag: Not Specified Part Number: Not Specified Rank: Unknown Configured Memory Speed: Unknown Minimum Voltage: Unknown Maximum Voltage: Unknown Configured Voltage: Unknown
可以看到分配的内存是8GB,Size: 8 GB
2、查看内核预留内存
dmesg | grep -i memory
[ 0.000000] ACPI: Reserving FACP table memory at [mem 0xbffe12ad-0xbffe1320] [ 0.000000] ACPI: Reserving DSDT table memory at [mem 0xbffdfd80-0xbffe12ac] [ 0.000000] ACPI: Reserving FACS table memory at [mem 0xbffdfd40-0xbffdfd7f] [ 0.000000] ACPI: Reserving APIC table memory at [mem 0xbffe1321-0xbffe13b8] [ 0.000000] Reserving 192MB of memory at 2864MB for crashkernel (System RAM: 8191MB) [ 0.000000] Early memory node ranges [ 0.000000] PM: Registered nosave memory: [mem 0x00000000-0x00000fff] [ 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 0xbffdb000-0xbfffffff] [ 0.000000] PM: Registered nosave memory: [mem 0xc0000000-0xfeffbfff] [ 0.000000] PM: Registered nosave memory: [mem 0xfeffc000-0xfeffffff] [ 0.000000] PM: Registered nosave memory: [mem 0xff000000-0xfffbffff] [ 0.000000] PM: Registered nosave memory: [mem 0xfffc0000-0xffffffff] [ 0.000000] Memory: 2942108K/8388068K available (12293K kernel code, 2261K rwdata, 7872K rodata, 2492K init, 13944K bss, 466944K reserved, 0K cma-reserved) [ 0.001000] Freeing SMP alternatives memory: 32K [ 0.034365] x86/mm: Memory block size: 128MB [ 0.500183] Freeing initrd memory: 26268K [ 0.739956] Non-volatile memory driver v1.3 [ 0.873505] Freeing unused decrypted memory: 2036K [ 0.874867] Freeing unused kernel memory: 2492K [ 0.884897] Freeing unused kernel memory: 2012K [ 0.885319] Freeing unused kernel memory: 320K
原来是为crashkernel保留了192MB的内存,属于kdump服务。kdump服务是在系统奔溃时生成内核转储文件
3、停止kdump服务
systemctl stop kdump systemctl disable kdump
4、修改grub文件
vi /etc/default/grub
将crashkernel=auto改为crashkernel=0
GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="crashkernel=0 resume=UUID=7da7c909-4a85-46de-b44f-b693044a68fa" GRUB_DISABLE_RECOVERY="true" GRUB_ENABLE_BLSCFG=true
5、更新grub配置文件、重启系统
grub2-mkconfig -o /boot/grub2/grub.cfg reboot
6、内存增加了190多MB
注意单位GB/MB和GiB/MiB的区别