VMware ESXi の iSCSI アダプタは ハードウェアとソフトウェアとどっちがいいの

VMware ESXi にて、iSCSI なストレージを使うときに使用する iSCSI アダプタは、ハードウェア iSCSI アダプタと、ソフトウェア iSCSI アダプタが選べる。

iSCSI SAN 構成ガイド にある通り。

ところで、iSCSI アダプタは ハードウェアとソフトウェアとどっちがいいのだろう。

ソフトウェアの場合は、iSCSI パケットの処理を全部ソフトウェアで実行する。ホストのCPUリソースを消費するわけだ。

ハードウェアの場合は、iSCSI パケットの処理をアダプタにオフロードできるのでホストのCPUリソースを食わないわけだ。

ハードウェアでやったほうがよさそうに思える。

よし試してみよう。

こんな感じに2台のホストがある。2台のホストから、同じ iSCSI ストレージを参照している。

左のほうがソフトウェアiSCSIアダプタ。ソフトウェアiSCSIアダプタはホストにつき一つしか定義できないようだ。マルチパスはどうするのか?ソフトウェアiSCSIアダプタの設定パネル内で、複数の仮想NICを指定するとマルチパスになってくれる。

この図だと vmhba37 のなかに vmk1 と vmk2 を定義してある。なので一つのソフトウェアiSCSIアダプタの中にたくさんのパスが収容できてる。この図だと、16パスある。

こっちはハードウェアiSCSIアダプタの場合。アダプタが複数認識されている。たとえば vmhba35 のなかを見てみると、(図では見えないけど) vmk1 が定義してあり、この vmk1 から接続されるパスだけが見える。この図だと、8パスある。ソフトウェアのほうの半分だ。そりゃあ片側のパスしか定義がないからだ。

複数のハードウェアiSCSIアダプタをユーザが設定することでマルチパスになる。

このホストで Windows 7 仮想マシンを起動する。まずソフトウェア iSCSI 側で ディスクのベンチマーク。その後 vMotion でハードウェア iSCSI 側に持って行って、ディスクのベンチマーク

Windows 7 仮想マシンは同一のもの。格納されている iSCSI ストレージは同一のもの。違いは、経路だけ。ソフトウェア iSCSI かハードウェア iSCSI かの違いだけ。

それで、ベンチ結果は残念ながら、ほぼ同一という結果でした。誤差程度の差が出るだけで、変わらずです。

ハードウェアのほうが強いかと想像していましたが、ソフトウェアのほうもCPUリソースに余裕があれば遅くなる理由がない。

さらに今回使った依存型ハードウェアの場合は、MTUが変更できない。MTUサイズが1500固定なわけだ。ソフトウェアの場合はMTUサイズが9000まで増やせる。ジャンボフレームというやつが使えるわけだ。

試したい!と思ったけれど残念ながらこれを試した環境では経由するスイッチが対応していなかった。悔しい。

検索してみたらこんな記事があった。

Software iSCSI Initiator with Jumbo Frames vs Hardware dependant iSCSI Initiator without Jumbo Frames

ジャンボフレームが使えないハードウェアより、ジャンボフレームが使えるソフトウェアのほうが断然速いよ、CPUリソースを食うのが心配?ジャンボフレームだったらさっさとIO処理が終わるから待ち時間も減って万歳じゃないか。というような感じの話が書いてある。

僕の環境でもジャンボフレーム使いたい。ジャンボフレーム対応のスイッチにしてほしい。いつか使えるようになったら計測してみよ。

使えるかなー?なんて甘い気持ちでvSwitchと仮想NICのMTUサイズを9000にしてみたら、そのパスがロストしました…。マルチパスにしといてよかった。逃げ道があってよかった。