1. 程式人生 > 其它 >Linux 中的記憶體使用率計算方式

Linux 中的記憶體使用率計算方式

背景介紹

在工作中處理問題的時候,遇到一個問題,自己根據 top 命令時檢視到的 used 和 total 計算出來的記憶體使用率已經達到 90% 以上了,但是系統自帶的監控軟體計算出來的使用率往往沒有這麼高。在網上查詢了一些文章,說應該使用 free 命令,top 命令顯示的結果不太準確,因此決定將自己的學習過程記錄一下。

小知識

Linux 的顯示命令中有 free 和 available 兩種表示空閒的記憶體,它們之間的區別如下:free 表示這部分記憶體沒有被用來做任何事情,available 表示這邊部分記憶體可以被應用程式申請使用。

freee 命令

free 命令的顯示結果實際上是從檔案 /proc/meminfo

 中讀取的,預設的顯示結果如下圖所示:

 Linux 中為了加快系統的執行速度,往往會使用快取的機制。這裡的buffers 和 cached 就是作業系統為了加快執行速度使用到的記憶體,這部分記憶體不是某個程序申請的。當需要新啟動一個程式時,而程式申請的記憶體又比較大時,這兩部分的記憶體時可以釋放出來給當前這個程式使用的。因此實際系統當前空閒,可供新的程式申請使用的應該是第二行顯示的空閒記憶體。

top 命令

有了上面free命令的顯示結果介紹,也就明白了為什麼根據 top 命令顯示的 used 和 total 計算出來的記憶體使用率不準確,因為這裡的 used 並沒有除去 buffers 和 cached 使用的這部分記憶體,而這部分記憶體實際上是可以釋放出來給程式使用的。

參考

[1] : free(1) - Linux manual page (man7.org)
[2] : linux - Meaning of the buffers/cache line in the output of free - Server Fault
[3] : top(1) - Linux manual page (man7.org)
[4] : Free vs. Available Memory in Linux