[pgsql-jp: 36308] Re: VACUUMの性能を向上させたい

Yumiko Izumi izumi-yumiko @ tokyo.scnet.co.jp
2005年 11月 2日 (水) 19:04:11 JST


お世話になっております。Izumiです。

追加で以下調査しましたので、結果をご報告します。
コマンド出力の引用だらけなので、みにくいと思いますが、
ご勘弁を。

> 確かに遅すぎですね。
> やはりPIOモードになっているか、SATAのドライバがまずいのか…
> 
> すでに調査済みかもしれませんが、激重なプロセスが走ってたりしませんかね?
> top コマンドで調べてみてください。

topコマンドの出力は割愛しますが、以下のような状態でした。
・一番重いのはpostmaster自身
・次に重いのはpostmasterにアクセスしているプロセス(複数)
・他は特別重いものはない

# 但し、ここでいう「重い」とはCPU使用率(user、system)ではなく、
# iowaitが高い、ということです。

> 2. 以前に提示されていたハード構成で7.62 MB/secはやはり遅めです
>   もう1つ、オプション無しの結果も出せるでしょうか?
>   [pgsql-jp: 36283]で水野さんが書かれていたdmesgの結果も有ればより
>   詳しいことも判りますが全部貼り付けないで下さいね

dmesgにてデバイス情報を取得しました。
-----------------------------------------
ata1: SATA max UDMA/133 cmd 0xFE00 ctl 0xFE12 bmdma 0xFEA0 irq 18
ata2: SATA max UDMA/133 cmd 0xFE20 ctl 0xFE32 bmdma 0xFEA8 irq 18
ata1: dev 0 cfg 49:2f00 82:346b 83:7f01 84:4003 85:3469 86:3c01 87:4003
88:207f
ata1: dev 0 ATA, max UDMA/133, 156250000 sectors: lba48
ata1: dev 0 configured for UDMA/133
ata2: SATA port has no device.
scsi0 : ata_piix
scsi1 : ata_piix
  Vendor: ATA       Model: ST380013AS        Rev: 8.12
  Type:   Direct-Access                      ANSI SCSI revision: 05
Attached scsi disk sda at scsi0, channel 0, id 0, lun 0
SCSI device sda: 156250000 512-byte hdwr sectors (80000 MB)
-----------------------------------------
ata1(scsi1)が該当のHDDとなります。
# なお、LinuxではS-ATAはscsi扱いされるそうです。

転送モードはUDMA/133 の個所で、通常のDMAモードのようです。

また、hdparmの値を追加で取得したところ、以下結果を得ました。
-----------------------------------------
/dev/sda3:
 Timing buffered disk reads:  192 MB in  3.01 seconds =  63.79 MB/sec
-----------------------------------------
これは、DBアクセス処理が全て停止しているタイミングのものです。
以下DBアクセス中のものと比べると破格です。
-----------------------------------------
/dev/sda3:
 Timing buffered disk reads:   40 MB in  5.25 seconds =   7.62 MB/sec
-----------------------------------------

次に、hdparm -v で転送モード(using_dma)を確認してみました。
------------------------------
[root @ hostname user]# /sbin/hdparm -v /dev/sda3
/dev/sda3:
 readonly     =  0 (off)
 geometry     = 9726/255/63, sectors = 143749620, start = 12498570
------------------------------
しかし、S-ATAはSCSI扱いになっているので、using_dma の値は取得できません
でした。

また、昨日試そうとしているものとしてあげた以下のうち、
「最新版PostgreSQL」を優先して試そうとしています。
> また、これから以下を試そうと考えています。
>  ・ファイルシステム変更(ext3 → ext2)
>  ・「shared_buffers」拡張(マシンのカーネル拡張含む)
>  ・REINDEX+VACUUM
>  ・最新版PostgreSQL

詳細は必要に応じて別スレッドにて質問したいと考えていますが、
現在のところ、以下をやろうとしています。
・PostgreSQLのバイナリや定義ファイルのみ入れ替えてみる
 (テストだけなのでなるべく簡単にやりたい)
・PostgreSQLがサポートしているiodbcのバージョンを調べる
 (申し訳ありません。記述漏れていましたが、iodbc経由です。
  現在は3.0.6を使っています。)

追加情報があればまた投稿します。
以上よろしくお願いします。




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