[pgsql-jp: 37145] shared_bufferの設定について

kitagawa @ makesoft.co.jp kitagawa @ makesoft.co.jp
2006年 6月 2日 (金) 21:41:22 JST


初めまして、北河と申します。
長文になりますがご容赦下さい。

大規模なシステムを構築する必要があり、高負荷に向けたパフォーマンスチュー
ニングを行っております。

パフォーマンスの推移を見るべく、bgbenchを行いながらtpsをチェックしたので
すが、shared_bufferの設定について下記のような不可解な現象が発生しました。

---------------------------------------------------
【環境】
CPU:Xeon3.2G
MEM:2G
RedhatLinux AS3
kernel:2.4.21-40
PostgreSQL:8.1.4


【共通項目】
レコード数:5,000,000
テストコマンド:pgbench -c 272 -t 1000 -S
シェアードメモリ:500MB
postgresql.conf
 max_connections = 272
 work_mem = 2048

【テスト1】
 postgresql.confの設定値
  shared_buffers = 2000
  
 結果
  6263.33

【テスト2】
 postgresql.confの設定値
  shared_buffers = 20000

 結果
  6211.00

※TPS値は15回実行した平均値です
-----------------------------------------------------

結果の通り、shared_buffersを増やした方がパフォーマンスが落ちてしまってい
ます。
誤差かな、と思い、数セットやってみましたが【テスト2】の結果が【テスト1】
を上回ることはありませんでした。
また、shared_bufferの値を10000,5000,3000等、色々試してみましたがどれも
【テスト1】のtpsには及びませんでした。

試しにshared_buffersを1000にしてみたところ、今度は【テスト1】を上回って
しまい、デフォルトが一番速い、という結果に・・・。

様々なドキュメントを見た結果、shared_bufferは限度を超えなければ増やすほ
どパフォーマンスが上がる、という認識を持っているのですが、この全く逆の結
果となってしまっています。(某所で8のベンチマークを公開していましたが、そ
ちらではshared_buffers = 100000まで順調にパフォーマンスアップしていまし
た)

スワップが発生している可能性も疑いましたが、pgbench実行中のスワップ利用
率は0%でした。

完全に壁にぶち当たってしまい、原因がつかめずにいます。皆様の知識をお借り
できませんでしょうか。



/////////////////////////////////
 北河 芳隆
 kitagawa @ makesoft.co.jp
/////////////////////////////////



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