Buffer 和 cache (它們都是占用內存)。
Buffer: 系統分配但未被使用的buffer 數量。
Buffer 緩沖區: 是塊設備的讀寫緩沖區,buffer 是I/O 緩存,用於內存和硬盤(或其他 I/O設備)之間的數據交換的速度而設計的。
分析:
1、通常在寫一個非常大的文件,文件會被分成一個個的小 block塊-->一直往內存上寫-->然后再寫入磁盤,, 這個文件非常的大,但是會被分成一個個小的block塊,每次都一點一點的-->寫入內存-->再寫入磁盤, 這樣的效率較慢 。
2、 這種情況下,內存就會攢足一次大的block塊-->再寫入磁盤,這樣的話就不會有第一種情況里的延遲。 這就是buffer.
Cache高速緩存 :cache是高速緩存,用於cpu與內存之間的緩沖。主要原因是cpu與memory,由於cpu快,memory跟不上,且有些值使用次數多,所以放入cache中,主要目的是,使用內存來緩存可能被再次訪問的數據。 Cache 經常被使用在I/O 請求上。為提高系統性能。
從硬盤上讀內容時的情況:
例如 要打開一個非常大的視頻文件從硬盤-->讀到內存--->顯示出來。 第一次打開這個文件的時候需要等待一些時間(視電腦性能),然后第二次打開的時候會比第一次流暢許多。
例如:小明第一次看這個10G的視頻文件,從硬盤-->內存-->顯示,他看完以后就關機了,內存也就清空空間了,但是他回頭一想,電影中的某個情節想再回顧一下,這個時候,從硬盤-->讀到內存 ,這個時候的內存沒有再次從硬盤讀取,而是之前關機有緩存,讀取的時間可能比之前流暢,這就是cache.是為了提高文件讀取效率的做法。
如果 cache 的值很大,說明cache住的文件數很多。如果頻繁訪問到的文件都能被cache住,那么磁盤的讀IO 必會非常小。
現在做個實驗:
現在buff/cache 是100
使用cat b.txt 使文件從硬盤往內存上讀:
Buffer/cache 增加到103
使用內存,也就是在使用buffer 和 cache