linux系統讀寫快取

2021-06-26 08:03:54 字數 1888 閱讀 3382

1.  作業系統快取

在linux世界裡,一切可讀寫裝置都可看作是檔案。檔案cache設計的好壞直接影響著檔案系統和磁碟的效能。

最直觀的是使用free命令看到的cached列。

這裡面的cached列就是作業系統快取,作業系統會把空閒的記憶體拿來做快取,提高系統效能。當然這裡的cached不僅僅快取檔案的資料。

作業系統的cache是通過page的方式管理的,內從管理系統分配和**cache的最小單位是page。這個cache由多個page cache組成,每個page cache又包含多個buffer cache。

vf(虛擬檔案系統)和內從管理系統只與page cache互動,具體的檔案系統和buffer cache互動。

2. 作業系統快取讀寫方式

作業系統預設的讀寫都是有快取的,如果想使用直接io,需要設定direct_io為true。快取可以提高系統的讀取速度,當第一次讀取乙個檔案的時候,作業系統會把檔案內從讀入cache中,然後返回給使用者;第二次讀取的時候首先會從cache中檢查,命中後返回給使用者。

作業系統io有通寫和回寫兩種寫方式:

write through(通寫)

可以理解io通過的地方都寫入。這種方式在寫資料時,先寫cache再寫磁碟,寫磁碟成功後通知磁碟控制器返告知作業系統本次io成功,作業系統再通知上層應用io成功。

write back(回寫)

作業系統把資料寫入cache後便告知上層應用io成功,其實此時並沒有把資料持久化到磁碟介質。何時把cache刷入磁碟由作業系統的實現策略:比如cache空間滿、呼叫sync顯示的把cache刷入磁碟等。

注意:回寫和非同步寫不同,非同步寫在寫成功後會通知呼叫層,而回寫在寫入磁碟後不會通知呼叫層。所以回寫成功只意味著寫入作業系統快取成功了,在返回io返回成功的情況下依然可能丟資料;而非同步寫告訴呼叫層io成功意味著資料已經被持久化到儲存介質中了。

通寫和回寫優缺點:

write through

優點:無丟資料風險:由於返回io成功即表示持久化成功,那麼掉電也不會丟失任何資料,

缺點:寫入速度慢:要寫記憶體和磁碟兩份資料

write back

優點: 寫入速度快:只要寫入cache成功即可返回

缺點:有丟資料風險:如果cache中的資料沒有刷入磁碟時斷電,cache中的資料會丟失。

兩種方式應用場景:

write through 一般應用在資料一致性要求高的場合

write back 寫方式一般應用在對一致性要求不高且需要很好讀寫效能場景

下面以cp命令做個例子

a. 初始時系統cache為60m

b. 使用dd命令生成乙個10m的塊裝置,此時iotest.dat資料被快取到cache中,cache變為70m

c. cp iotest.dat iotest.dat.1 會直接從記憶體中讀取iotest.dat檔案,然後寫入到cache中。

難道cache此時快取了兩份iotest.dat的資料?

d. 繼續呼叫cp iotest.dat iotest.dat.2,cache變為了90m。可見cache中寫時快取不會對內容去重,快取了3分相同內容的檔案(iotest.dat iotest.dat.1 iotest.dat.2)。

e. 繼續呼叫cp iotest.dat iotest.dat.1,由於在cache中iotest.dat 和iotest.dat.1都已被快取,所以此處cache不在發生變化。(此處猜測cache支援檔案級別去重,不支援內容去重)

Linux檔案讀寫與快取

題外話 每日七點,qq qq群號 630300475 正題 發自 快取 快取是用來減少高速裝置訪問低速裝置所需平均時間的元件,檔案讀寫涉及到計算機記憶體和磁碟,記憶體操作速度遠遠大於磁碟,如果每次呼叫read,write都去直接操作磁碟,一方面速度會被限制,一方面也會降低磁碟使用壽命,因此不管是對磁...

Linux清除系統快取

1 快取機制介紹 在linux系統中,為了提高檔案系統效能,核心利用一部分物理記憶體分配出緩衝區,用於快取系統操作和資料檔案,當核心收到讀寫的請求時,核心先去快取區找是否有請求的資料,有就直接返回,如果沒有則通過驅動程式直接操作磁碟。快取機制優點 減少系統呼叫次數,降低cpu上下文切換和磁碟訪問頻率...

linux系統快取機制

1 快取機制 為了提高檔案系統效能,核心利用一部分物理記憶體分配出緩衝區,用於快取系統操作和資料檔案,當核心收到讀寫的請求時,核心先去快取區找是否有請求的資料,有就直接返回,如果沒有則通過驅動程式直接操作磁碟。快取機制優點 減少系統呼叫次數,降低cpu上下文切換和磁碟訪問頻率。cpu上下文切換 cp...