だから私はdirty_background_ratio and dirty_ratio
で遊んでいて、あなたの専門家の助けを借りて正しいパラメータを見つけることを望んでいます。
今のところ私は使用しています:
vm.dirty_background_ratio = 20 vm.dirty_ratio = 60
主な使用法はトレントです。つまり、ファイルはトレントクライアントを介してダウンロードされ、シードされます。一度に多くのダウンロードが可能であるため、正しい値を考慮してRAMキャッシュを使用する必要があります。
たぶんあなたは私に正しい値を提案することができますか?
あなたのアイデアと値(大まかに2倍にする)は私には問題ないようですが、RAM caching)が正確に何を意味するのか説明していません。 a bufferingダーティページはすべて、変更されずにディスクに向かっているためです。
同じブロックデバイスにIOがたくさんある場合は、少し後で衝突します。トリガーとなるのはダーティページの量だけではなく、(mm/page-writeback.c):
/*
* The longest time for which data is allowed to remain dirty
*/
unsigned int dirty_expire_interval = 30 * 100; /* centiseconds */
これはデフォルトの30秒を与えます。これで十分かもしれません。ただし、それより古いダーティページは抑制されないことを意味します(バッファリング/キャッシングの時間ディメンション)。
また、同時IOがある場合、これらのグローバル設定もそれに影響します。
dirty_ratioとdirty_background_ratioの最良の説明は、同じファイルにあります。
/* 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
...
そして、「UD1」の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
これらは私のプロの遊びのヒントです。