linux內存使用率計算方法


1、一般情況下大家查看系統內存使用情況都會用到free -m 命令來查看(如圖)

但是多數情況大家對如何得出准確的內存使用率有些迷惑,因為多數的linux系統在free命令后會發現free(剩余)的內存很少,而自己又沒有開過多的程序或服務。對於上述的情況,正確的解釋是:linux的內存管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的內存管理機制的思想包括(不敢說就是)內存利用率最大化。內核會把剩余的內存申請為cached,而cached不屬於free范疇。當系統運行時間較久,會發現cached很大,對於有頻繁文件讀寫操作的系統,這種現象會更加明顯。

直觀的看,此時free的內存會非常小,但並不代表可用的內存小,當一個程序需要申請較大的內存時,如果free的內存不夠,內核會把部分cached的內存回收,回收的內存再分配給應用程序。所以對於linux系統,可用於分配的內存不只是free的內存,還包括cached的內存(其實還包括buffers)。

對操作系統來說,Buffers和Cached是已經被使用的(上圖Mem:這一行)
     1      MemFree=total-used
     2      196=7873-7677
 
對應用程序來說(上圖)
     1      MemFree=buffers+cached+free
     2      6336=282+5857+196
 
由於不同的linux發行版,在系統制作過程中會修改部分源碼。一般的系統(如Debian)使用free命令和讀取meminfo文件兩種方式計算的內存使用率是相同的。但是對於部分系統,如SUSE(並不確定是每個版本的都是,這里指SUSE Enterprise Server 11),其在free命令回顯的結果中,cached部分的值並不等於meminfo文件中的cached所顯示的值,而是等於meminfo文件中cached部分和SReclaimable部分之和。
 
也就是說,debian之類的系統為:
     可用內存=free的內存+cached的內存+buffers的內存 (上圖Mem:這一行)
 
而SUSE之類的系統則為:
     可用內存=free的內存+cached的內存+buffers的內存+SReclaimable的內存


免責聲明!

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



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