Linux
“free”命令不顯示正確的值
我們的一台機器 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
列中看到零的原因。但是一旦其他應用程序請求它,分配給磁碟記憶體的記憶體就會被釋放。