Table of Contents
背景
CentOS最后一个LTS版本CentOS7即将在2024年6月30日退役,最近开始把手里所有的VPS都更换了一遍系统,通过free -hm查看内存信息时显示不对,有1G内存但是只显示了758MB,少了200多MB:
[root@extkit ~]# free -mh total used free shared buff/cache available Mem: 758Mi 159Mi 286Mi 8.0Mi 312Mi 462Mi Swap: 1.0Gi 91Mi 933Mi
原因分析
Linux系统启动时会初始化相关设备,该过程会占用内存。内核启动时也会占用一部分的内存,此外kdump也占用了一部分内存但是其使用内存大小是可以自行设置的。free -mh命令查询的只是VPS的可用内存。如果要查询实际硬件内存大小就需要使用dmidecode -t memory命令了。
[root@extkit ~]# dmidecode -t memory # dmidecode 3.3 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: 1 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: 1 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
可以看到分配的内存Maximum Capacity是1GB。此外,内核预留内存可以通过如下命令查看:
[root@extkit ~]# dmesg | grep -i memory [ 0.000000] ACPI: Reserving FACP table memory at [mem 0x3ffe0edc-0x3ffe0fcf] [ 0.000000] ACPI: Reserving DSDT table memory at [mem 0x3ffdf040-0x3ffe0edb] [ 0.000000] ACPI: Reserving FACS table memory at [mem 0x3ffdf000-0x3ffdf03f] [ 0.000000] ACPI: Reserving APIC table memory at [mem 0x3ffe0fd0-0x3ffe1047] [ 0.000000] ACPI: Reserving SSDT table memory at [mem 0x3ffe1048-0x3ffe1111] [ 0.000000] ACPI: Reserving HPET table memory at [mem 0x3ffe1112-0x3ffe1149] [ 0.000000] ACPI: Reserving SRAT table memory at [mem 0x3ffe114a-0x3ffe1201] [ 0.000000] ACPI: Reserving MCFG table memory at [mem 0x3ffe1202-0x3ffe123d] [ 0.000000] ACPI: Reserving WAET table memory at [mem 0x3ffe123e-0x3ffe1265] [ 0.000000] Reserving 192MB of memory at 544MB for crashkernel (System RAM: 1023MB) [ 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] Memory: 195532K/1048004K available (14341K kernel code, 5952K rwdata, 8520K rodata, 2608K init, 26336K bss, 354768K reserved, 0K cma-reserved) [ 0.024456] Freeing SMP alternatives memory: 36K [ 0.035523] x86/mm: Memory block size: 128MB [ 0.778024] Freeing initrd memory: 75064K [ 0.903390] Non-volatile memory driver v1.3 [ 1.117384] Freeing unused decrypted memory: 2036K [ 1.118092] Freeing unused kernel image (initmem) memory: 2608K [ 1.119848] Freeing unused kernel image (text/rodata gap) memory: 2012K [ 1.120685] Freeing unused kernel image (rodata/data gap) memory: 1720K
为crashkernel保留了192MB的内存,这部分属于kdump服务,在系统奔溃时可以生成内核转储文件。需要注意的是如无特殊要求,请勿自行修改kdump占用的内存大小。如果非要修改的话可以通过如下步骤进行设置:
关闭kdump服务释放内存
[root@extkit ~]# systemctl stop kdump [root@extkit ~]# systemctl disable kdump [root@extkit ~]# 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 no_timer_check net.ifnames=0 biosdevname=0 console=tty0 console=ttyS0,115200" GRUB_DISABLE_RECOVERY="true" GRUB_DISABLE_UUID=true GRUB_ENABLE_BLSCFG=true
更新grub配置文件、重启系统
[root@extkit ~]# grub2-mkconfig -o /boot/grub2/grub.cfg [root@extkit ~]# reboot
声明
1.本网站名称: 盲盒博客
2.本站永久网址:https://exakit.com
3.本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长support@exakit.com
4.本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
5.本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
6.本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新
评论(0)