linux 服務器內存占用統計


當前內存占用率的計算,是根據top命令顯示的Mem.used除以Mem.total得到。

  1. Mem.total:表示總物理內存。
  2. Mem.used: 表示內核控制的內存數,除了應用程序使用的內存外,還包括緩存。

Mem.used =  應用程序使用內存  + Mem.buffers + Mem.cached

Linux的內存管理機制,會盡可能緩存一些數據,就算程序本身已經釋放相關內存,Buffers/cached也不會立即釋放。

但在需要的時候Buffers/cached都是可以被丟棄並快速回收的。

  1. 反過來,Mem.free:   表示還未納入內核管理范圍的內存(完全未被使用)。

有時候看上去可用內存很少,但實際還是比較充足的。從應用程序角度,buffers和cached也屬於可用。

實際可用內存 = Mem.free + Mem.buffers + Mem.cached.

所以, 由於buffeds/cached機制,服務器在運行一段時間以后uesd內存的值越來越大。

基於此計算的內存占用率結果比實際偏高,而且還可能偏高很多。

舉例,在服務器用vi打開文件,此時文件數據納入緩存,內存占用隨之增加。但這並不是應用程序占用的內存。

linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1133      18820          0         20         86
-/+ buffers/cache:       1025      18927
Swap:        16384          0      16384
linux139:/srv # vim test.log 
linux139:/srv # ll -sh test.log 
30M -rw------- 1 root root 30M Mar 29 11:24 test.log
linux139:/srv # free -m
             total       used       free     shared    buffers     cached
Mem:         19953       1162      18790          0         20        116
-/+ buffers/cache:       1025      18928
Swap:        16384          0      16384
lin # top
top - 11:25:34 up  3:49,  3 users,  load average: 0.21, 0.11, 0.09
Tasks: 128 total,   1 running, 127 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.1%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:     19953M total,     1163M used,    18790M free,       20M buffers
Swap:    16384M total,        0M used,    16384M free,      116M cached

 

手工清理緩存方式:

sync ;echo 3 > /proc/sys/vm/drop_caches

 


免責聲明!

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



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