linux內存 free命令 buffer cache作用

總有人愛問buffer cache什麼區別,通常我的回答百度一下就出來了,今天就徹底百度下,總結總結。以後就說:“去看小鵬的筆記去,這都不知道。”

free命令可以顯示Linux系統中空閒的、已用的物理內存及swap內存,及被內核使用的buffer。在Linux系統監控的工具中,free命令是最經常使用的命令之一。

1.命令格式:
free [參數]
2.命令功能:
free 命令顯示系統使用和空閒的內存情況,包括物理內存、交互區內存(swap)和內核緩衝區內存。共享內存將被忽略
3.命令參數:
-b  以Byte爲單位顯示內存使用情況。 
-k  以KB爲單位顯示內存使用情況。 
-m  以MB爲單位顯示內存使用情況。
-g   以GB爲單位顯示內存使用情況。 
-o  不顯示緩衝區調節列。 
-s<間隔秒數>  持續觀察內存使用狀況。 
-t  顯示內存總和列。 
-V  顯示版本信息。 

標題解釋
total:總計物理內存的大小。
used:已使用多大。
free:可用有多少。
Shared:多個進程共享的內存總額。
Buffers/cached:磁盤緩存的大小。

  • 第一行的輸出時從操作系統(OS)來看的。也就是說,從OS的角度來看,計算機上一共有:

total:1004348KB(缺省時free的單位爲KB)物理內存;
used:在這些物理內存中有485308KB被使用了;
free:519040KB是可用的;
buffer:59424表示被OS buffer住的內存。
cache:257760表示被OS cache的內存。
公式:total=used+free
也就是說buffer是用於存放要輸出到disk(塊設備)的數據的,而cache是存放從disk上讀出的數據。這二者是爲了提高IO性能的,並由OS管理。看下面圖示


  • 第二行是從一個應用程序的角度看系統內存的使用情況。

-buffers/cache,表示一個應用程序認爲系統被用掉多少內存;
+buffers/cache,表示一個應用程序認爲系統還有多少內存;
基於應用角度考慮(計算已使用內存時減去buffers/cache,計算可使用內存時加上buffers/cache)的內存情況,也可理解爲真實的內存使用情況
這裏的話我係統可用內存實際爲:可用823M,已使用156M,而不是513M和467M.
這裏還用兩個等式:
156 =used(467) - buffers(58) - cached(251)
823 = free(513) + buffers(58) + cached(251)

  • 第三行是交換分區SWAP的,也就是我們通常所說的虛擬內存。

Linux內核爲了提高讀寫效率與速度,會將文件在內存中進行緩存,這部分內存就是Cache Memory(緩存內存)。即使你的程序運行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程序頻繁讀寫文件後,你會發現可用物理內存變少。當系統的物理內存不夠用的時候,就需要將物理內存中的一部分空間釋放出來,以供當前運行的程序使用。那些被釋放的空間可能來自一些很長時間沒有什麼操作的程序,這些被釋放的空間被臨時保存到Swap空間中,等到那些程序要運行時,再從Swap分區中恢復保存的數據到內存中。這樣,系統總是在物理內存不夠時,才進行Swap交換。

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