[pgsql-jp: 38868] Re: HDD差異だけで更新性能だけこんなに違うのはなぜ?

omi @ ydc.co.jp omi @ ydc.co.jp
2007年 10月 19日 (金) 06:24:23 JST


板垣さん、尾見です。
おはようございます。

お返事ありがとうございます。

> > という条件で、かつディスクの性能差は大差ないのに、
> > pgbench(TPC-B)の性能差が10倍以上となっています。
> > 
> > fsync=offだと性能が出ることからも、
> > postgreバックエンドが実行しようとしているsyncが、
> > カーネル内でI/O待ちで溜まっているのがいかんのでしょう。
> 
> それは異常な動作ではありませんし、避けられません。
> 信頼性を確保するために、WAL を同期書き込みする必要があるからです。
> 
postgres(^^;)バックエンドがsync待ちとなる動作自体は、
正常な動きであることは理解しております。

本質的な疑問は、元の投稿にありますように、
"dd ... ; sync " をした時は性能差が2倍以下のHDDが、
"pgbench(TPC-B)" をした時にはなぜ10倍以上のひらきになってしまうのか、
という点です。

> 信頼性とログ先行書き込み
> http://www.postgresql.jp/document/current/html/wal.html

ありがとございます。
週末に、あらためてじっくり読み直してみます。

> wal_buffers を増やしたり、commit_delay を設定したり……と ある程度は
> チューニングも可能ですが、究極的には、ライトバック・キャッシュを
> 搭載したストレージを使うのが一番です。(バッテリ・バックアップ必須)
> 

共有ディスクはUPSで保護しますので、
ライトバック・キャッシュはONにしています(現在32MBで設定)。
OFFにすると、ご報告したよりももっとひどい状況になるんです。

# 本題からはそれますが、
# サーバも共有ディスクもUPSで守られていることを前提にすれば、
# 最終的には、ライトバック・キャッシュONはもちろん、
# fync=offで運用するというのもありなのかも...、と今思いました。







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