[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 メーリングリストの案内