linux中free命令中cache和buffer的區(qū)別

參考:凌筱的博客

摘要: cache是高速緩存往核,用于CPU和內(nèi)存之間的緩沖瞧栗;buffer是I/O緩存尝蠕,用于內(nèi)存和硬盤的緩沖列肢。

Linux中free顯示內(nèi)存中buffer與cache的區(qū)別
當(dāng)你在linux下頻繁存取文件后,物理內(nèi)存會(huì)很快被用光,當(dāng)程序結(jié)束后,內(nèi)存不會(huì)被正常釋放,而是一直作為caching.
先來(lái)說(shuō)說(shuō)free命令
常用參數(shù)b 以字節(jié)為單位顯示血柳。-k 以KB為單位顯示官册。默認(rèn)顯示。-m 以MB為單位顯示难捌。-s 每隔多少秒重復(fù)執(zhí)行膝宁。可編寫一個(gè)腳本用于監(jiān)控根吁。
[root@ centos ~]# free -m

00.png

其中:
total 內(nèi)存總數(shù)
used 已經(jīng)使用的內(nèi)存數(shù)
free 空閑的內(nèi)存數(shù)
shared 多個(gè)進(jìn)程共享的內(nèi)存總額
buffers Buffer Cache和cached Page Cache 磁盤緩存的大小
-buffers/cache 的內(nèi)存數(shù):used - buffers – cached 表示一個(gè)應(yīng)用程序認(rèn)為系統(tǒng)被用掉多少內(nèi)存员淫;
+buffers/cache 的內(nèi)存數(shù):free + buffers + cached表示一個(gè)應(yīng)用程序認(rèn)為系統(tǒng)還有多少內(nèi)存;
可用的memory=free memory+buffers+cached
有了這個(gè)基礎(chǔ)后,可以得知,我現(xiàn)在used為461MB,free為527,buffer為24击敌,cached為188
那么我們來(lái)看看,如果我執(zhí)行復(fù)制文件,內(nèi)存會(huì)發(fā)生什么變化.
[root@ centos ~]# cp -r /etc ~/test/[root@ centos ~]# free -m

01.png

在命令執(zhí)行結(jié)束后,used為863MB,free為125MB,buffers為22MB,cached為168MB, cached數(shù)據(jù)明顯增加介返,這是為了提高文件讀取效率的做法.
為了提高磁盤存取效率, Linux做了一些精心的設(shè)計(jì), 除了對(duì)dentry進(jìn)行緩存(用于VFS,加速文件路徑名到inode的轉(zhuǎn)換), 還采取了兩種主要Cache方式:Buffer Cache和Page Cache。前者針對(duì)磁盤塊的讀寫沃斤,后者針對(duì)文件inode的讀寫圣蝎。這些Cache有效縮短了 I/O系統(tǒng)調(diào)用(比如read,write,getdents)的時(shí)間。"
那么有人說(shuō)過(guò)段時(shí)間,linux會(huì)自動(dòng)釋放掉所用的內(nèi)存,我們使用free再來(lái)試試,看看是否有釋放?
[root@ centos ~]# free -m

02.png

MS沒(méi)有任何變化,那么我能否手動(dòng)釋放掉這些內(nèi)存呢???回答是可以的!
/proc是一個(gè)虛擬文件系統(tǒng),我們可以通過(guò)對(duì)它的讀寫操作做為與kernel實(shí)體間進(jìn)行通信的一種手段.也就是說(shuō)可以通過(guò)修改/proc中的文件,來(lái)對(duì)當(dāng)前kernel的行為做出調(diào)整.那么我們可以通過(guò)調(diào)整/proc/sys/vm/drop_caches來(lái)釋放內(nèi)存.操作如下:
[root@ centos test]# cat /proc/sys/vm/drop_caches
0
首先,/proc/sys/vm/drop_caches的值,默認(rèn)為0
[root@ centos test]# sync
手動(dòng)執(zhí)行sync命令(描述:sync 命令運(yùn)行 sync 子例程衡瓶。如果必須停止系統(tǒng)徘公,則運(yùn)行 sync 命令以確保文件系統(tǒng)的完整性。sync 命令將所有未寫的系統(tǒng)緩沖區(qū)寫到磁盤中哮针,包含已修改的 i-node步淹、已延遲的塊 I/O 和讀寫映射文件)
[root@ centos test]# echo 3 > /proc/sys/vm/drop_caches
[root@ centos test]# cat /proc/sys/vm/drop_caches
3
將/proc/sys/vm/drop_caches值設(shè)為3
再來(lái)運(yùn)行free命令,發(fā)現(xiàn)現(xiàn)在的used為66MB,free為182MB,buffers為0MB,cached為11MB.那么有效的釋放了buffer和cache.
有關(guān)/proc/sys/vm/drop_caches的用法在下面進(jìn)行了說(shuō)明

