[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 メーリングリストの案内