ですから、私はあなたの専門家の助けを借りて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
これらは私のプロとしての遊び心のヒントです。