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