- ZFSのレコードサイズを128KBよりずっと小さなものにする
- l2arc_write_maxをより大きくする
- l2arc_noprefetchを0に設定する
まず絶対にZFSのレコードサイズを特定の値に設定してはいけません。唯一の例外はZFSをDBMSに使うときだけです。ZFSは自動的にファイルごとにレコードサイズを適切に設定します。レコードサイズを設定するとこれが台なしになります。
L2ARCのSSDへの書き込みを加速するために、l2arc_write_maxに大きな値を設定するべきではありません。これは逆の結果を生みます。L2ARC はこのパラメータを書きこみサイクルを決定するために使います。新たに書き込むデータがこの値の半分以下なら、L2ARCは1秒サイクルを選択します。そうれなければ0.2秒サイクルです。l2arc_write_maxをより大きな値に設定すると、L2ARCに1秒サイクルを選択させて書き込み速度を低下させます。
もし書き込み速度を加速したいのなら、l2arc_headroomの値を増やしたほうがいいです。適切な値はZFSの負荷の掛かり方にに依存しますが、デフォルトの2は多くの場合小さすぎます。より大きな値にすると、L2ARCは新たに書き込むデータをl2arc_write_maxいっぱいまで集めて0.2秒サイクルを選択します。
l2arc_noprefetchを0にするべきではありません。0にすると、L2ARCは使われなかったプリフェッチされたデータをSSDに書きこむことが多くなります。ARCの後ろにはこういうデータが回ることが多いからです。このデータはSSDにキャッシュされたブロックを不必要に追いだしてしまうので、L2ARCの性能が下がります。
あの記事では、L2ARCの設計が昔のSSDの特徴に基づいて行われていることが指摘されています。この点だけは正しいです。L2ARCはSSDにかなり低いIOPSしか要求しませんし、たくさんデータを書くこともひかえています。だからといって、L2ARCのパラメータを最近のとんでもない性能のSSDにあわせても、ZFSの性能を向上させることはできません。L2ARCがそんな風に設計されていないからです。
0 件のコメント:
コメントを投稿