Linux下獲取空閒內存和內存使用率的方法

一項目基於linux開發,包含一個服務器狀態監視的功能,一個兄弟完成該功能之後顯示內存佔用率一直保存在94%以上,雖然測試機只有512M內存,但也不至於空閒內存如此之少,內存使用率如此之高呀,測試人員在提出這個問題之後,那兄弟還搪塞測試人員:linux就這樣,內存使用方式和windows不同。

分析了一下這個系統的代碼,他從/proc/meminfo中直接讀取了MemFree對應的值,直接導致空閒內存不對,內存使用率當然也不對,在Linux下正確獲取空閒內存的方法應當如下:

1、讀取/proc/meminfo文件,結果如下:

MemTotal: 515880 kB
MemFree: 12748 kB
Buffers: 20768 kB
Cached: 190328 kB
SwapCached: 91920 kB
Active: 349272 kB
Inactive: 119392 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 515880 kB
LowFree: 12748 kB
SwapTotal: 891568 kB
SwapFree: 646656 kB
Dirty: 208 kB
Writeback: 0 kB
AnonPages: 246588 kB
Mapped: 62140 kB
Slab: 25504 kB
SReclaimable: 12256 kB
SUnreclaim: 13248 kB
PageTables: 2592 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 1149508 kB
Committed_AS: 935784 kB
VmallocTotal: 507896 kB
VmallocUsed: 3576 kB
VmallocChunk: 504176 kB

2、MemTotal值作爲總內存

3、空閒內存計算方式:如果Cached值大於MemTotal值則空閒內存爲MemFree值,否則空閒內存爲MemFree值+Buffers值+Cached值

4、內存使用率爲:空閒內存/總內存*100%。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章