[pgsql-jp: 26126] メモリの有効利用

Tsunehisa Kazawa kazawa @ sons.co.jp
2002年 5月 24日 (金) 22:24:17 JST


加澤です。いつも質問ばかりですみません。

メインメモリを 4Gbytes、外部に速い disk (100Gbytes RAID5 の DB 本
体用と 17Gbytes RAID1 の pg_xlog 領域用) を付けたマシンで PostgreSQL
7.2.1 の評価/テストを行っています (アーキテクチャは SPARC Solaris
です)。

contrib に入っている pgbench を用いて性能を測定しているのですが、不
可解な現象に遭遇し悩んでいます。

initialize は -s 100 で行い、テストは -t 100 -c 100 で行っています。
pgbench 自体は別のマシンで network ごしに実行させています。またキャッ
シュの影響を考え、複数回実行して結果が安定したところを調べています。

http://www.postgresql.jp/subcommittee/psqltrans/hw_performance_j/26469.html

この文書などを読むと、メモリ不足にならない限り、shared_buffers のサ
イズは大きければ大きいほど性能が良くなるようにかかれていますが、こち
らでの実験では、shared_buffers = 512 (共有メモリ 4Mbytes) とした時
よりも、例えば shared_buffers = 65535 (共有メモリ 512Mbytes) とし
た時の性能がどうしても高くなりません。物理メモリはまだ 3Gbytes 以上
も余っています。

前者に対して後者の方が、確かに I/O は劇的に減っているように見えますが、
TPC の数値は1割から2割、下まわってしまいます。もっとも前者でも iostat
で見るバス占有率は 100% とはならないのですが…。

#前者、後者とも、CPU にも idle time が残っていて、じゃあどこがボト
#ルネックなんだ〜という疑問もあります(笑)。

wal_buffers や wal_files、commit_delay/commit_siblings などのパラ
メータを変更してみても一向に改善されません。

この傾向は pgbench だけではなく、実働しているシステムでも同じで、以前
余っているメモリを有効活用しようと shared_buffers を増やしてみたとこ
ろ、throughput が極端に悪化し輻輳を起こしたため慌てて元に戻した、とい
うこともありました。

上記文書とは違い、shared_buffers の量はメモリの許す限り増やせばいい、
というものではないのでしょうか。どこかにトレードオフがあるのでしょうか?
均衡点を見つけ出すには、どうやって調査すれば良いか、ご存じの方はいらっ
しゃいますか?

あり余るメモリを PostgreSQL のみを動かすマシンで有効活用する、一番いい
方法はなんなのでしょうか?

-- 
加澤恒央
Tsunehisa KAZAWA
kazawa @ sons.co.jp
SONS,. Ltd. Programmer



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