[pgsql-jp: 41248] Re: pgstat.statのRAM化

MauMau maumau307 @ gmail.com
2012年 10月 15日 (月) 21:15:59 JST


小林さん

MauMauといいます。

tmpfsのファイルシステムをマウントするときに、"mount -o size=10m"
というように上限サイズを指定する場合、
そのサイズがpgstat.statより大きくなるようにする必要があると思います。
pgstat.statがそのサイズに収まらなくなると、次のようなメッセージが
サーバ・ログ・ファイルやsyslogに出力されるものと思います。

LOG:  could not write temporary statistics file \"%s\": ...

pgstat.statの大きさは、次の数に比例します。
1.データベース
2.テーブル
3.ユーザ定義関数

もしpgstat.statがtmpfsに入りきらない場合でも、
データベース・サーバは稼働を続けます。
しかし、pgstat.statは削除されてしまうため、
各種の統計情報が収集されません。
そうすると、pg_stat_xxxビューで性能情報を得られなかったり、
自動バキュームが適切に動作せずに性能劣化、などという影響が考えられます。

以下はLinuxカーネルのtmpfsに関する文書と、サイズ関連の抜粋です。

http://lxr.linux.no/linux/Documentation/filesystems/tmpfs.txt

tmpfs puts everything into the kernel internal caches and grows and
shrinks to accommodate the files it contains and is able to swap
unneeded pages out to swap space. It has maximum size limits which can
be adjusted on the fly via 'mount -o remount ...'
...
tmpfs has three mount options for sizing:
...
size:      The limit of allocated bytes for this tmpfs instance. The
           default is half of your physical RAM without swap. If you
           oversize your tmpfs instances the machine will deadlock
           since the OOM handler will not be able to free that memory.



以上です。

----- Original Message ----- 
From: "Naoki Kobayashi" <n.kobayashi @ digi.jp>
To: <pgsql-jp @ ml.postgresql.jp>
Sent: Friday, October 12, 2012 2:22 PM
Subject: [pgsql-jp: 41245]pgstat.statのRAM化


>
> 皆様はじめまして。
> お世話になります。小林と申します。
>
> CentOS 5.3 + PostgreSQL 8.3.7 の環境をSSDに移植することになりました。
> 移植自体は問題なく進み、動作もHDDと何ら変わりませんでした。
>
> しかし、SSDでは書換回数の上限があることから、書換回数の増加状況を調べたとこ 
> 
>
> ろ、
> 想定よりもかなり早く増加していることがわかりました。
> それも、何の処理もせずにただ放置しているだけでも増加していきます。
>
> 何が書換回数を増加させているのか調査したところ、stats collecter process が
> 0.5秒ごとに $PGDATA/global/pgstat.stat を更新しているという情報を得ました。 
> 
>
> たしかに pgstat.stat をRAM領域(tmpfs)に出力させるようにしたところ、
> 書換回数の増加が治まりました。
>
> そこでご教示いただきたいのですが、pgstat.stat をRAM領域に移行しても
> 問題ないのでしょうか?
>
> よろしくお願い致します。
>
>



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