一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Buffer和Cache的定義

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-05-13 09:53 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

BufferCache 的定義:

  • Buffer:是原始磁盤塊的臨時存儲,即將緩存數(shù)據(jù)寫入磁盤。它通常不會很大(大約 20MB)。這樣,內(nèi)核就可以將分散的寫入集中起來,從而對磁盤寫入進行統(tǒng)一優(yōu)化。例如,多個小的寫入可以合并為一個大的寫入等。

  • Cache:是用于從磁盤讀取文件的頁面緩存,用于緩存從文件中讀取的數(shù)據(jù)。這樣,下次訪問這些文件數(shù)據(jù)時,可以直接從內(nèi)存中快速取回,而無需再次訪問緩慢的磁盤。

但是讓我問你,由于 Buffer 只是將寫入磁盤的數(shù)據(jù)的緩存。反過來,它還會緩存從磁盤讀取的數(shù)據(jù)嗎?或者 Cache 是從文件中讀取數(shù)據(jù)的緩存,那么它是否也為寫入文件緩存數(shù)據(jù)呢?

如果你能回答以上兩個問題,你可以跳過這篇文章,我想你已經(jīng)對 BufferCache 有了很好的理解。但如果你不能,請留下來看看我的進一步解釋。

free 命令

要檢查系統(tǒng)內(nèi)存使用情況,您想到的第一個命令可能是 free ,例如:

$free-h
totalusedfreesharedbuff/cacheavailable
Mem:1.9G1.0G394M2.6M491M728M
Swap:0B0B0B

很明顯,該輸出包括了物理內(nèi)存 MemSwap 的具體使用情況(如總內(nèi)存、已用內(nèi)存、緩存、可用內(nèi)存等)。緩存是 BufferCache 兩部分的總和。

讓我們看一下 free 的手冊頁中的 BufferCache 定義:

buffers
Memoryusedbykernelbuffers(Buffersin/proc/meminfo)
cacheMemoryusedbythepagecacheandslabs(CachedandSReclaimablein/proc/meminfo)
buff/cache
Sumofbuffersandcache

我們可以看到 free 命令的源數(shù)據(jù)實際上存儲在 proc/meminfo 文件中。正如我前面提到的,/procLinux 內(nèi)核提供的一個特殊的文件系統(tǒng),它就像一個用戶與內(nèi)核交互的接口。

/proc 文件系統(tǒng)也是許多性能工具的最終數(shù)據(jù)源。在 man proc 中,BuffersCached 的定義如下:

Buffers%lu
Relativelytemporarystorageforrawdiskblocksthatshouldn'tgettremendouslylarge(20MBorso).
Cached%lu
In-memorycacheforfilesreadfromthedisk(thepagecache).Doesn'tincludeSwapCached.
...
SReclaimable%lu(sinceLinux2.6.19)
PartofSlab,thatmightbereclaimed,suchascaches.

SUnreclaim%lu(sinceLinux2.6.19)
PartofSlab,thatcannotbereclaimedonmemorypressure.

至此,您可能認為您已經(jīng)找到了我的問題的答案,“Buffer”只是用于將數(shù)據(jù)寫入磁盤的緩存,“Cache”只是用于從文件中讀取數(shù)據(jù)的緩存。但事實上,“Buffer”也可以用于讀取,“Cache”也可以用于寫入。

實驗

我們將在這里做兩個實驗,寫緩存和讀緩存。

寫入 Cache

讓我們登錄到我們的 Linux 主機并準備好兩個終端。在終端 1,讓我們先清理緩存

c2f2f4ae-d25e-11ec-bce3-dac502259ad0.png

這里 /proc/sys/vm/drop_caches 是一個通過 proc 文件系統(tǒng)修改內(nèi)核行為的例子。寫入 3 意味著清理各種緩存,例如文件頁、目錄條目和 Inode。

仍然在終端 1,讓我們開啟 vmstat 2 命令:

