[pgsql-jp: 34587] Re: PostgreSQLメモリサイジング

TANIDA Yutaka tanida @ sra.co.jp
2005年 1月 5日 (水) 16:41:58 JST


谷田です。

On Wed, 05 Jan 2005 16:12:13 +0900
"EBIHARA, Yuichiro" <ebihara @ iplocks.co.jp> wrote:

> ■総メモリ使用量の計算
> データベースへの平均同時接続数を n とすると、PostgreSQLによって消費され
> る総メモリ量は概ね以下のようになるはずです。
> (安全な値を得たい場合は、n に max_connectionsを採用するべきかも)
> 
> 総メモリ使用量
>  = (1) + (2) + ( (3) + (4) + (5) + (6) + (7) ) * n
> 
> (1)共有メモリ
> マニュアルに従えば、次の計算式により共有メモリサイズを計算できそうです。
> 
> 共有メモリ(bytes) = shared_buffers * 8192
>                   + wal_buffers * 8192
>                   + max_fsm_pages * 6
>                   + max_fsm_relations * 50

マニュアルにその式はなかったと思います。おそらくpostgresql.confを元に作
成したものと思いますが、その計算式には以下のようなものが考慮されていませ
ん。。

・固定的に取られるもの
・max_connectionsに比例して取られるもの

たとえば以下のURLには、

http://www.postgresql.jp/document/pg734doc/admin/kernel-resources.html

250 kB + 8.2 kB * shared_buffers + 14.2 kB * max_connections

という数式が出ています。

ちなみに、どのようなものが取得されているかは
src/backenc/storage/ipci.cあたりが参考になりませんか?

> と思ったら、手元の環境ではipcsの結果と大幅にずれました。
> 
> shared_buffers                 | 512
> wal_buffers                    | 8
> max_fsm_pages                  | 10000
> max_fsm_relations              | 1000
> 
> 上記計算式では 4,369,840 bytesとなるはずが、ipcsでは 8,667,136 bytesと表
> 示されます。バッファ管理用の領域などが追加で確保されるんでしょうかね? 共
> 有メモリサイズについては実際にPostgreSQLを起動して、ipcsなどで実サイズを
> 測るのがよさそうです。

デバッグオプションレベルを上げると、確か初期火事に必要容量を表示してくれ
たと思いますので、そっちがより確実と思います。



-- 
TANIDA Yutaka <tanida @ sra.co.jp>




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