web-dev-qa-db-ja.com

私の使用法に最適なdirty_background_ratioとdirty_ratioは何ですか?

だから私はdirty_background_ratio and dirty_ratioで遊んでいて、あなたの専門家の助けを借りて正しいパラメータを見つけることを望んでいます。

今のところ私は使用しています:

vm.dirty_background_ratio = 20 vm.dirty_ratio = 60

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

たぶんあなたは私に正しい値を提案することができますか?

1
Viktor

あなたのアイデアと値(大まかに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_ratiodirty_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

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

2
rastafile