c3058236-d25e-11ec-bce3-dac502259ad0.png
  • buffcache 就是我們前面看到的 BufferCache,單位是 KB。
  • bibo 分別表示塊設(shè)備讀取和寫入的大小,以塊/s 為單位。由于 Linux 中的塊大小為 1KB,因此這個單位相當于 KB/s。

接下來,轉(zhuǎn)移到終端 2 并運行以下命令:

c31a58e6-d25e-11ec-bce3-dac502259ad0.png

現(xiàn)在切換回終端 1,并觀察 buffcache 的變化:

c32ecd6c-d25e-11ec-bce3-dac502259ad0.png

通過觀察 vmstat 的輸出,我們發(fā)現(xiàn)運行 dd 命令時,Cache 一直在增長,而 Buffer 基本沒有變化。

讀取 Buffer

現(xiàn)在,讓我們做第二個實驗。再次清除終端 1中的緩存

c34774d4-d25e-11ec-bce3-dac502259ad0.png

同樣在終端 1 中,再次啟動 vmstat 2 命令:

c36567fa-d25e-11ec-bce3-dac502259ad0.png

您可以看到此時 buff0?,F(xiàn)在在終端 2 中,運行以下命令:

c37f4dc8-d25e-11ec-bce3-dac502259ad0.png

然后,回到終端 1 觀察:

c3991460-d25e-11ec-bce3-dac502259ad0.png

觀察 vmstat 的輸出,你會發(fā)現(xiàn)在讀盤的時候(也就是 bi > 0 的時候),BufferCache 都在增長,但是顯然 Buffer 的增長要快很多。這意味著當從磁盤讀取時,數(shù)據(jù)被緩存在 Buffer 中。

現(xiàn)在我們幾乎可以得出結(jié)論:

讀取文件時數(shù)據(jù)會緩存在 Cache 中,讀取磁盤時數(shù)據(jù)會緩存在 Buffer 中。

結(jié)論

在這里您應該會發(fā)現(xiàn),雖然本文對 BufferCache 進行了描述,但仍然無法涵蓋所有細節(jié)。我們?nèi)缃駥W到了以下兩點:

  • Buffer:既可以用作“要寫入磁盤的數(shù)據(jù)緩存”,也可以用作“讀取磁盤讀的數(shù)據(jù)緩存”。
  • Cache:既可以用作“從讀取文件的頁面緩存”,也可以用作“寫入文件的頁面緩存”。

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 磁盤
    +關(guān)注

    關(guān)注

    1

    文章

    390

    瀏覽量

    25840
  • buffer
    +關(guān)注

    關(guān)注

    2

    文章

    120

    瀏覽量

    30633
  • 命令
    +關(guān)注

    關(guān)注

    5

    文章

    737

    瀏覽量

    22890

