我有一个运行 Debian 12.1 的 Linux VM。最初,我给它分配了 16GB RAM。然而,我后来意识到我实际上不需要那么多内存,8GB 就足够了。我关闭了虚拟机并将VMWare中的内存分配调整为8GB。当我启动 Linux VM 时,我可以通过检查“dmesg”输出来确认新的内存大小,该输出正确显示了调整后的大小。
$ sudo dmesg | grep memory
[ 2.967853] vmwgfx 0000:00:0f.0: [drm] Legacy memory limits: VRAM = 8192 kB, FIFO = 256 kB, surface = 0 kB
[ 2.967859] vmwgfx 0000:00:0f.0: [drm] Maximum display memory size is 8192 kiB
但是,旧的内存分配值仍然显示在“top”、“free”等工具和“/proc/meminfo”文件中。
$ free
total used free shared buff/cache available
Mem: 16376480 477100 15924248 636 240124 15899380
Swap: 998396 0 998396
$ cat /proc/meminfo
MemTotal: 16376480 kB
MemFree: 15923996 kB
我该如何解决这种不一致?
答案1
经过一番调查,我在 Grub2 中发现了一个“mem”参数。
$ sudo vim /etc/default/grub
...
GRUB_CMDLINE_LINUX="mem=8192m"
...
$ sudo update-grub
重新启动后,top/proc/meminfo/free 显示准确的内存值。
更新:我想向克里斯·戴维斯和亨里克表示感谢——你们是完全正确的。我无法直接控制该虚拟机;我只有 SSH 访问权限。管理它的人没有正确调整 RAM 大小。