iscsiのパフォーマンステストをしてみたよ

昨日の記事で、
http://d.hatena.ne.jp/ichikaway/20080723/1216806584
ベンチマークしてると書いてたので、その結果を載せます。

テスト環境

サーバ2台をクロスケーブルで直結(GigabitイーサネットiScsiサーバ
  Pentium Dual E2180 2.00GHz
   1G Memory
   SATA 160G HDD(SATA1) 7200rpm
  NIC(Broadcom)
    CentOS5.1 linux
    iScsiサーバプログラム
      iScsi Enterprise Target
      http://sourceforge.net/project/showfiles.php?group_id=108475


iScsiクライアント
  Pentium Dual E2180 2.00GHz
   1G Memory
   SATA 320G HDD(SATA2) 7200rpm
  NIC(Broadcom)
    CentOS5.1 linux
    iScsiクライアントプログラム
   yum install iscsi-initiator-utils でインストールしたもの
 

iScsiサーバ、クライアント共に、OSのデータがおいてある領域はSoftware Raid1ミラーリングしてます。
iScsiサーバが提供するディスクスペースは、Raid構成ではなくて、単体のHDD領域を割り当てます。
具体的には、/dev/sda1,/dev/sdb1がRaid1で、/をマウントして、/dev/sdb2のみを/mnt/hogeにマウント(Ext3フォーマット)

今回は、ddコマンドで、2Gのデータを作って、その時間やCPU負荷を計測しました。
 dd if=/dev/zero of=output-file bs=1024 count=2000000


iScsi接続せず、単体のサーバでローカルホスト計測(160G HDD 単体ディスク)

データ書き込み速度
 2048000000 bytes (2.0 GB) copied, 41.3468 seconds, 49.5 MB/s

CPUの負荷
ユーザ負荷 1%程度、
システム負荷 15〜20%程度

iscsi経由の計測

iscsiクライアントからサーバのディスクに、2Gのファイルを作成
そのCPU負荷を計測

データ書き込み速度
 2048000000 bytes (2.0 GB) copied, 42.8023 seconds, 47.8 MB/s

iScsiクライアント側の負荷
ユーザ負荷 1%程度、
システム負荷 20〜25%程度
iScsiサーバ側の負荷
ユーザ負荷 1%程度、
システム負荷 20〜25%程度

iScsi書き込み遅延

iScsiのディスクにiScsiクライアントからデータをddで書き込み、書き込み完了メッセージが出力された時に、Lanケーブルを抜き、iScsi経由の書き込みを停止させる。
その後、iScsiサーバプログラムをとめて、iScsiで提供していたボリュームをローカルボリュームとしてマウントし、書き込まれたデータの容量をチェックした。

1Gのデータをddで書き込んだところ、
iScsiクライアント完了時のファイル容量は、1024000000byteとなり、
iScsiサーバ側のファイル容量は、1019578368byteとなった。

ファイル作成完了後、Lanケーブルを抜くまでに1秒程度かかったので、1〜2秒程度のデータ書き込み遅延がある。
ただし、これはLinuxカーネルが行っているWriteキャッシュによるものと思う。
プログラム側にはデータ書き込み完了と見せかけて、実際はある程度バッファを貯めてから一気にファイル出力しているため。


まとめ

データの書き込み速度は、2Mbyte/s程度遅くなる。
iScsi経由のCPU負荷は、5%程度上昇する。


もっと早いHDD(15000rpm程度)で行うと、CPU負荷は増加するはず。
ただし、CPUの性能を上げれば問題にならないと思う。


今回はiScsiサーバとiScsiクライアントの1:1接続でテストした。
今後は、複数iScsiクライアント環境で、Gigabitスイッチをはさんでどうなるか見てみたい。