[pgsql-jp: 38409] Re: pgbenchの結果のブレ

Hiroki Kataoka kataoka @ interwiz.jp
2007年 5月 11日 (金) 01:15:44 JST


片岡です。

KaiGai Kohei さんは書きました:
> なるほど、チェックポイントの処理を含む結果と、含まない結果が混在している
> ために、結果のばらつきが大きく出てしまったというところでしょうか。
> 測定時間を十分長く取って、全てのベンチマーク結果に等しくチェックポイント
> 処理を含むようにしてしまえば、先のような激しいバラつきは発生しなくなると
> いう考え方ですね。
> 
> とりあえず、十分な回数のトランザクションを実行するパターンで、ジョブを
> 流しっぱなしにして測定してみたいと思います。

 ベンチマーク時間を節約したい場合、私はよく以下のようにやっています。

■できるだけチェックポイントが発生しないようにする。

・checkpoint_segmentsを256程度まで大きくする(ディスクが多く必要になるの
で注意)
・checkpoint_timeoutを上限の3600(1時間)にする。
・checkpoint_warningを3600(1時間)にする。

■毎回、最初にCHECKPOINTを実行してからベンチマークを実行する。

・psql -c "CHEKCPOINT" ...
・pgbench ...
・checkpoint_warningによるワーニングが出ていないことを確認。ワーニングが
でたらcheckpoint_segmentsをもっと大きくするか、pgbenchのトランザクション
数を減らす。

 チェックポイント直後と、直前のチェックポイントからしばらくトランザク
ションを実行した後とでは、若干性能が変わります(後者の方が良い)。なの
で、毎回のベンチマークは必ずCHECKPOINT⇒pgbenchの組み合わせで実行しない
と、精度のよい比較ができなくなりますので、注意してください。

-- 
Hiroki Kataoka <kataoka @ interwiz.jp>



pgsql-jp メーリングリストの案内