使用Free命令查看Linux服務器內存使用狀況(-/+ buffers/cache詳解)


free命令可選參數


  • -b,-k,-m,-g show output in bytes, KB, MB, or GB
  • -h human readable output (automatic unit scaling)
  • -l show detailed low and high memory statistics
  • -o use old format (no -/+buffers/cache line)
  • -t display total for RAM + swap
  • -s update every [delay] seconds
  • -c update [count] times
  • -a show available memory if exported by kernel (>80 characters per line)
  • -V display version information and exit

 

常用參數演示


 

[root@ ~]# free -b   #以Byte為單位顯示
             total       used       free     shared    buffers     cached
Mem:    1044611072  552603648  492007424      57344   39006208  124108800
-/+ buffers/cache:  389488640  655122432
Swap:   1572855808  245936128 1326919680
[root@ ~]# free -k   #以KB為單位顯示
             total       used       free     shared    buffers     cached
Mem:       1020128     536520     483608         56      38108     121200
-/+ buffers/cache:     377212     642916
Swap:      1535992     240172    1295820
[root@ ~]# free -m   #以MB為單位顯示
             total       used       free     shared    buffers     cached
Mem:           996        523        472          0         37        118
-/+ buffers/cache:        368        627
Swap:         1499        234       1265

[root@ ~]# free -h  #人性化輸出顯示
             total       used       free     shared    buffers     cached
Mem:          996M       521M       474M        56K        35M       118M
-/+ buffers/cache:       368M       628M
Swap:         1.5G       234M       1.2G


[root@ ~]# free -o  #不顯示-/+buffers/cache line,不建議
             total       used       free     shared    buffers     cached
Mem:       1020128     536892     483236         56      38468     121284
Swap:      1535992     240172    1295820


[root@ ~]# free -th  #算上swap
             total       used       free     shared    buffers     cached
Mem:          996M       524M       471M        56K        37M       118M
-/+ buffers/cache:       368M       627M
Swap:         1.5G       234M       1.2G
Total:        2.4G       758M       1.7G


[root@ ~]# time free -s 1 -c 3   #表示持續每隔1s更新更新一次mem信息,更新3次
             total       used       free     shared    buffers     cached
Mem:       1020128     537512     482616         56      38868     121328
-/+ buffers/cache:     377316     642812
Swap:      1535992     240172    1295820

             total       used       free     shared    buffers     cached
Mem:       1020128     537512     482616         56      38868     121328
-/+ buffers/cache:     377316     642812
Swap:      1535992     240172    1295820

             total       used       free     shared    buffers     cached
Mem:       1020128     537512     482616         56      38868     121328
-/+ buffers/cache:     377316     642812
Swap:      1535992     240172    1295820


real    0m2.002s
user    0m0.000s
sys    0m0.001s
[root@ ~]#

 

free 命令輸出結果信息說明


 

 

                     total       used       free     shared    buffers     cached
Mem:                996M       525M       470M        56K        38M       118M
-/+ buffers/cache:            368M        627M
Swap:               1.5G       234M       1.2G

 

第一行


 

 

  • total: 內存總數
  • used: 已經使用內存數
  • free: 完全空閑內存
  • shared: 多個進程共享的內存
  • buffers: 用於塊設備數據緩沖,記錄文件系統metadata(目錄,權限,屬性等)
  • cached: 用於文件內容的緩沖

第一列


  • Mem: 物理內存
  • -/+ buffers/cache: 基於應用角度考慮(計算已使用內存時減去buffers/cache,計算可使用內存時加上buffers/cache)的內存情況,也可理解為真實的內存使用情況.
  • Swap: 交換分區

 

當我們獲取系統內存用量的時候我們應該以“-/+ buffers/cached”行的used和free作為參考.因為第一行的buffers和cached被系統作為了緩存(這里包括緩沖了metadata數據和曾經打開過的內容,是為了加快我們系統處理的速度),而這部分緩存可以根據我們的應用內存使用情況隨時釋放掉(也可以手動釋放).

這里的話我系統可用內存實際為:可用627M,已使用368M,而不是525M和470M.

 

buffers/cahed手動釋放測試


 

釋放前

[root@ ~]# free -h
                       total       used       free         shared    buffers     cached
Mem:                  996M       531M 465M        56K        42M 119M -/+ buffers/cache:               369M       626M
Swap:                  1.5G       234M       1.2G
[root@ ~]# 

使用命令手動釋放

[root@ ~]# echo 3 > /proc/sys/vm/drop_caches
[root@ ~]# free -h
                     total       used       free     shared    buffers     cached
Mem:                996M       391M 604M        56K       420K 26M -/+ buffers/cache:             364M       631M
Swap:               1.5G       234M       1.2G
[root@ ~]# 

手動釋放后我們看到 第一行Mem的used和free有了很大的提升,我們上述的觀點得到了驗證

 

使用find 命令讓buffers增加

[root@ backup]# free -h;find .>/dev/null;free -h
             total       used       free     shared    buffers     cached
Mem:          996M       397M       598M        56K       2.6M        32M
-/+ buffers/cache:       362M       633M
Swap:         1.5G       234M       1.2G
total used free shared buffers cached Mem: 996M 415M 581M 56K 17M 32M
-/+ buffers/cache: 364M 631M Swap: 1.5G 234M 1.2G [root@ backup]#

 

使用cat 命令讓cached增加

[root@zwj python]# free -h;find /mydata/backup/python/ -type f|xargs cat>/dev/null 2>&1;free -h
             total       used       free     shared    buffers     cached
Mem:          996M       434M       561M        56K        18M        50M -/+ buffers/cache:       365M       630M
Swap:         1.5G       234M       1.2G
             total       used       free     shared    buffers     cached
Mem:          996M       767M       228M        56K        20M       367M -/+ buffers/cache:       379M       617M
Swap:         1.5G       234M       1.2G

 

Done!!!


 


免責聲明!

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



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