Linux

“free”命令不顯示正確的值

  • May 4, 2018

我們的一台機器 redhat 7.2 上有一個非常奇怪的問題。

它怎麼可能是免費的 - 0 ,而使用的是總共 47 個中的 43 個?

[root@master ~]# free -g
             total        used        free      shared  buff/cache   available
Mem:             47          43           0           0           3           3
Swap:             7           5           1
[root@master ~]# free -k
             total        used        free      shared  buff/cache   available
Mem:       49552508    45570336      296216      237396     3685956     3510224
Swap:       8093692     6053196     2040496

來自top

top - 17:34:40 up 10:39,  2 users,  load average: 0.77, 0.81, 0.83
Tasks: 789 total,   1 running, 788 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.7 us,  0.4 sy,  0.0 ni, 97.7 id,  0.2 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 49552508 total,   831304 free, 45669236 used,  3051968 buff/cache
KiB Swap:  8093692 total,  2056872 free,  6036820 used.  3412568 avail Mem

您正在查看錯誤的列。在第一個輸出中,可用記憶體(即可用於新應用程序的 RAM)(沒有任何交換使用)顯示在available列中。這會正確報告 3 Gb 或 3510224 Kb。

47 Gb - 43 Gb =(有捨入誤差)3 Gb

Linux 借用任何未使用的記憶體用於磁碟記憶體,這就是您在free列中看到零的原因。但是一旦其他應用程序請求它,分配給磁碟記憶體的記憶體就會被釋放。

引用自:https://unix.stackexchange.com/questions/441614