国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

Buffer和Cache的定義

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

掃碼添加小助手

加入工程師交流群

BufferCache 的定義:

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

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

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

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

free 命令

要檢查系統內存使用情況,您想到的第一個命令可能是 free ,例如:

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

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

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

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

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

/proc 文件系統也是許多性能工具的最終數據源。在 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.

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

實驗

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

寫入 Cache

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

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

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

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

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

接下來,轉移到終端 2 并運行以下命令:

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

現在切換回終端 1,并觀察 buffcache 的變化:

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

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

讀取 Buffer

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

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

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

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

您可以看到此時 buff0。現在在終端 2 中,運行以下命令:

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

然后,回到終端 1 觀察:

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

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

現在我們幾乎可以得出結論:

讀取文件時數據會緩存在 Cache 中,讀取磁盤時數據會緩存在 Buffer 中。

結論

在這里您應該會發現,雖然本文對 BufferCache 進行了描述,但仍然無法涵蓋所有細節。我們如今學到了以下兩點:

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

審核編輯 :李倩


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

    關注

    1

    文章

    398

    瀏覽量

    26470
  • buffer
    +關注

    關注

    2

    文章

    120

    瀏覽量

    31100
  • 命令
    +關注

    關注

    5

    文章

    755

    瀏覽量

    23744

原文標題:Linux 內存中的緩沖區(Buffer)與緩存(Cache)

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

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    在GUI GUIDER中如何啟用eSingle Buffer

    這一問題,行業長期依賴雙緩沖(Ping-pong Buffer) 或 多緩沖(Multi Buffer),用更多顯存換來更穩定的刷新體驗。
    的頭像 發表于 02-09 09:43 ?386次閱讀
    在GUI GUIDER中如何啟用eSingle <b class='flag-5'>Buffer</b>

    請問030系列集成的PreFetch 和 Cache怎么用呀?

    各位大佬,030系列集成的PreFetch 和 Cache怎么用呀?有這方面的demo或者pdf操作流程么?
    發表于 01-19 07:07

    深入解析DS25MB100:2.5 Gbps 2:1/1:2 CML Mux/Buffer的卓越性能與應用

    深入解析DS25MB100:2.5 Gbps 2:1/1:2 CML Mux/Buffer的卓越性能與應用 一、引言 在高速數據通信領域,信號的高效傳輸和處理至關重要。DS25MB100作為一款
    的頭像 發表于 12-27 14:10 ?621次閱讀

    瑞薩RA系列FSP庫開發實戰指南之定義傳輸源和目標存儲器

    首先,要使用DMA傳輸,就肯定要有一個源地址和一個目標地址,這里我們定義SRC_Buffer數組的首地址作為源地址,DST_Buffer數組的首地址作為DMAC傳輸的目標地址。SRC_Buff
    的頭像 發表于 12-15 11:09 ?4074次閱讀
    瑞薩RA系列FSP庫開發實戰指南之<b class='flag-5'>定義</b>傳輸源和目標存儲器

    采用Prefetch+Cache架構有什么優勢?

    我看官方說,采用Prefetch+Cache架構同頻CoreMark 計算力/功耗比超越同類產品,這優勢就是低功耗么?要是具體芯片比較的話,應該怎么比?
    發表于 12-11 07:35

    單片機內部FLASH字節操作

    buff [*][i]{ [*][i]cache.u32data=FLSAH_ReadWord(pageaddr+i); [*][i]buffer[i]=cache.buf[0]; [*][i][i
    發表于 11-24 06:40

    STM32H7使用Serial V2框架配合DMA,可以修改DMA的buffer內存位置嗎?

    因為主內存設置在了dtcm,不能被dma訪問,然而serial v2框架開啟dma,緩存使用的是動態分配的內存,要如何修改buffer位置呢
    發表于 10-09 07:04

    USB讀RAM buffer使用規范建議

    Questions:硬件和軟件同時去訪問 USB RAM buffer 造成數據亂掉或丟失 造成亂碼流程: 軟件設置 USB Valid 關總中斷,USB 收數據到 RAM Buffer,此時
    發表于 09-22 17:27

    gd32h737 開啟cache程序跑飛是哪里的問題?

    gd32h737 在rtthread 4.1.1版本上運行,開啟cache功能,程序跑飛,JLink連接失敗的。錯誤信息沒有。配置方式的說明嗎? /*! briefenable the CPU
    發表于 09-11 08:28

    什么情況會導致BUFFER_RYD一直為低電平?

    ,在c++ streamer中檢測是否成接收到USB_BULK數據,結果顯示4014可以接收到USB_BULK數據,4024不能接收到USB_BULK數據。結果如下圖: 2、BUFFER_RDY信號
    發表于 08-14 06:21

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

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

    HarmonyOS應用自定義鍵盤解決方案

    定義鍵盤是一種替換系統默認鍵盤的解決方案,可實現鍵盤個性化交互。允許用戶結合業務需求與操作習慣,對按鍵布局進行可視化重構、設置多功能組合鍵位,使輸入更加便捷和舒適。在安全防護層面,自定義鍵盤可以
    的頭像 發表于 06-05 14:19 ?2393次閱讀

    線束導線長度的定義有哪些?重要嗎?

    關于線束導向長度的定義定義了適當的、準確的導線長度,可用于線束制造。
    的頭像 發表于 03-27 11:46 ?1260次閱讀

    如何在NXP MCU上啟用D-Cache

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

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

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