私の使用状況に最適な 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

主な用途はトレントです。つまり、ファイルはトレント クライアントを介してダウンロードされ、その後シードされます。一度に多数のダウンロードが行われる可能性があるため、正しい値を考慮して RAM キャッシュを使用する必要があります。

適切な値を提案していただけますか?

答え1

あなたのアイデアと値(およそ2倍)は私には問題ないように思えますが、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
...

そして、「UDl」の 130 ページ全体、つまり「最新、ダーティ、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

2 行の 130 + 1 ページの違いは、まさにファイルのサイズです。

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

これらは私のプロとしての遊び心のヒントです。

関連情報