SSDに関する検証 その8

投稿日: 2007年8月08日

<緊急特集!!SSDに関する検証 その8>
ペンネーム: ミラニスタ

磁気ディスクの代わりに半導体メモリにデータを記録するストレージ装置
SSD (Solid State Disk) の検証を行っています。

検証製品(富士ゼロックス株式会社様製 GigaExpress)の紹介URL⇒
http://www.fujixerox.co.jp/product/gigaexpress/

▼ 前回のおさらい

前回は、メーカーの方に GigaExpress についていろいろ質問をさせていた
だきました。(上村様、ありがとうございました。)
GigaExpress は、富士ゼロックス様の得意とする光伝送技術をベースとした
DRAM による高速なストレージということがお解かりになられたかと思います。

▼ 検証5:Select における SSD

検証4までは、Insert つまり書き込み処理における SSD 化の効果を確認し
ました。

読み込み処理ではどんな結果になるでしょうか?

Insert 処理ではバッチ処理を想定した大規模表への書き込みを、同時 20
セッションで実行させました。

検証5では、200 個の比較的小さな表(10,000レコード)を、それぞれ別の
セッションで同時に全件検索させてみます。
^^^^^^^^
同時 200 セッションというのは、とても原始的なやり方です。

===== スクリプトの例 =====

#!/bin/sh
sh sel.sh 1 & ←引数はテーブルの番号
sh sel.sh 2 &
.............   (200個並べる)
sh sel.sh 200 &

==========================

sel.sh は、引数で受け取った番号のテーブル(SSD_10K_01 等)を全件検索
します。 ^^

各セッションは、別々のテーブルをアクセスするので、複数のセッションか
らのアクセスが特定のテーブルに集中することはありません。

また、スクリプトの最初と最後で、v$system_event の情報を取得し、待機
イベント毎の統計値の差分を求めました。

実行スクリプトの中身は以下のとおりです。

==========================
$ cat begin_sys_event.sh
#!/bin/sh

sqlplus -s "(user)/(passwd)" << log/system_event_${NO}.log
set lines 130
set pages 200
col EVENT for a60

create table END_SYS_EVENT as select * from v$system_event;

select T1.EVENT,(T2.TOTAL_WAITS-T1.TOTAL_WAITS) "Waits"
      ,(T2.TIME_WAITED-T1.TIME_WAITED) "Time Waited"
from BEGIN_SYS_EVENT T1,END_SYS_EVENT T2
where T1.EVENT = T2.EVENT
and   T1.WAIT_CLASS# in (8,9)
and   T2.WAIT_CLASS# in (8,9)
and   (T2.TOTAL_WAITS-T1.TOTAL_WAITS) > 0
order by T2.TOTAL_WAITS-T1.TOTAL_WAITS desc,T1.EVENT;

quit
EOF
==========================

ちなみに、WAIT_CLASS# = 8 と 9 は、User I/O と System I/O です。

▼ 検証準備

ファイル                       Config5-1         Config5-2
------------------------------ ----------------- -------------
SYSTEM 表領域                  磁気ディスク      磁気ディスク
ユーザ表領域                   磁気ディスク(sdb) SSD(sdc)
UNDO 表領域                    磁気ディスク      磁気ディスク
一時表領域                     磁気ディスク      磁気ディスク
オンライン REDO ログファイル   磁気ディスク      磁気ディスク

Select の場合は、DBバッファ・キャッシュの大きさもパフォーマンスに影
響を与えそうなので、

DB_CACHE_SIZE = 1024M : Config5-1-1, Config5-2-1
= 128M : Config5-1-2, Config5-2-2

という全部で4つのパターンで検証することにします。

各パターンの実行前には、「alter system flush buffer_cache」を実行し
キャッシュをクリアしました。

また、各パターンの実行中には「iostat -x 5」を実行させ、I/O の状況を
確認しました。

▼ 検証結果

◆ Config5-1-1 (磁気ディスク、DB_CACHE_SIZE = 1024M)

EVENT                            Waits  Time Waited
------------------------------- ------ ------------
db file scattered read           20004        14773
db file sequential read            417        22432
read by other session              195        12068
control file sequential read        70            1
log file parallel write             32           21
control file parallel write         22           34
direct path write                    2            0

iostat抜粋

CPU平均:  %user   %nice    %sys %iowait   %idle
          92.71    0.00    7.29    0.00    0.00

デバイス:    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          36.80   116.00    49.29     0.11   17.71   6.23   3.86
sdb       40731.70     2.10   243.62     1.87    5.61   2.64  88.20
sdc           0.00     0.00     0.00     0.00    0.00   0.00   0.00

◆ Config5-2-1 (SSD、DB_CACHE_SIZE = 1024M)

EVENT                            Waits  Time Waited
------------------------------- ------ ------------
db file scattered read           20013         7387
db file sequential read            424         2530
control file sequential read        71            2
log file parallel write             42           24
control file parallel write         22           37
read by other session               14          305
direct path write                    2            0

iostat抜粋

CPU平均:  %user   %nice    %sys %iowait   %idle
          91.50    0.00    8.50    0.00    0.00

デバイス:   rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda         24.05    91.38    32.91     0.11   16.03   7.83   5.49
sdb        276.25     1.30   145.79     0.01    2.11   2.11   0.80
sdc      39575.15     2.40    15.99     1.10    0.22   0.02  11.86

◆ Config5-2-1 (磁気ディスク、DB_CACHE_SIZE = 128M)

EVENT                            Waits  Time Waited
------------------------------- ------ ------------
db file scattered read           20078        22371
db file sequential read            659        34185
read by other session              514        46831
control file sequential read        67            2
log file parallel write             35           25
control file parallel write         23           35
direct path write                    2            0

iostat抜粋

CPU平均:  %user   %nice    %sys %iowait   %idle
          92.65    0.00    7.35    0.00    0.00

デバイス:    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          61.60   100.80    28.49     0.14   12.05   4.44   5.06
sdb       40994.10     9.30   240.91     1.15    3.37   2.12  72.20
sdc           0.00     0.00     0.00     0.00    0.00   0.00   0.00

◆ Config5-2-1 (SSD、DB_CACHE_SIZE = 128M)

EVENT                           Waits  Time Waited
------------------------------ ------ ------------
db file scattered read          20128         4933
db file sequential read           718         3321
control file sequential read       71            1
log file parallel write            42           18
control file parallel write        23           40
read by other session              11          775
direct path write                   2            0

iostat抜粋

CPU平均:  %user   %nice    %sys %iowait   %idle
          90.31    0.00    9.69    0.00    0.00

デバイス:   rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          3.18    97.81    44.17     0.07   15.26  10.78   4.93
sdb        285.98    34.69    87.19     0.02    3.27   2.97   2.19
sdc      39918.09    17.50    16.01     1.10    0.22   0.02  11.35

さあ、これらの結果からどんなことが言えるでしょうか?

予想通りでもあるし、意外なことに気づかれたでしょうか?

考察は、お盆休みを挟んで次回までの夏休みの宿題です。

今回は、ここまで!!

来日中のバルサを知り合いが観に行ったらしい。(F田さん羨ましいです!)

今日も熱い、もとい暑いぜの茅ヶ崎にて