/proc/sys/vm/drop_caches (since Linux 2.6.16)
Writing to this file causes the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free.
To free pagecache, use echo 1 > /proc/sys/vm/drop_caches;
to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches.
Because this is a non-destructive operation and dirty objects are not freeable, the user should run sync(8) first.
========================================================================

buffer 與cache 的區(qū)別
  對(duì)于共享內(nèi)存(Shared memory),主要用于在UNIX 環(huán)境下不同進(jìn)程之間共享數(shù)據(jù)诚撵,是進(jìn)程間通信的一種方法缭裆,一般的應(yīng)用程序不會(huì)申請(qǐng)使用共享內(nèi)存
  Cache:高速緩存,是位于CPU與主內(nèi)存間的一種容量較小但速度很高的存儲(chǔ)器寿烟。由于CPU的速度遠(yuǎn)高于主內(nèi)存澈驼,CPU直接從內(nèi)存中存取數(shù)據(jù)要等待一定時(shí)間周期,Cache中保存著CPU剛用過(guò)或循環(huán)使用的一部分?jǐn)?shù)據(jù)筛武,當(dāng)CPU再次使用該部分?jǐn)?shù)據(jù)時(shí)可從Cache中直接調(diào)用,這樣就減少了CPU的等待時(shí)間,提高了系統(tǒng)的效率缝其。Cache又分為一級(jí)Cache(L1 Cache)和二級(jí)Cache(L2 Cache),L1 Cache集成在CPU內(nèi)部徘六,L2 Cache早期一般是焊在主板上,現(xiàn)在也都集成在CPU內(nèi)部内边,常見(jiàn)的容量有256KB或512KB L2 Cache。
  Buffer:緩沖區(qū)待锈,一個(gè)用于存儲(chǔ)速度不同步的設(shè)備或優(yōu)先級(jí)不同的設(shè)備之間傳輸數(shù)據(jù)的區(qū)域漠其。通過(guò)緩沖區(qū),可以使進(jìn)程之間的相互等待變少,從而使從速度慢的設(shè)備讀入數(shù)據(jù)時(shí)和屎,速度快的設(shè)備的操作進(jìn)程不發(fā)生間斷拴驮。

Free中的buffer和cache:(它們都是占用內(nèi)存):
  buffer : 作為buffer cache的內(nèi)存,是塊設(shè)備的讀寫緩沖區(qū)
  cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache.
如果 cache 的值很大柴信,說(shuō)明cache住的文件數(shù)很多套啤。如果頻繁訪問(wèn)到的文件都能被cache住,那么磁盤的讀IO bi會(huì)非常小随常。

