我有一个 64 位桌面,运行 32 位 Debian - 带有 2G 内存。
用户@box:~/$ head -n 1 /proc/meminfo MemTotal: 2030324 kB
但是当我要求免费报告内存时,我看到:
user@box:~$ free -g
total used free shared buffers cached
Mem: 1 1 0 0 0 1
-/+ buffers/cache: 0 1
Swap: 2 0 2
我很困惑为什么免费报告只有1G全部的内存,而实际物理内存为 2G。有人能解释一下如何正确地将 free 的输出与我的机器规格相协调吗?
答案1
这是一个舍入问题。例如,在我的其中一台机器上:
devtest:~# free -m
total used free shared buffers cached
Mem: 7881 2780 5100 0 26 2417
-/+ buffers/cache: 336 7545
Swap: 7632 0 7632
devtest:~# free -g
total used free shared buffers cached
Mem: 7 2 4 0 0 2
-/+ buffers/cache: 0 7
Swap: 7 0 7
7,881 MiB 实际上是 ~7.70 GiB,但free -g
向下舍入为 7,而不是向上舍入为 8。同样,有 ~4.98 GiB 可用内存,但free -g
将其向下舍入为 4,而不是向上舍入为 5。
报告的总内存free
不包括内核无法访问的内存(在上述服务器的情况下,由于芯片组限制,无法使用 8Gb 的最后一块,在某些情况下,如果机器的视频卡没有自己的 RAM,它可能会声明一些 RAM),也不报告内核在启动时解压到的小块 RAM(因此,在上述主机上分配了 128M 的较小虚拟机之一上,free 仅报告 126,616 K、123 M (实际上更像是 123.6 M)或 0 G)-所以您永远不会看到与 中的物理总 RAM 相同的值free -g
。
在您的情况下free
看到的是 1,982.7 M 或 1.94 G,它四舍五入为 1。