ストレージ限界試験について

ストレージのパフォーマンス検証方法には、色々あると思いますが、一般的には、Bonnie++IOzone といったベンチマークツールが良く使われてるような気がします。

普通にパフォーマンスを計るときには、専用のコマンドにオプションを加えて実行し、結果が返ってきたら解析。 ですが、一回実行すると内部でファイル作成ファイル削除ランダムアクセス等 色んな作業が行われるので、この一連の作業をコマンド一発で終わらせるのではなく、複数のサーバ上で無限にループさせることによって以下のような負荷・限界試験もできるかなと思います。

  • どれだけ性能が出せるか
  • ストレージがどれだけ高い IOPS に耐えられるか
  • Latency がいくつに達したらサーバに影響が出るか

こうして得られた結果は、システム基盤構築・設計時に重要な判断基準になるので、システムにどれだけの IOPS 要求が求められるのかを事前に把握しておくのも大事です。

ストレージの負荷・限界を測定するためのもっといい専用ツールがあるかもしれませんが、とりあえず、一般的に使われるベンチマークツールを利用してなんとか計って見たいときに使えると思います。

Cloud Diagram クラウド構成図

前提条件

前提条件として、bonnie++ がインストールされている必要があります。

まだ未インストールの方は、以下を参考にし、事前に導入してください。

bonnie++ を無限ループで回す

以下のスクリプトでは、2GB のファイルをメモリ 1GB を使ってバッファーキャッシュなしで(-b) 作成する処理を無限ループさせます。

メモリサイズに合わせて、line 18line 24 を修正してください。

例えば、メモリ 10GB を搭載しているサーバ上で、bonnie++ プロセスを 10個動かしたい場合には、line 18110 に変更します。

一つの bonnie++ プロセスが消費するメモリ量を 2GB に増やして、プロセスを 5個動かしたい場合には、line 1815 に変更し、line 2410242048 に変更します。

#!/bin/bash

#### 実行中の bonnie++ プロセス数取得
function get_bonnie_prc_cnt() {
    ps -ef | fgrep 'bonnie++ -d' | grep -v "grep" | wc -l
}


#### bonnie++ 無限 Loop
#### 実行させる bonnie++ は、1個だけにする
#### プロセス数チェック間隔は、5秒置き
RETRY_TIME=5

while :
do
    BONNIE_PRC_CNT=`get_bonnie_prc_cnt`

    if [ $BONNIE_PRC_CNT -ge 1 ]; then
        sleep $RETRY_TIME
        continue
    fi

    #### 2GB のファイルをメモリ 1GB を使ってバッファーキャッシュなしで(-b) 作成
    bonnie++ -d /tmp -s 2048 -r 1024 -b -u root -n 256:1024:1024:16 &
done

ファイルサイズについて

オプション -s に指定するファイルサイズは、必ず、メモリサイズの * 2 を指定する必要があります。

後は、以下のようにバックグラウンドで実行させておくだけです。

実行した後は、ターミナルから抜けても実行され続けるので、ストレージ専用のパフォーマンス監視ツールなどを使ってストレージの IOPSLatency などを監視すると良いでしょう。

バックグラウンドで実行させるRaw Code(S)Raw Code(T)
# ./bonnie_loop.sh &

# exit
$ exit

全ての処理を止めたいときには、以下のようにプロセスを殺します。

シェルのファイル名前にも bonnie が含まれているので、bonniegrep をかけるとシェルスクリプトを含めて実行中の bonnie++ プロセスが全て出てくるので、全てのプロセスを強制終了します。

また、仮想マシンが高負荷状態で反応が遅かったり操作しづらかったら仮想マシン自体をを強制的にパワーオフした方が良いです。

全ての処理を止めるRaw Code(S)Raw Code(T)
# ps -ef | grep "bonnie" | grep -v "grep"
root     12956 12925  0 09:53 pts/1    00:00:00 /bin/bash ./bonnie_loop.sh
root     12962 12956 85 09:53 pts/1    00:00:17 bonnie++ -d /tmp -s 2048 -r 1024 -b -u root

# kill -9 12956 12962

上記の構成図では、全ての VM を一つのデータストアに入れていますが、他のデータストアにばらばらに配置して合計 IOPS の最大値、レイテンシーなどを監視すると良いです。

私の場合には、仮想マシン 30台構成で 2万 IOPS まで確認して止めましたが、やり過ぎるとディスクが壊れてしまう可能性もあります。

以上、bonnie++ 無限ループでストレージ限界試験 でした。