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!!!
