Linux free中buffer與cache區別
一、free命令
# free -m
total used free shared buffers cached
Mem: 3072 2459 612 0 207 1803
-/+ buffers/cache: 447 2624
Swap: 1913 0 1913
第2行:
total 記憶體總數 3072
used 已使用的記憶體數 2459
free 空閒的記憶體數 612
shared 當前已經廢棄不用,總是0
buffers Buffer Cache記憶體數 13220
cached Page Cache記憶體數 2720160
關係 total = used + free
第3行:
-/+ buffers/cache的意思:
-buffers/cache 的記憶體數: 447 (等於第1行的 used - buffers - cached)
+buffers/cache 的記憶體數: 2624 (等於第1行的 free + buffers + cached)
注:略出入。
可見-buffers/cache反映的是被程式實實在在吃掉的記憶體,而+buffers/cache反映的是可以挪用的記憶體總數。
第4行單獨針對交換分割槽。
為了提高磁碟存取效率, Linux做了一些精心的設計, 除了對dentry進行快取(用於VFS,加速檔案路徑名到inode的轉換), 還採取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對磁碟塊的讀寫,後者針對檔案inode的讀寫。這些Cache有效縮短了 I/O系統呼叫(如read,write,getdents)的時間。
第2行(mem)的used/free與第3行(-/+ buffers/cache) used/free的區別:
這
兩個的區別在於使用的角度.第2行是從OS的角度來看,因為對於OS,buffers/cached
都是屬於被使用,所以他的可用記憶體是612MB,已用記憶體是2059MB,其中包括,核心(OS)使用+Application(X,
oracle,etc)使用的+buffers+cached.
第3行
所指的是從應用程式角度來看,對於應用程式來說,buffers/cached
是可用的,因為buffer/cached是為了提高檔案讀取的效能而設,當應用程式要用到記憶體的時候,buffer/cached會很快地被回收。所以
從應用程式的角度來說,可用記憶體=系統free memory+buffers+cached.
如上例:
2624 = 612+207+1803
二、buffers與cached的區別:
buffers 是用來給塊裝置做的緩衝大小,他只記錄檔案系統的metadata以及 tracking in-flight pages。
cached 是用來給檔案做緩衝。
即:buffers是用來儲存目錄裡面有什麼內容,許可權等等,而cached用來記憶我們開啟的檔案.
如果你想知道他是不是真的生效,你可以試一下,先後執行兩次命令#man kill ,你就可以明顯的感覺到第二次的開打的速度快很多。
實驗:在一臺沒有什麼應用的機器上做會看得比較明顯。記得實驗只能做一次,如果想多做請換一個檔名。
#free
#man kill
#free
#man kill
#free
比較一下free先後顯示的buffers的大小。
另一個實驗:
#free
#ls /dev
#free
比較一下兩個的大小,當然這個buffers隨時都在增加,但有ls過的話,增加的速度會變得快,這個就是buffers/chached的區別。
因為Linux會將暫時不使用的記憶體作為檔案和資料快取,以提高系統效能,當應用程式需要這些記憶體時,系統會自動釋放(不像windows那樣,即使你有很多空閒記憶體,他也要訪問一下磁碟中的pagefiles)
記憶體交換條件及方式:
當可用記憶體小於額定值的時候,就會開始進行交換.
如何看額定值(RHEL4.0)
#cat /proc/meminfo
交換將透過三個途徑來減少系統中使用的物理頁面的個數:
1.減少緩衝與頁面cache的大小;
2.將系統V型別的記憶體頁面交換出支;
3.換出或者丟棄頁面。(Application 佔用的記憶體頁,也就是實體記憶體不足)。
事實上,少量地使用swap是不會影響到系統效能的。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26812308/viewspace-2121492/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux Buffer/Cache 的區別Linux
- buffer與cache的區別
- Cache和Buffer都是快取,有什麼區別?Linux快取Linux
- Cache 和 Buffer 的區別在哪裡?
- Cache 和 Buffer 有什麼區別?
- 【linux】free命令中cached和buffers的區別Linux
- Linux free 命令中cached 和 buffers 的區別Linux
- 計算機buffer和cache的區別?linux運維學習知識計算機Linux運維
- free 與 CFRelease 的區別
- PostgreSQL DBA(89) - Linux(Buffer vs Cache)SQLLinux
- Linux記憶體、Swap、Cache、BufferLinux記憶體
- Oracle Free Buffer WaitsOracleAI
- IO之核心buffer----"buffer cache"
- Linux工具效能調優系列二:buffer和cacheLinux
- Linux如何手動釋放Swap、Buffer和CacheLinux
- Oracle Cache Buffer ChainsOracleAI
- DDK中"checked build"和"free build" 之區別UI
- 手動釋放Linux上的Swap、Buffer和CacheLinux
- Service Worker Cache 和 HTTP Cache 的區別HTTP
- 33、buffer_cache_3(redo的產生、LRBA、buffer cache裡的等待事件)事件
- Buffer Cache以及buffer busy waits/gc相關事件AIGC事件
- 【BUFFER】Oracle buffer cache之 latch 學習記錄Oracle
- [20231023]備庫與alter system flush buffer_cache.txt
- 【Cache】將常用的“小表”快取到Buffer Cache快取
- Client Side Cache 和 Server Side Cache 的區別clientIDEServer
- Linux中檔案與目錄的區別Linux
- 清理buffer/cache/swap的方法梳理
- Linux中“>”和“>>”的區別Linux
- 調整緩衝區快取記憶體(Buffer Cache)的效能(轉)快取記憶體
- Linux中wget、yum與apt-get用法及區別Linuxwgetapt-get
- Linux系統中rpm與yum的區別是什麼?Linux
- 【Linux學習教程】Linux中tcp與tcp6區別是什麼?LinuxTCP
- buffer cache深度分析及效能調整(五)
- buffer cache深度分析及效能調整(四)
- buffer cache深度分析及效能調整(六)
- Javascript中“==”與“===”的區別JavaScript
- Python中 ‘==‘ 與‘is‘的區別Python
- Linux的優缺點,Linux與windows的區別LinuxWindows
- Linux中什麼是打包?與歸檔有什麼區別?Linux