[pgsql-jp: 38865] Re: HDD差異だけで更新性能だけこんなに違うのはなぜ?
ITAGAKI Takahiro
itagaki.takahiro @ oss.ntt.co.jp
2007年 10月 18日 (木) 21:22:26 JST
板垣です。
omi @ ydc.co.jp wrote:
> DBクラスタを置くHDDの違いによって、postgreの更新系処理の
postgres (ぽすとぐれす)と呼んでね。
> という条件で、かつディスクの性能差は大差ないのに、
> pgbench(TPC-B)の性能差が10倍以上となっています。
>
> fsync=offだと性能が出ることからも、
> postgreバックエンドが実行しようとしているsyncが、
> カーネル内でI/O待ちで溜まっているのがいかんのでしょう。
それは異常な動作ではありませんし、避けられません。
信頼性を確保するために、WAL を同期書き込みする必要があるからです。
信頼性とログ先行書き込み
http://www.postgresql.jp/document/current/html/wal.html
wal_buffers を増やしたり、commit_delay を設定したり……と ある程度は
チューニングも可能ですが、究極的には、ライトバック・キャッシュを
搭載したストレージを使うのが一番です。(バッテリ・バックアップ必須)
最近の HDD では、多少なりともキャッシュが乗っているものがほとんどです。
(ただし、バッテリ・バックアップはされていません。)
Linux の特性なのか、デフォルトだと、内蔵HDDではキャッシュが使われる場合が
多いのですが、外付けもしくはインタフェースカードによっては無効化されることが
あるようです。その辺りが性能差の原因ではないでしょうか。
> # DBは最終的には共有Disk
ということですので、もし共有ディスクやインタフェースカードに
キャッシュが乗っているならば、かなり性能傾向が変わるかもしれません。
pgsql-jp メーリングリストの案内