pagecache的測試和理解

2021-10-24 20:19:56 字數 1474 閱讀 5742

1. sysctl -a檢視系統的一些配置,檢視髒頁的相關配置

[root@node01 ~]

# sysctl -a | grep dirty

vm.dirty_background_ratio = 10

vm.dirty_background_bytes = 0

vm.dirty_ratio = 20

vm.dirty_bytes = 0

vm.dirty_writeback_centisecs = 500

vm.dirty_expire_centisecs = 3000

2. 修改相關配置項
[root@node01 ~]

# vi /etc/sysctl.conf

可以在檔案末尾新增以下配置

pagecache占用 可用記憶體 的閾值(後台) ,達到該值後(這裡是占用可用記憶體的10%),觸發核心寫磁碟或者lru,不會阻塞程式

vm.dirty_background_ratio = 10
pagecache占用 可用記憶體 的閾值(前台),程式向核心寫資料,當pagecache達到了可用記憶體的該閾值,會阻塞程式的寫資料,觸發核心寫磁碟或者lru

vm.dirty_ratio = 20
設定多久(百分之一秒)寫回磁碟

vm.dirty_writeback_centisecs = 500
設定多久丟棄髒頁

vm.dirty_expire_centisecs = 3000
3. pcstat

程式寫資料到磁碟,首先會寫到核心維護的pagecache中,乙個pagecache大小是4k,pagecache被寫了之後會變成dirty

pagecache當達到占用可用記憶體的閾值,才會被寫回磁碟被寫回磁碟的pagecache就不是dirty的了,將來可能會被lru丟掉

如果異常斷電,沒有被寫回磁碟的pagecache裡的資料會丟失

pagecache本身是用來優化io效能的,但是異常斷電時會丟資料

pagecache對應於磁碟的某個區域,如果程序讀檔案發現記憶體裡沒有對應pagecache,就會造成缺頁,核心就會從磁碟讀資料到pagecache,之後程序繼續讀

在redis等快取的設定裡需要注意!(程序快取,核心快取,硬體快取都可能丟資料)

os沒有絕對的資料可靠性,設計pagecache是為了減少硬體io呼叫,優先使用記憶體,提速。

如果想要資料可靠性,可以調成最慢的模式————乙個字元乙個字元直接寫磁碟,但是這樣會造成效能損耗(單點問題),不現實,所以最終出現了主從複製、主備

作業系統中的page cache機制

在現代計算機系統中,cpu,ram,disk的速度不相同,按速度高低排列 為 cpu ram disk。cpu與ram之間 ram與disk之間的速度差異常常是指數級。同時,它們之間的處理容量也不相同,其差異也是指數級。為了在速度和容量上折中,在cpu與ram之間使用cpu cache以提高訪存速度...

Alpha測試和Beta測試的理解和二者的區別

大型通用軟體,在正式發布前,通常需要執行alpha和beta測試,目的是從實際終端使用者的使用角度,對軟體的功能和效能進行測試,以發現可能只有終端使用者才能發現的錯誤。alpha測試是由乙個使用者在開發環境下進行的測試,也可以是公司內部的使用者在模擬實際操作環境下進行的受控測試,alpha測試不能由...

DFS的個人理解和測試例題

例如下圖 從a 起點 開始走,先走abd 在d處發現沒有子節點,推後到節點b,去走eg 到節點g發現又到了盡頭,然後退一步到節點e,發現節點e沒有右節點 再退到節點b,發現b的左右節點都走過了,再退到節點a,去走ac 節點c沒有左子樹,走右子樹f,f是盡頭,退到c,退到a,返回。有三個方面,分別是輸...