IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

Hyper-V の部屋

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第15回 ストレージベンチマークツールを利用してストレージ性能を測定する (小塚大介) 2014年7月

 前回はストレージの性能設計で必要になる基本的な情報についてお伝えしました。今回はストレージの性能を把握する必要性とそのためのベンチマークツールを幾つかご紹介します。

 新しいシステムを構築する際にはOSをセットアップした後にCPUやストレージの性能をベンチマークツールなどで確認することをお勧めします。アプリケーションを一通り構築した後に性能の問題が判明した場合、ハードウェアの再設定などでOSから再構築になる場合もあります。特にストレージについてはRAIDの再構築やフォーマットなどが必要になることもあるので早い段階で性能評価をしておくことは重要です。

 ここからはストレージのパフォーマンスを測定するためのベンチマークツールを紹介していきます。

Crystal Disk Mark(http://www.crystalmark.info/

 ハードディスクやSSDの性能を測定する場合によく使われるツールです。インターネットなどでストレージのベンチマーク結果を検索すると良く使われていることが分かると思います。このツールでは性能測定のために読み書きするデータの量(テストサイズ - 1000MB や 4000MB など)と測定する回数、測定対象のドライブを選択するだけで性能を測定することができます。測定結果としてはシーケンシャル Read / Write や512K、4K単位のランダムI/O、4K単位のランダムI/Oを非同期で行った場合(4K QD32)の性能を取得することができます。最後の非同期I/OにあるQDとは Queue Depth の略で、QD32は32個のIO命令を一度に発行していることを意味しています。このツールのGUIではすべて MB/s 単位で表示されていますが、[編集] - [コピー] をクリックしてメモ帳などで貼り付けることで IOPS 単位の数値も取得することができます。

fig01

 このツールを使って測定する場合はテストサイズを変えて複数回実行することをお勧めします。RAIDカードに数GBのキャッシュメモリが搭載されている場合、テストサイズが小さいとキャッシュメモリだけでアクセスを処理してしまい、本来のストレージの性能を測定できない場合もあります。また、大量のディスクでRAIDを構成している場合はQD32では負荷が低すぎる場合もありますので、その場合は別なツールでも測定することをお勧めします。

HD Tune (http://www.hdtune.com/)

 このツールも簡単に性能測定ができるツールですが、1つの特徴はストレージの全域に対して性能測定ができることです。一般的なハードディスクは内周・外周で読み書きの性能が変化することが殆どで、ハードディスクの容量を使い切るまでデータを溜め込むと読み書きが遅くなることもあります。そのため、このツールを使ってストレージの全域でどの程度の性能を発揮するのかを把握しておくことは必要です。

fig02

SQLIO (http://www.microsoft.com/en-us/download/details.aspx?id=20163)

 SQLIO はマイクロソフトが提供しているストレージのベンチマークツールです。このツールはコマンドベースで実行するツールですが、テスト内容を細かく設定することが可能です。
このツールを実行するためにはコマンドプロンプトから引数をつけて起動するする必要があります。例えば [sqlio.exe -kR -t1 -s30 -frandom -b2 -o32 d:\testfile.dat] といったコマンドを実行します。それぞれの引数の意味は以下の通りです。

  • -kR : 読み込み性能を測定します。書き込み性能を測定する場合は -kW と設定します。
  • -t1 : 1スレッドで負荷をかけます。高い負荷をかける場合は -t2 や -t4 など任意の値を設定可能です。
  • -s30 : 30秒間負荷をかけます。この値も任意の値に変更可能です。この値を 3600(1時間)や 86400(24時間)に設定して長時間負荷をかけつつ、パフォーマンスモニタでIOPS値を取得することでストレージの安定性をテストすることも可能です。
  • -frandom : ランダムI/Oのテストを行います。シーケンシャルI/Oのテストを行う場合は -fsequential と設定します。
  • -b2 : 2byte 単位の読み書きを行います。この値は実行するアプリケーションのIOサイズに合わせると良いでしょう。例えばSQL Server でのIOを前提とする場合は64byteでテストすることが多いようです。
  • -o2 : 非同期I/Oで同時に2つのI/O命令を発行することを意味します。高い負荷をかけたい場合はこの数値を高くします。(o は outstanding を意味しますが、 Queue Depth と同じ意味で利用されます)
      d:\testfile.dat : dドライブに testfile.dat というファイルを作成して、このファイルに対して負荷をかけます。任意のファイルに変更可能です。

 複数のファイルに同時に負荷をかけたい場合や、RAIDカードのキャッシュに収まらないような大きなファイルサイズを指定したい場合はパラメーターファイルを利用します。パラメーターファイルはテキストエディタで以下のように記述します。

 c:\testfile.dat 2 0x0 1000
 d:\testfile.dat 2 0x0 1000

 この例では、cドライブとdドライブの両方にtestfile.dat というファイルを作成します。そしてそれぞれに2スレッドを使って負荷をかけます。0x0 の部分は負荷をかけるために使うCPUの指定で 0x0 はすべてのCPUを利用可能であることを意味します。最後の1000の部分はファイルサイズをMB単位で指定しています。

 このパラメーターファイルを利用して実行する場合の例は以下の通りで、最後の-Fオプションでパラメーターファイルを指定しています。また、SQLIOには他にも多くのオプションが用意されているので、Readme.txtなどをご確認ください。

 sqlio -kR -s360 -fsequential -o8 -b256 -Fparam.txt

 このSQLIOで確認したいポイントとしては、数十GBクラスの大きなサイズのファイルに対してI/O性能やブロックサイズを変更した際の性能の変化、長時間負荷をかけた場合の性能の安定性などです。また、コマンドプロンプトを複数使って同時に読み込みと書き込みの負荷をかけた場合の性能を確認することもできます。

 今回紹介したツール以外にもストレージのベンチマークはありますので、いろいろ使ってみることをお勧めします。そして新しいストレージを利用する場合にはベンチマークを実行して結果を保存しておきましょう。システムの稼働後にパフォーマンスの問題が発生した場合に先に測定したベンチマーク結果が原因解析に役立つかもしれません。

 


 

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes