linux free命令中buffer與cache的區別 ~$ free total used free shared buffers cachedMem: 1025204 981636 43568 0 38244 387808-/+ buffers/cache: 555584 469620Swap: 1931256 162948 1768308 www.2cto.com 也可以通過$watch free看到動態資訊以上為free命令的輸出內容,從中可以得到當前系統記憶體使用量情況.
系統的可用記憶體應該看第二行資料,-buffers/cache=used-buffers-cached+buffers/cache=free+buffers+cached 因為第一行的used包含了系統使用的buffer及cache,而free則沒包含buffer及cache,
這部分也是可以使用的部分.如上所示555584為真正的系統使用記憶體情況,而469620為系統真正的可用記憶體情況. 下面介紹buffer與cache的差別:A buffer is something that has yet to be "written" to disk.A cache is something that has been "read" from the disk and stored for later use.buffer: www.2cto.com 緩衝區,一個用於儲存速度不同步的裝置或優先順序不同的裝置之間傳輸資料的地區。通過緩衝區,可以使進程之間的相互等待變少,從而使從速度慢的裝置讀入資料時,速度快的裝置的操作進程不發生間斷。cache: 快取,是位於CPU與主記憶體間的一種容量較小但速度很高的儲存空間。由於CPU的速度遠高於主記憶體,CPU直接從記憶體中存取資料要等待一定時間周期, Cache中儲存著CPU剛用過或迴圈使用的一部分資料,當CPU再次使用該部分資料時可從Cache中直接調用,這樣就減少了CPU的等待時間,提高了系統的效率。Cache又分為一級Cache(L1 Cache)和二級Cache(L2 Cache),L1 Cache整合在CPU內部,L2 Cache早期一般是焊在主板上,現在也都整合在CPU內部,常見的容量有256KB或512KB L2 Cache。 當你讀寫檔案的時候,Linux核心為了提高讀寫效能與速度,會將檔案在記憶體中進行緩衝,這部分記憶體就是Cache Memory(緩衝記憶體)。即使你的程式運行結束後,Cache Memory也不會自動釋放。這就會導致你在Linux系統中程式頻繁讀寫檔案後,你會發現可用實體記憶體會很少。其實這緩衝記憶體(Cache Memory)在你需要使用記憶體的時候會自動釋放,所以你不必擔心沒有記憶體可用。如果你希望手動去釋放Cache Memory也是有辦法的。如何釋放Cache Memory(緩衝記憶體), 用下面的命令可以釋放Cache Memory:To free pagecache $sync; echo 1>/proc/sys/vm/drop_cachesTo free dentries and inodes: www.2cto.com $sync; echo 2>/proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes: $sync; echo 3>/proc/sys/vm/drop_caches注意,釋放前最好sync一下,防止遺失資料。 free命令中的buffer和cache:(它們都是佔用記憶體): buffer : 作為buffer cache的記憶體,是塊裝置的讀寫緩衝區 cache: 作為page cache的記憶體, 檔案系統的cache 作者 yef.zhu