SSDに関する検証 その3

投稿日: 2007年7月04日

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

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

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

▼ 前回のおさらい

ファイル                       Config1       Config2
------------------------------ ------------- -------------
SYSTEM 表領域                  磁気ディスク  磁気ディスク
ユーザ表領域                   磁気ディスク  SSD
UNDO 表領域                    磁気ディスク  SSD
一時表領域                     磁気ディスク  SSD
オンライン REDO ログファイル   磁気ディスク  SSD

という2つの形態において、約1,000バイトのデータを 200万行 Insert し、

Config1 : 1h 18m 27s
Config2 : 0h 05m 50s

という結果を得ました。

Config2 のスループットは Config1 の実に約 13.5 倍でした。

▼ iostat の結果を見てみる

両者を客観的に評価するため、iostat で取得した結果を比較してみます。

○ 主なカラムのおさらい

wkB/s    : 1秒あたりの書き込み KB 数
avgqu-sz : 平均 I/O キュー数(この値が高い場合は要注意)
%util    : ディスクビジー率(100 に近いほど性能限界)

○ Config1(磁気ディスク)

$ iostat -x -t sda 2

.....

時間: xx時31分54秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          19.00    0.00    2.25   78.75    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda2       ...  1432.00    12.13    52.60  244.16   4.23 100.00

時間: xx時31分56秒
CPU平均:  %user   %nice    %sys %iowait   %idle
           8.00    0.00    0.25   91.75    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda2       ...  1858.00    15.18    73.19  265.49   4.08 100.00

時間: xx時31分58秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          16.25    0.00    2.00   81.75    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda2       ...  1612.00    12.52    58.27  267.77   3.83  98.50

時間: xx時32分00秒
CPU平均:  %user   %nice    %sys %iowait   %idle
           7.25    0.00    0.75   92.00    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda2       ...  2252.00    15.45    68.86  207.32   3.43 100.00

時間: xx時32分02秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          25.50    0.00    0.75   73.75    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda2       ...  2072.00    18.50    47.55  219.64   4.46 100.00

.....

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

これは~、突っ込みどころが満載です!(笑)

まずは、CPU平均 を見てみましょう。%iowait の値が 70-90%台となってい
ることがお解りいただけますでしょうか?約100分弱の処理時間における平均
値は、89.9% でした。

一方、%user は、高くても 25%、ひどい時は1桁台です。同じく処理時間
における平均値は 8.6% でした。

%iowait は実際に CPU が回っている時間の割合ではなく、CPU がディスク
の入出力を待っている時間の割合です。従ってむしろ %idle と同じように分
類されるべきものです。

それにしても、CPU リソースの 9割が I/O 待ち状態で、実際の処理に費や
される分が 1割にも満たないとは!時間がかかるわけです。

https://old.insight-tec.com/img/ora3/Config1_CPU.JPG

チャートは、処理時間における CPU 使用率です。
オレンジ色の %iowait が占める割合が非常に多いことがわかります。

次に、sda2(磁気ディスク)の情報を見てみましょう。

%util がほぼ 100% となっています。完全にディスク装置の限界に来ていま
す。何だか悲鳴が聞こえてきそうな感じです。平均でも 99.1% でした。

さらに、avgqu-sz は、40-70台となっています。処理時間における平均値
は 37個、最大は何と 551個の I/O リクエストがキューにたまっていました。

wkB/s は、平均 1,412.5 KB/sec 最大 4,822.0 KB/sec でした。これは後で
SSD との比較をするために覚えておきましょう。

以上のように「Config1(磁気ディスク)」は、完全にディスク・ボトル
ネックの状態です。

読者の皆さんの中で、「最近、夜間バッチ処理の時間がかかり過ぎて、オン
ライン開始時間までに終わらない。」というような悩みを抱えていらっしゃる
方はいませんか?

そんな場合は、是非 iostat で状況を確認してみてください。

さあ次は、いよいよ SSD の検証結果です!!

○ Config2(SSD)