原文標題:Linux 內(nèi)存中的緩沖區(qū)(Buffer)與緩存(Cache)

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    STM32H7的MPU配置與D-Cache沖突如何解決???

    現(xiàn)象??: STM32H743 MPU 與 D-Cache 沖突問題詳細描述** 硬件環(huán)境 MCU 型號 :STM32H743VIT6 開發(fā)板 :自定義板(或 STM32H743I-EVAL 等
    發(fā)表于 06-23 17:32

    如何在NXP MCU上啟用D-Cache?

    Data Cache,我已經(jīng)能夠減少其他 MCU 的推理時間。我想知道如何在 NXP MCU 上啟用 D-Cache。任何其他性能提升策略也受到歡迎。
    發(fā)表于 03-27 07:48

    請問驚鴻7110是否支持cache維護指令?

    驚鴻7110是就sifive u74處理器的。查看了一下u74手冊,它是有專門的cache維護指令CFLUSH.D.L1。在賽昉官方版本編譯不通過。請問一下大佬,這個怎么解決呀?
    發(fā)表于 03-10 07:24

    馬達的基本定義

    馬達,即電動機、發(fā)動機的俗稱,以下是幾個關(guān)于馬達的定義 ?: ? 基本定義 ?: 馬達是英語motor的音譯,是一種能夠?qū)㈦娔堋⒘黧w動能、壓縮空氣的內(nèi)能轉(zhuǎn)化為機械能的裝置?12。 ? 電磁裝置定義
    的頭像 發(fā)表于 02-24 11:16 ?4071次閱讀

    DAC5672 buffer處不應該是output類型嗎?

    buffer處不應該是output類型嗎?還是說僅僅IBIS無法仿真?
    發(fā)表于 01-15 07:21

    ADS1256EVM開發(fā)板使能buffer后采集不正常是怎么回事?

    1.5V電池,正接AIN1,負接AIN0 不使能buffer時,采集電池電壓正常: 使能buffer后,采集電池電壓變成這樣: 基本上就是50Hz的工頻干擾。 如果將AIN0和AGND短路,使能buffer是這樣:
    發(fā)表于 12-26 07:03

    什么是緩存(Cache)及其作用

    緩存(Cache)是一種高速存儲器,用于臨時存儲數(shù)據(jù),以便快速訪問。在計算機系統(tǒng)中,緩存的作用是減少處理器訪問主存儲器(如隨機存取存儲器RAM)所需的時間。 緩存(Cache)概述 緩存是一種位于
    的頭像 發(fā)表于 12-18 09:28 ?1.2w次閱讀

    SN74HC14D buffer的數(shù)據(jù)速率是多大?

    該型號buffer的數(shù)據(jù)速率是多大?
    發(fā)表于 11-29 07:10

    請問ADS1256在BUFFER ON狀態(tài)下的輸入偏置電流是多少?

    使用單端模式時,由于外圍電路電阻很大,發(fā)現(xiàn)電壓測量不準確,有幾mV的偏差,而且還不固定。因此推測可能是BUFFER ON時的輸入偏置電流導致的
    發(fā)表于 11-19 08:07

    CDCM61004時鐘Buffer是否支持SSC功能?

    CDCM61004 時鐘Buffer是否支持SSC功能
    發(fā)表于 11-08 16:09

    Cache和內(nèi)存有什么區(qū)別

    Cache(高速緩存)和內(nèi)存(Memory,通常指主存儲器或RAM)是計算機存儲系統(tǒng)中兩個重要的組成部分,它們在計算機的性能和數(shù)據(jù)處理中扮演著不同的角色。以下是對Cache和內(nèi)存之間區(qū)別的詳細解析。
    的頭像 發(fā)表于 09-26 15:28 ?4085次閱讀

    MSPM0 UART通信中DMA和Ring Buffer環(huán)形緩沖的應用

    電子發(fā)燒友網(wǎng)站提供《MSPM0 UART通信中DMA和Ring Buffer環(huán)形緩沖的應用.pdf》資料免費下載
    發(fā)表于 09-05 11:01 ?0次下載
    MSPM0 UART通信中DMA和Ring <b class='flag-5'>Buffer</b>環(huán)形緩沖的應用

    解析Arm Neoverse N2 PMU事件L2D_CACHE_WR

    有客戶希望我們幫忙分析 Eigen gemm 基準測試的一些執(zhí)行情況。具體來說是為什么 L1D_CACHE_WR 的值會低于 L2D_CACHE_WR,這種情況令人費解。
    的頭像 發(fā)表于 09-03 11:42 ?1840次閱讀
    解析Arm Neoverse N2 PMU事件L2D_<b class='flag-5'>CACHE</b>_WR

    采用OPA354設(shè)計的帶有buffer的快速檢波電路,請問外圍元器件的值的設(shè)置依據(jù)是什么?

    TI的仿真 example中,有一個采用OPA354設(shè)計的帶有buffer的快速檢波電路 請問外圍元器件的值的設(shè)置依據(jù)是什么? (即C1,.C2,R1,R2值如何設(shè)計) 謝謝!
    發(fā)表于 08-16 07:54

    請教論壇大神Labview調(diào)用BlueSuite TestEngine.dll問題

    file to write the configuration cache data to. If NULL, the configuration cache data is written
    發(fā)表于 07-31 18:27