Linux 中的內存使用率計算方式


背景介紹

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

小知識

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

freee 命令

free 命令的顯示結果實際上是從文件 /proc/meminfo 中讀取的,默認的顯示結果如下圖所示:

image.png Linux 中為了加快系統的運行速度,往往會使用緩存的機制。這里的buffers 和 cached 就是操作系統為了加快運行速度使用到的內存,這部分內存不是某個進程申請的。當需要新啟動一個程序時,而程序申請的內存又比較大時,這兩部分的內存時可以釋放出來給當前這個程序使用的。因此實際系統當前空閑,可供新的程序申請使用的應該是第二行顯示的空閑內存。

top 命令

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

image.png

參考

[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM