[pgsql-jp: 34588] Re: PostgreSQLメモリサイジング
EBIHARA, Yuichiro
ebihara @ iplocks.co.jp
2005年 1月 5日 (水) 18:07:41 JST
海老原です。
谷田さん、情報をどうもありがとうございます。
>>(1)共有メモリ
>>マニュアルに従えば、次の計算式により共有メモリサイズを計算できそうです。
>>
>>共有メモリ(bytes) = shared_buffers * 8192
>> + wal_buffers * 8192
>> + max_fsm_pages * 6
>> + max_fsm_relations * 50
>
>
> マニュアルにその式はなかったと思います。おそらくpostgresql.confを元に作
> 成したものと思いますが、その計算式には以下のようなものが考慮されていませ
> ん。。
>
> ・固定的に取られるもの
> ・max_connectionsに比例して取られるもの
実際には、マニュアルのここを参考にしました。
http://www.postgresql.jp/document/pg745doc/html/runtime-config.html#RUNTIME-CONFIG-RESOURCE
ちょっと早合点でしたね。
> たとえば以下のURLには、
>
> http://www.postgresql.jp/document/pg734doc/admin/kernel-resources.html
>
> 250 kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections
>
> という数式が出ています。
この計算式であれば、手元環境では問題にならない程度の誤差で出てきました。
理論値: 8,277,606.4 bytes
実測値: 8,667,136 bytes
> ちなみに、どのようなものが取得されているかは
> src/backenc/storage/ipci.cあたりが参考になりませんか?
参考になります。ここを見るだけで、共有メモリを構成するコンポーネントの種
類くらいは想像がつきますね。
ただ今回は細かい数字よりも、多少の誤差は許容して楽にサイジングをしたいの
で、さらに深く追うのはやめにしておきます。
> デバッグオプションレベルを上げると、確か初期火事に必要容量を表示してくれ
> たと思いますので、そっちがより確実と思います。
早速試してみました。
7.3.4なので、server_min_messages = debug5 に設定して起動したところ、共有
メモリに関連しそうなところでは、次のような行が出力されました。
DEBUG: invoking IpcMemoryCreate(size=8667136)
このサイズはipcsの結果と一致するので(当たり前か)、7.3.4ではどっちを使っ
ても同じようです。
共有メモリについては、環境があればこれらの方法で実測、そうでなければ
> 250 kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections
を使うのが良さそうです。
--
アイピーロックス ジャパン株式会社
海老原 雄一郎 / EBIHARA, Yuichiro
Email: ebihara @ iplocks.co.jp
pgsql-jp メーリングリストの案内