free 报告的内存与物理内存不一致

free 报告的内存与物理内存不一致

我有一个 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。

相关内容