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

Joe*_*oel 2 memory

我有一个 64 位桌面,运行 32 位 Debian - 2G 内存。

user@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
Run Code Online (Sandbox Code Playgroud)

我很困惑,为什么当实际物理内存为 2G 时,free 报告的内存仅为 1G 。有人可以解释如何根据我的机器规格正确协调 free 的输出吗?

Dav*_*ett 5

这是一个四舍五入的问题。例如在我的一台机器上:

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
Run Code Online (Sandbox Code Playgroud)

7,881 MiB 实际上是 ~7.70 GiB,但free -g向下舍入为 7,而不是向上舍入 8。同样有~4.98 GiB 可用内存,但free -g向下舍入为 4 而不是向上舍入为 5。

报告的总内存free不包括内核无法访问的内存(在上述服务器的情况下,由于芯片组限制不允许使用 8Gb 的最后一个块,在某些情况下,机器的视频卡可能会要求一些 RAM,如果它没有自己的)也没有报告内核在启动时解压缩到的小块 RAM(因此在上面主机上分配了 128M 的较小虚拟机之一,免费仅报告 126,616 K、123 M (它实际上更像是 123.6 M)或 0 G) - 所以你永远不会看到与你的物理总 RAM 相同的值free -g

在您的情况下free,看到的是 1,982.7 M 或 1.94 G,它四舍五入为 1。