前回に引き継ぎ,今回は実際にディスク・サブシステムをどのように構成すればパフォーマンスが向上するのかについて考えていく。なお,グラフ中の単位ブロック・サイズは,1ブロック=512バイトである。

(1)ディスク単体の性能

 ディスクの回転数は,パフォーマンスに直接影響を与える場合が多い。例えば,図1の場合では,ディスクを,1万rpm(round per minutes,回転/分,以下10krpm)から1万5000rpm(以下15krpm)のものに変えることによって,パフォーマンスが10~50%程度向上していることが読み取れる。

図1●回転数の差によるハードディスクのパフォーマンスの違い
図1●回転数の差によるハードディスクのパフォーマンスの違い
10krpmと15krpmでの比較例。

 ディスクがボトルネックになっている場合であれば,ディスクの回転数を10krpmから15krpmのものに変えることで,3割程度のパフォーマンス向上が期待できる。

(2)RAIDコントローラの選択

 RAIDコントローラの性能は,搭載されている制御チップの優劣に大きく左右される。このことは,RAIDコントローラの仕様から読み取ることは困難ではあるが,極めて重要な要素だ。また,RAIDコントローラにはキャッシュ・メモリーが実装されていて,データのリード/ライト時にこのキャッシュを使用することで,低速なハードディスクへのアクセスを極力抑えるようになっている。同一のRAIDコントローラであれば,このキャッシュの容量が多いほどディスク・サブシステムのI/Oパフォーマンス向上が期待できる。

 例えば,図2は「32Mバイトのリード・キャッシュ/ライト・キャッシュなし」と「64Mバイトのリード・キャッシュ/64Mバイトのライト・キャッシュ」を搭載したRAIDコントローラを用いて比較をしたものである。

図2●RAIDコントローラのキャッシュ容量の違いによるパフォーマンス比較例
図2●RAIDコントローラのキャッシュ容量の違いによるパフォーマンス比較例

 グラフからは,ライト・キャッシュがあることで,ライト処理に対して280%程度のパフォーマンスが向上していることが読み取れる。

 RAIDコントローラにキャッシュがあることでキャッシュがないときに比べて影響が出やすいのが,シーケンシャル・リードとランダム・ライトの場合だ。なぜなら,シーケンシャル・リードでは,連続したブロックのデータを読み込むことになるが,RAIDコントローラがキャッシュにその連続したデータを先読みする機能があるので高速化が図れるからである。

 また,ランダム・ライトではディスクにアクセスする時間間隔も一定しないことが一般的だが,データを一時的にキャッシュに書き込んでおき,空き時間やキャッシュがいっぱいになったときにまとめてハード・ディスク・ドライブに書き込むことで,低速なハード・ディスク・ドライブへのアクセスを極力抑えたり,アクセス頻度を平準化することができるからである。

 低価のRAIDコントローラではライト・キャッシュが搭載されていない場合があるので注意が必要だ。高パフォーマンスが要求されるシステムを構築する場合,ライト処理が多用されているのであれば,ライト・キャッシュが搭載されているRAIDコントローラを選択することが不可欠になってくる。