cache是高速緩存潜沦,用于CPU和內(nèi)存之間的緩沖;buffer是I/O緩存绪氛,用于內(nèi)存和硬盤的緩沖cache最初用于cpu cache, 主要原因是cpu 與memory, 由于cpu快,memory跟不上,且有些值使用次數(shù)多,所以放入cache中止潮,主要目的是,重復(fù)使用, 并且一級(jí)\二級(jí)物理cache速度快钞楼,buffer主要用于disk 與 memory喇闸,主要是保護(hù)硬盤或減少網(wǎng)絡(luò)傳輸?shù)拇螖?shù)(內(nèi)存數(shù)據(jù)表現(xiàn)dataSet).當(dāng)然也可以提高速度(不會(huì)立即寫入硬盤或直接從硬盤中讀出的數(shù)據(jù)馬上顯示),重復(fù)使用.
Free中的buffer和cache:(它們都是占用內(nèi)存):  buffer : 作為buffer cache的內(nèi)存询件,是塊設(shè)備的讀寫緩沖區(qū)  cache: 作為page cache的內(nèi)存, 文件系統(tǒng)的cache  如果 cache 的值很大燃乍,說(shuō)明cache住的文件數(shù)很多。如果頻繁訪問(wèn)到的文件都能被cache住宛琅,那么磁盤的讀IO bi會(huì)非常小刻蟹。

# sync# echo 1 > /proc/sys/vm/drop_caches echo 2 > /proc/sys/vm/drop_caches echo 3 > /proc/sys/vm/drop_caches cache釋放:To free pagecache:echo 1 > /proc/sys/vm/drop_cachesTo free dentries and inodes:echo 2 > /proc/sys/vm/drop_cachesTo free pagecache, dentries and inodes:echo 3 > /proc/sys/vm/drop_caches
說(shuō)明,釋放前最好sync一下嘿辟,防止丟數(shù)據(jù)舆瘪。
因?yàn)長(zhǎng)INUX的內(nèi)核機(jī)制,一般情況下不需要特意去釋放已經(jīng)使用的cache红伦。這些cache起來(lái)的內(nèi)容可以增加文件以及的讀寫速度英古。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市昙读,隨后出現(xiàn)的幾起案子召调,更是在濱河造成了極大的恐慌,老刑警劉巖蛮浑,帶你破解...
    沈念sama閱讀 222,681評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件唠叛,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡沮稚,警方通過(guò)查閱死者的電腦和手機(jī)艺沼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,205評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)蕴掏,“玉大人障般,你說(shuō)我怎么就攤上這事调鲸。” “怎么了剩拢?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,421評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵线得,是天一觀的道長(zhǎng)饶唤。 經(jīng)常有香客問(wèn)我徐伐,道長(zhǎng),這世上最難降的妖魔是什么募狂? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,114評(píng)論 1 300
  • 正文 為了忘掉前任办素,我火速辦了婚禮,結(jié)果婚禮上祸穷,老公的妹妹穿的比我還像新娘性穿。我一直安慰自己,他們只是感情好雷滚,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,116評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布需曾。 她就那樣靜靜地躺著,像睡著了一般祈远。 火紅的嫁衣襯著肌膚如雪呆万。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,713評(píng)論 1 312
  • 那天车份,我揣著相機(jī)與錄音谋减,去河邊找鬼。 笑死扫沼,一個(gè)胖子當(dāng)著我的面吹牛出爹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播缎除,決...
    沈念sama閱讀 41,170評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼严就,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了器罐?” 一聲冷哼從身側(cè)響起盈蛮,我...
    開(kāi)封第一講書(shū)人閱讀 40,116評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎技矮,沒(méi)想到半個(gè)月后抖誉,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,651評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡衰倦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,714評(píng)論 3 342
  • 正文 我和宋清朗相戀三年袒炉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片樊零。...
    茶點(diǎn)故事閱讀 40,865評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡我磁,死狀恐怖孽文,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情夺艰,我是刑警寧澤芋哭,帶...
    沈念sama閱讀 36,527評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站郁副,受9級(jí)特大地震影響减牺,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜存谎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,211評(píng)論 3 336
  • 文/蒙蒙 一拔疚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧既荚,春花似錦稚失、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,699評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至晴叨,卻和暖如春凿宾,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背篙螟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,814評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工菌湃, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人遍略。 一個(gè)月前我還...
    沈念sama閱讀 49,299評(píng)論 3 379
  • 正文 我出身青樓惧所,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绪杏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子下愈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,870評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容