日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux flush 保证 磁盘,linux cache介绍及控制

發(fā)布時間:2025/3/19 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux flush 保证 磁盘,linux cache介绍及控制 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

參考文檔

有關(guān)Cache

文件緩存是提升性能的重要手段。毋庸置疑,讀緩存(Read caching)在絕大多數(shù)情況下是有益無害的(程序可以直接從RAM中讀取數(shù)據(jù)),而寫緩存(Write caching)則相對復(fù)雜。Linux內(nèi)核將寫磁盤的操作分解成了,先寫緩存,每隔一段時間再異步地將緩存寫入磁盤。這提升了IO讀寫的速度,但存在一定風(fēng)險。數(shù)據(jù)沒有及時寫入磁盤,所以存在數(shù)據(jù)丟失的風(fēng)險。

同樣,也存在cache被寫爆的情況。還可能出現(xiàn)一次性往磁盤寫入過多數(shù)據(jù),以致使系統(tǒng)卡頓。之所以卡頓,是因為系統(tǒng)認(rèn)為,緩存太大用異步的方式來不及把它們都寫進(jìn)磁盤,于是切換到同步的方式寫入。(異步,即寫入的同時進(jìn)程能正常運行;同步,即寫完之前其他進(jìn)程不能工作)。

好消息是,你可以根據(jù)實際情況,對寫緩存進(jìn)行配置。

可以看一下這些參數(shù):

[root@host ~]# 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

vm.dirty_background_ratio 是內(nèi)存可以填充“臟數(shù)據(jù)”的百分比。這些“臟數(shù)據(jù)”在稍后是會寫入磁盤的,pdflush/flush/kdmflush這些后臺進(jìn)程會稍后清理臟數(shù)據(jù)。舉一個例子,我有32G內(nèi)存,那么有3.2G的內(nèi)存可以待著內(nèi)存里,超過3.2G的話就會有后來進(jìn)程來清理它。

vm.dirty_ratio 是絕對的臟數(shù)據(jù)限制,內(nèi)存里的臟數(shù)據(jù)百分比不能超過這個值。如果臟數(shù)據(jù)超過這個數(shù)量,新的IO請求將會被阻擋,直到臟數(shù)據(jù)被寫進(jìn)磁盤。這是造成IO卡頓的重要原因,但這也是保證內(nèi)存中不會存在過量臟數(shù)據(jù)的保護(hù)機(jī)制。

vm.dirty_expire_centisecs 指定臟數(shù)據(jù)能存活的時間。在這里它的值是30秒。當(dāng) pdflush/flush/kdmflush 進(jìn)行起來時,它會檢查是否有數(shù)據(jù)超過這個時限,如果有則會把它異步地寫到磁盤中。畢竟數(shù)據(jù)在內(nèi)存里待太久也會有丟失風(fēng)險。

vm.dirty_writeback_centisecs 指定多長時間 pdflush/flush/kdmflush 這些進(jìn)程會起來一次。

可以通過下面方式看內(nèi)存中有多少臟數(shù)據(jù):

[root@host ~]# cat /proc/vmstat | egrep "dirty|writeback"

nr_dirty 69

nr_writeback 0

nr_writeback_temp 0

這說明了,我有69頁的臟數(shù)據(jù)要寫到磁盤里。

情景1:減少Cache

你可以針對要做的事情,來制定一個合適的值。

在一些情況下,我們有快速的磁盤子系統(tǒng),它們有自帶的帶備用電池的NVRAM caches,這時候把數(shù)據(jù)放在操作系統(tǒng)層面就顯得相對高風(fēng)險了。所以我們希望系統(tǒng)更及時地往磁盤寫數(shù)據(jù)。

可以在/etc/sysctl.conf中加入下面兩行,并執(zhí)行"sysctl -p"

vm.dirty_background_ratio = 5

vm.dirty_ratio = 10

這是虛擬機(jī)的典型應(yīng)用。不建議將它設(shè)置成0,畢竟有點后臺IO可以提升一些程序的性能。

情景2:增加Cache

在一些場景中增加Cache是有好處的。例如,數(shù)據(jù)不重要丟了也沒關(guān)系,而且有程序重復(fù)地讀寫一個文件。允許更多的cache,你可以更多地在內(nèi)存上進(jìn)行讀寫,提高速度。

vm.dirty_background_ratio = 50

vm.dirty_ratio = 80

有時候還會提高vm.dirty_expire_centisecs 這個參數(shù)的值,來允許臟數(shù)據(jù)更長時間地停留。

情景3:增減兼有

有時候系統(tǒng)需要應(yīng)對突如其來的高峰數(shù)據(jù),它可能會拖慢磁盤。(比如說,每個小時開始時進(jìn)行的批量操作等)

這個時候需要容許更多的臟數(shù)據(jù)存到內(nèi)存,讓后臺進(jìn)程慢慢地通過異步方式將數(shù)據(jù)寫到磁盤當(dāng)中。

vm.dirty_background_ratio = 5

vm.dirty_ratio = 80

這個時候,后臺進(jìn)行在臟數(shù)據(jù)達(dá)到5%時就開始異步清理,但在80%之前系統(tǒng)不會強(qiáng)制同步寫磁盤。這樣可以使IO變得更加平滑。

從/proc/vmstat, /proc/meminfo, /proc/sys/vm中可以獲得更多資訊來作出調(diào)整。

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的linux flush 保证 磁盘,linux cache介绍及控制的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。