[pgsql-jp: 37592] ハイスペックなPCの方が、遅くなる現象

Akira Nakamura nakamura_ml @ art.edisc.jp
2006年 10月 20日 (金) 16:43:05 JST


こんにちは、中村と申します。

現在、不可解な現象に悩まされているので、お知恵を
お貸し下さい。

環境
 運用サーバ:(一応サーバ機)
 ・CPU Xeon3.6GHz(EMT64) ×2(コア数×4)
 ・メモリ 4GB
 ・HDD 36.4GB ×4 (RAID0+1)
 ・OS RedHat ES4
 ・PostgreSQL 8.1.3(RPM)

 開発サーバ:(7万円のデスクトップ機)
 ・CPU Cel2.66GHz
 ・メモリ 1.5GB
 ・HDD 40GB
 ・OS RedHat WS4
 ・PostgreSQL 8.1.3(RPM)

この環境に、現在運用しているDBの内容をロードしようと、
pg_dumpall -d(INSERT形式)でダンプした140Mのファイルを
夫々に読み込ませたのですが、ロードし終わるまでの結果が、
以下の様になってしまいました。
 運用サーバ:2時間(CPU使用率:何れか一つのコアが10%)
 開発サーバ:30分 (CPU使用率は:70%)

問題の洗い出しに色々検証してみたのですが、何が原因なのか
良いか判りません。
この様な場合の対応/検証方法がありましたら教えて下さい。


検証条件
 #以下の検証は、全くDBのチューニングしていない状態で、検証しています。
 #DBの作成は、initdb --no-locale --encoding=EUC-JPを使用し、ダンプする
  DB内の文字コードもEUCになっています。
 #インストールソフト等や、設定は同じにしてあります。
 #ウイルスチェックなど、特定のタイミングで負荷が掛かる様なソフトは
  動いていません。
 #ソースは、PRMパッケージの問題切り分け用に運用サーバでpostgres8.1.3を
  コンパイルして測定した結果です。

検証結果
 ・iozoneでディスクの速度を測定(iozone -a の平均)
  運用サーバ:Random Read Report  2,057,815
        Random Write Report   862,426
  開発サーバ:Random Read Report  1,231,742
        Random Write Report   438,779

 ・pg_dumpall(COPY形式)でダンプした61Mのファイルをロード
  運用サーバ:1分15秒
  開発サーバ:1分10秒

 ・pgbench測定(引数:無し)
  運用サーバ: 48.047355 tps
  開発サーバ:265.230883 tps
  (ソース): 97.435498 tps

 ・pgbench測定(引数:-c 100 -t 100)
  運用サーバ:156.422147 tps(CPU使用率:夫々のコアが20〜30%)
  開発サーバ:144.538756 tps(CPU使用率:50〜70%)
  (ソース):156.707584 tps

 ・pgbench測定(引数:-S -c 100 -t 100)
  運用サーバ:5841.131731 tps(CPU使用率:夫々のコアが50〜70%)
  開発サーバ:2432.789329 tps(CPU使用率:70〜100%)
  (ソース):6744.702879 tps

 ・運用サーバshared_buffers、work_mem等の調整。
  参照系は早くなるのですが、ダンプ等更新系には効果を感じられません
  でした。


検証から私なりの疑問
 INSERT形式のダンプでは、非常に遅くCPUの使い方も非常に悪いと感じました。
 Postgres8.1.3では、マルチ(コア)CPU上でINSERTや、UPDATEは効率が
 悪いのでしょうか?


--
nakamura_ml @ art.edisc.jp




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