buffercachelinux
A. linux 內存 buffer 和 cache 的區別
,
buffer是緩沖,cache是緩存,也就是說cache可以永久保留數據,而buffer只能是在使用的時候起到一個提速的作用,關機或重啟後悔消失
B. Linux中內存buffer和cache的區別
cache是高速緩存,用於CPU和內存之間的緩沖;
buffer是I/O緩存,用於內存和硬碟的緩沖
cache最初用於cpu cache, 主要原因是cpu 與memory, 由於cpu快,memory跟不上,且有些值使用次數多,所以放入
cache中,主要目的是,重復使用, 並且一級\二級物理cache速度快,
buffer主要用於disk與 memory,主要是保護硬碟或減少網路傳輸的次數(內存數據表現dataSet).當然也可以提高速度(不會立即寫入硬碟或直接從硬碟中讀出的數據馬上顯示),重復使用,最初最主要的目的是保護disk,
asp.net的cache有outputcahe與數據cache, 主要目的是重復使用,提高速度,outputcache主要存儲Reader後的頁,一般是多次使用同一個HTML,建議不要varybyparam,不要存多version,
數據cache,如dataSet, dataTable, 等
@page buffer="true", 使用buffer,讓buffer滿後再顯示讀出或寫入,(c中文件輸出也是如此,主要目的是保護硬碟), 也可以提高下次的訪問速度. 在client browse端表現是: true是一次性顯示,要麼不顯示, 中間等, false是一次顯示一些,
這在網路輸出也是如此表現.
對於文件訪問c中默認採用的是buffer = true, 這與asp.net一樣,
相當於Response.write();中當buffer滿後輸出,以減少網路的傳輸次數
<%@ OutputCache Duration="60" VaryByParam="none"%>, 是將asp.net生成的HTML緩存起來,在指定的時間內不需要重新生成html, control.ascx.也有組件緩存(htmlCach)。 dataSet也是如此。DataCache,
cache和buffer都是緩沖區, 在翻譯上,cache翻譯成高速緩沖區要好一點(因為主要是為下次訪問加速), buffer翻譯成緩沖區好點。都是緩沖的作用,可目的有點不同,主要是理解,不需要太咬文嚼字.
C. Linux內存中的 buffer 和 cache 到底是個什麼東東
細心的朋友會注意到,當你在linux下頻繁存取文件後,物理內存會很快被用光,當程序結束後,內存不會被正常釋放,而是一直作為caching.這個問題,貌似有不少人在問,不過都沒有看到有什麼很好解決的辦法.那麼我來談談這個問題.
先來說說free命令
[root@server ~]# free -m
total used free shared buffers cached
Mem: 249 163 86 0 10 94
-/+ buffers/cache: 58 191
Swap: 511 0 511
其中:
total 內存總數
used 已經使用的內存數
free 空閑的內存數
shared 多個進程共享的內存總額
buffers Buffer Cache和cached Page Cache 磁碟緩存的大小
-buffers/cache 的內存數:used - buffers - cached
+buffers/cache 的內存數:free + buffers + cached
可用的memory=free memory+buffers+cached
有了這個基礎後,可以得知,我現在used為163MB,free為86,buffer和cached分別為10,94
那麼我們來看看,如果我執行復制文件,內存會發生什麼變化.
[root@server ~]# cp -r /etc ~/test/
[root@server ~]# free -m
D. linux內存在buff/cache中
兩者都是RAM中的數據。簡單來說,buffer是即將要被寫入磁碟的,而cache是被從磁碟中讀出來的。 緩存(cached)是把讀取過的數據保存起來,重新讀取時若命中(找到需要的數據)就不要去讀硬碟了,若沒有命中就讀硬碟。
E. linux buffer cache 過高
你可以手動free linux的cache
- echo 1 > /proc/sys/vm/drop_caches # 僅清除頁面緩存
- echo 2 > /proc/sys/vm/drop_caches # 清除目錄項和inode
- echo 3 > /proc/sys/vm/drop_caches # 清除頁面緩存、目錄項以及inode
但是這種放時只能在執行的當時起作用,過一段時間之後又會發現內存被占滿,怎麼辦呢?
實際上內核提供了vm.vfs_cache_pressure參數用來控制緩沖區的回收頻率,我們可以調整它。
這個參數是用來控制內核回收VFS緩存的頻率。修改這個值會提高或者降低回收VFS緩存的頻率。值可以設置為0-200中的任意值。越大回收頻率越快,可以把vm.vfs_cache_pressure賦值為200來獲得最快的回收頻率。這個值默認值一般為100。
F. linux中的buffer cache和page cache有何區別
Page cache是vfs文件系統層的cache,例如 對於一個ext3文件系統而言,每個文件都會有一棵radix樹管理文件的緩存頁,這些被管理的緩存頁被稱之為page cache。所以,page cache是針對文件系統而言的。例如,ext3文件系統的頁緩存就是page cache。Buffer cache是針對設備的,每個設備都會有一棵radix樹管理數據緩存塊,這些緩存塊被稱之為buffer cache。通常對於ext3文件系統而言,page cache的大小為4KB,所以ext3每次操作的數據塊大小都是4KB的整數倍。Buffer cache的緩存塊大小通常由塊設備的大小來決定,取值范圍在512B~4KB之間,取塊設備大小的最大公約數。
G. Linux中Buffer和Cache的區別
1、buffer(緩沖)是為了提高內存和硬碟(或其他I/O設備)之間的數據交換的速度而設計的。
2、cache(緩存)
從CPU角度考慮,是為了提高cpu和內存之間的數據交換速度而設計的,例如平常見到的一級緩存、二級緩存、三級緩存。 cpu在執行程序所用的指令和讀數據都是針對內存的,也就是從內存中取得的。由於內存讀寫速度慢,為了提高cpu和內存之間數據交換的速度,在cpu和內存之間增加了cache,它的速度比內存快,但是造價高,又由於在cpu內不能集成太多集成電路,所以一般cache比較小,以後intel等公司為了進一步提高速度,又增加了二級cache,甚至三級cache,它是根據程序的局部性原理而設計的,就是cpu執行的指令和訪問的數據往往在集中的某一塊,所以把這塊內容放入cache後,cpu就不用在訪問內存了,這就提高了訪問速度。當然若cache中沒有cpu所需要的內容,還是要訪問內存的。