linux系統記憶體實際使用率

2021-06-18 02:55:32 字數 1214 閱讀 3226

通過定期採集/proc檔案系統內的meminfo檔案來獲取當前記憶體使用情況。

proc檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些引數。由於系統的資訊,如程序,是動態改變的,所以使用者或應用程式讀取proc檔案時,proc檔案系統是動態從系統核心讀出所需資訊並提交的採集流程圖。

/proc/meminfo 資訊如下:

需要使用的指標有:memtotal ,memfree,buffers,cached

memtotal:總記憶體大小

memfree:空閒記憶體大小

buffers和cached:磁碟快取的大小

buffers和cached的區別:

buffers是指用來給塊裝置做的緩衝大小,他只記錄檔案系統的metadata以及 tracking in-flight pages.

cached是用來給檔案做緩衝。

buffers是用來儲存目錄裡面有什麼內容,許可權等等。

而cached直接用來記憶我們開啟的檔案,比如先後執行兩次命令#man x ,你就可以明顯的感覺到第二次的開打的速度快很多。

而buffers隨時都在增加,比如先後兩次使用ls /dev後,就會發現第二次執行的速度會較第一次快。這就是buffers/chached的區別。

下面分別從作業系統角度和應用程式角度來區別buffers和cached  

使用free命令可以看到

對作業系統來說,buffers和cached是已經被使用的(上圖mem:這一行)

memfree=total-used

850748=16408552-15557804

對應用來說(上圖對應-/+ buffers/cache那一行)

memfree=buffers+cached+free

14720816=157720+13712348+805748

所以本著監控應用對物理記憶體使用情況的目的採取如下計算方法:

記憶體使用率(memusedperc)=100*(memtotal-memfree-buffers-cached)/memtotal

在這裡為了patrolagent的監控效能,採用定期讀取/proc/meminfo檔案來獲取memtotal ,memfree,buffers,cached這些引數的值

該演算法在memory.km中實現

正確計算linux系統記憶體使用率

圖中的例子很典型,就是 多數的linux系統在free命令後會發現free 剩餘 的記憶體很少,而自己又沒有開過多的程式或服務。對於上述的情況,正確的解釋是 linux的記憶體管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的記憶體管理機制的思想包括 不敢說就...

正確計算linux系統記憶體使用率

ubuntu解決cache逐漸變大導致oom killer將某些程序殺死的情況 linux 記憶體中的 cache 真的能被 麼?正確計算linux系統記憶體使用率 對作業系統來說,buffers和cached是已經被使用的 上圖mem 這一行 memfree total used 314952 2...

linux監控記憶體使用率

一 監控目的 通過監控記憶體使用率判定機器記憶體資源消耗情況,及時處理並優化資源配比。二 監控方法 1 監控命令 free m cat proc meminfo 2 監控指標 記憶體使用率 buffer cache 3 監控方法 通過上述命令對記憶體總量 使用量進行擷取,取得記憶體使用率,並根據閾值...