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

Shimada Yoichi yshimgm @ gmail.com
2007年 10月 19日 (金) 16:44:35 JST


島田です。

On 2007/10/19, at 16:22, omi @ ydc.co.jp wrote:

> しかし、これだけ遅いのは、
> RAID5だからという理由だけで到底説明がつくものではないですね。

 チャンク(ストライプ)サイズが大きい設定が原因かと推定します。
RDBMS 用で Level-5 RAID を使用する場合は、要注意です。
(Sequential系の I/O を高速化するため、ストライプサイズを大きくした
 RAID level-5 設定をたまに見かけます。)

例えば、あまり賢くない RAIDコントローラでストライプが64KB であると、
たった 4K の更新でも 64K分のオリジナルデータとオリジナルパリティを
読み込み、新パリティを計算したうえで、その 4Kを含むストライプが
割り当てられたディスクの64K分と、パリティ64K分を上書きします。

> OSのドライバ、BIOS、コンロローラのファーム、
> または機器の構成方法(接続方法)のいずれかに問題がある、
> と考えてよさそうです。

> もはやPostgresの問題ではないと思いますので、この話題はクローズですね。
> あとは結果が出ましたら、フォローの投稿を入れるようにします。

> /opt/iozone/bin/iozone -CMRce -+q 10 -+u -w \
> -i 2 -l 4 -u 4 -s 16M -r 4k -b ./test.wks -F \
> /DB/f0.dat /DB/f1.dat /DB/f2.dat /DB/f3.dat

"-s 16M" は小さすぎますよ.
もし、1GB のメモリを搭載しているなら、"-l 4 " (4プロセス〜)なので
1GB x 3倍 /4プロセス = 750M (私ならこの場合、-s 1G)をお勧めします。
-r 4k なので、ちょっと時間が時間がかかりますが。..

でないと、ディスク I/O の実体値ではなく、O/S, Filesystem cache の効果が
強調されすぎた値を得る事になり、時には判断を誤ってしまうリスクありです。

----------------------------------------------------------------
Y.SHimada


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