
だから私はdirty_background_ratio and dirty_ratio
あなたの専門的な助けを借りて正しいパラメータを見つけようとしています。
今は以下を使用しています。
vm.dirty_background_ratio = 20 vm.dirty_ratio = 60
主な用途は急流です。つまり、急流クライアントを介してファイルをダウンロードしてシードします。同時に複数のダウンロードを実行できるため、RAMキャッシュを使用して正しい値を考慮する必要があります。
たぶん私に正しい値を提案してもらえますか?
答え1
あなたのアイデアと価値(約2倍)はまともなようですが、RAMが正確に何を意味するのか説明していません。隠れ家。ここはもう少しバッファーこれは、ダーティページが変更されずにディスクに書き込まれるためです。
同じブロックデバイスにIOが多いと、後でクラッシュします。ダーティページの数が唯一のトリガーではありません。mm/ページ writeback.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
これが私のプロプレイのヒントです。