最適合我使用的 dirty_background_ratio 和 dirty_ratio 是多少?

最適合我使用的 dirty_background_ratio 和 dirty_ratio 是多少?

所以我正在嘗試dirty_background_ratio and dirty_ratio並希望在您的專業幫助下找到正確的參數。

現在我正在使用:

vm.dirty_background_ratio = 20 vm.dirty_ratio = 60

主要用途是 torrenting,這意味著檔案將透過 torrent 用戶端下載,然後播種。可以同時進行多次下載,這就是為什麼我應該使用 RAM 緩存,並考慮正確的值。

也許你可以建議我正確的價值觀?

答案1

你的想法和價值(大約是它們的兩倍)對我來說似乎沒問題,但你沒有解釋 RAM 的確切含義快取。這裡它更多的是一個緩衝因為髒頁都是未經修改地寫入磁碟的。

如果同一個區塊設備上有很多 IO,稍後就會發生衝突。髒頁數量不是唯一的觸發因素,還有(mm/頁寫回.c):

/*
 * The longest time for which data is allowed to remain dirty
 */
unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */

預設值為 30 秒。這可能就足夠了。但這意味著比該值更舊的髒頁將不會被阻止(緩衝/快取的時間維度)。

如果您有並發 IO,那麼這些全域設定也會影響它。


最好的解釋髒率髒背景比例位於同一個文件:

/* The following parameters are exported via /proc/sys/vm */

/*
 * Start background writeback (via writeback threads) at this percentage
 */
int dirty_background_ratio = 10;
...
/*
 * The generator of dirty data starts writeback at this percentage
 */
int vm_dirty_ratio = 20;

表示從不同側面看都是同一件事(現在髒了,以後再清理)。


以下是一些用於分析髒頁的指令:

]# cp MAINTAINERS MAINTAINERS-2

]# grep dirty /proc/vmstat 
nr_dirty 135
nr_dirty_threshold 311361
nr_dirty_background_threshold 155490

閾值是根據比率值(以百分比或位元組形式給出)計算得出的。我有 8GB = 2M 頁,所以這分別是 10% 和 20%。


使用頁面類型工具,您可以更準確地識別這些髒頁。這會讀取 /proc/kpageflags,大約需要 200 毫秒。

]# ./tools/vm/page-types  -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
             flags      page-count       MB  symbolic-flags                     long-symbolic-flags
0x0000000000000030               1        0  ____Dl__________________________________
0x0000000000000038             130        0  ___UDl__________________________________
0x0000000000044038               1        0  ___UDl________b___u_____________________
0x000000000000403c              23        0  __RUDl________b_________________________
             total             155        0

無論我只是坐著等待(30秒),還是手動sync,髒頁很快就會消失。

]# sync
]# grep dirty /proc/vmstat 
nr_dirty 0
...

整個 130 頁的「UDl」都消失了,即。那些「最新的、髒的、在 LRU 清單上」的。

]# ./tools/vm/page-types  -b dirty -b lru -b ~active,~reclaim,~mmap |cut -c-80
             flags      page-count       MB  symbolic-flags                     long-symbolic-flags
0x0000000000044038               1        0  ___UDl________b___u_____________________
0x000000000000403c              23        0  __RUDl________b_________________________
             total              24        0

兩行的 130 + 1 頁差異正是檔案的大小:

]# ls --block-size=4096 -s MAINTAINERS 
131 MAINTAINERS

這些都是我的專業演奏技巧。

相關內容