$ iostat -x -t sdb 2

.....

時間: xx時48分05秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          90.25    0.00    9.75    0.00    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb1       ... 12228.00    11.28     0.47    0.21   0.03   6.50

時間: xx時48分07秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          93.25    0.00    6.75    0.00    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb1       ... 12686.00    10.56     0.64    0.27   0.02   6.00

時間: xx時48分09秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          60.50    0.00   22.75   14.00    2.75

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb1       ... 54406.00    11.21    11.76    1.21   0.02  22.50

時間: xx時48分11秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          88.81    0.00    6.97    4.23    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb1       ... 15974.13    11.48     2.74    0.98   0.02   5.47

時間: xx時48分13秒
CPU平均:  %user   %nice    %sys %iowait   %idle
          93.67    0.00    5.84    0.49    0.00

デバイス:  ...    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sdb1       ... 11817.48    11.41     4.97    2.40   0.03   6.31

.....

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

まずは、CPU平均の %iowaitです。約 6分弱の処理中 平均では、何と 7.7%
でした。(Config1: 89.9%)

一方 %user は相対的に高くなっています。平均では 81.1% でした。

つまり、CPU リソースをユーザ処理にうまく回していることがわかります。

https://old.insight-tec.com/img/ora3/Config2_CPU.JPG

チャートで確認すると、オレンジ色の %iowait よりも、青色の %user が圧倒
的に多いことがわかります。

次に、ディスク・ビジー率(%util)がどうなっているか見てみましょう。

んっ!?何だかとても低くなっているようです。最大でも 24.1% 平均では
9.5% でした。全然余裕です!SSD の中から口笛が聞こえてきそうな感じです。

avgqu-sz も Config1 と比べると、非常に低いです。
(平均: 4.1個、最大: 12.4個)

しかし、何といっても驚異的なのは wkB/s です。
平均で 19,328.1 KB/sec 最大では 54,406.0 KB/sec でした!!

▼ まとめ
                       Config1       Config2   比(%、100以上は倍数)
----------------------------------------------------------------------
%iowait(平均 %)         89.9           7.7              8.6

%user(平均 %)            8.6          81.1              9.4倍

%util(平均 %)           99.1           9.5              9.6

avgqu-sz(平均 個)       37.0           4.1             11.1
        (最大 個)      551.4          12.4              2.2

wkB/s(平均 KB/sec)   1,412.5      19,328.1             13.7倍
     (最大 KB/sec)   4,822.0      54,406.0             11.3倍
----------------------------------------------------------------------

冒頭でご紹介した、スループットの差は wkB/s の差に奇しくも一致したよ
うです。ということは、データ量に関わらずこれくらいの差はつくのかもしれ
ません。

ディスク・ボトルネックとなっている環境で、SSD を導入することの最大の
メリットは、「ボトルネックをディスクから CPU にシフトさせる」ことです。

「半導体の集積度は 2年で倍になる」というムーアの法則、さらにパイプラ
イン方式等による高速処理化、あるいはマルチ・プロセッサ化により、CPU の
性能は、今後も飛躍的に向上していくことでしょう。

従って、構造的・技術的に半導体ほどの性能(高速性)向上が見込めない、
磁気ディスクにおけるボトルネックを CPU にシフトさせるということは大い
に意義のあることなのです。

また、半導体のさらなる高集積化により、SSDの大容量化および低コスト化
が今後加速されていくことは確実だと思われます。

SSD の実力と、SSD に注目していくことの意義、ご理解いただけましたで
しょうか?

最初の検証では、DB をほぼ丸ごと SSD に載せた場合をテストしましたが
16GB の容量では実用的なニーズを満たすことは難しいのではないかと思われ
ます。

次回からは、SSD を限定的に使用した場合(例:REDO のみ等)を検証して
みることにします。

今回はここまで!!

サッカー 2008年欧州選手権予選は、グループBがホットです!!

安物の USB 扇風機はうるさくて使えない 茅ヶ崎にて