« 名物vExpert アケミ姉さんのインフラ骨盤矯正ブログ vSAN編 #3 | メイン | IBMでコンテナ化されたクラウドに力を~IBM ITインフラブログより引用~ »

2017/12/27

(更新 100万ではなく120万!!) Nutanixは単一仮想マシンで100万IOPSを達成 - HCIでは世界初!

Fig321

本記事の原文はNutanix社のGlobal Engineering / R&D TeamでManager Business Critical Appsを務めるMichael Webster氏によるものです。原文を参照したい方は1 Million IOPS in 1 VM – World First for HCI with Nutanixをご確認ください。情報は原文の投稿時のままの情報ですので、現時点では投稿時の情報と製品とで差異が出ている場合があります。

当社のNutanix社製品についてはこちら。本ブログのNutanix関連記事のまとめページはこちら

ネットワールドのNutanix関連情報はぜひ以下のポータルから取得ください(初回はID、パスワードの取得が必要です)。

この数ヶ月、私はNutanixの才能のあるエンジニアたちと新しい機能についての取り組みを行ってきました。この機能はNutanix AOSとAHV製品の将来のリリースで一般公開となります。ある土曜日の昼下がり、私はUSにおり、ふと思いついたことがありました。この機能を使ったとして、単一の仮想マシンで我々はどれだけのパフォーマンスを出すことができるんだろう? このときに私はNutanix社のAHVチームのシニアスタッフエンジニアFelipe Franciosi氏を巻き込むことにしました。単一の仮想マシンで100万IOPSに到達することが可能なのだろうか? フランスはニースのNutanix .Next Conferenceで世界初を発表することへ向けて、チューニングが始まりました。この記事にはより刺激的になるようにライブマイグレーションに関するものや、混合IOについても取り上げたい思います。

大きな成果を上げるためには大きなチームを巻き込む必要があります。今回も例外ではありません。Felipe氏はNutanix NX9030のクラスタ上に1つのUbuntuの仮想マシンを用意してくれ、最大で4KB 100% ランダムReadで最大で100万IOPSを叩き出す手助けをしてくれました。幾つもの検証を繰り返し、継続的なパフォーマンスであることや4KBの代わりに8KBでも実現ができないかなども試してみています。Felipe氏との作業の後、最後のチューニングではMalcom Crossly(AHVチームのスタッフエンジニア)にも手伝ってもらっています。我々は8KBの100%ランダムReadで100万IOPSを達成し、更にそれを24時間継続することができました。更に我々の心に打ったのはレイテンシはほんの110マイクロ秒または0.11ミリ秒だったということです。

100万IOPSを単一仮想マシンで叩き出すということはこれまでではなし得られなかったことです。VMwareとMicrosoftはこれまで何度もデモを行ってきました。ですが、いずれのケースもハイパーコンバージドインフラストラクチャ上もなく、さらにちょっと複雑なことを行っていました。VMwareの場合、数百にも及ぶLUN、ゾーニング、マスキング、オールフラッシュストレージ装置を単一仮想マシンに2つもつなぐ、などです。今回の検証の場合、我々は小さな、NX9030がほんの10台のクラスタ(もっとスケールアウトさせることができます)を利用しています。仮想マシンはローカルディスクボリュームを合計で33個(OS用に1つ、残りがIO負荷用)接続しています。

以下はNutanixクラスタ上の単一仮想マシンに最初に継続的なIOテストを行った際にキャプチャしたイメージです。

Fig322

さて、疑問が生まれてきます。本当に単一の仮想マシンで100万IOPSが必要なのでしょうか? しかもランダムReadで? 幾つかのケースではその答えはイエスです。もちろん100万IOPSも必要としないということもありますが。非常に小さなレイテンシのRead操作からメリットを受けられるアプリケーションは多くあります、例えば金融機関の支払いのゲートウェイなどです。

どうして単一の仮想マシンでなくてはならないのか? 近年では殆どの状況において多くの仮想マシンを使うスケーラブルプラットフォームの利用に興味はないのか?という疑問を持つ方もおられると思います。そのとおりです。ですが、Nutanixのような分散スケールアウトシステムの課題は常にパフォーマンスのスケールアップです。多くの仮想マシンを利用してのパフォーマンスのスケールアウトはあたり前のことなのです。しかし、単一の非常に大きな仮想マシンで非常に高いパフォーマンスを得るということはとてもトリッキーな課題です。こうしたことは特に大きなデータウェアハウス環境で重要です。

大きなスケールアップデータウェアハウスにおける能力を確認するために70%Read,30% Write、100%ランダムの64KBというワークロードも検証しています。これはSQL Serverデータベースが生成するのと類似のワークロードです。以下はこの検証の結果のイメージです。

Fig323

見て分かる通り、この構成の単一仮想マシンで我々は継続的に13GB/sのスループットをRead 70%、Write 30%で達成しました。ワーキングセットのサイズは3TB以上です。これによってこの構成はIOスループットの観点から非常に巨大なデータウェアハウスにも利用できるということを示しています。WriteについてはRoCE(RDMA over Converged Ethernet)を利用するRDMAとMallanoxの40GbE CX3 Proアダプターを利用しています。全てのアップリンクはMellanox社のSN2700スイッチに収容され、RDMA用の低遅延のロスのないファブリックで一貫したパフォーマンスを提供しています。

これがクラスターが持つパフォーマンスの全てでしょうか? いいえ、違います。この10ノードを利用して、仮想マシンの数をスケールアウトさせるとより高いパフォーマンスを達成することができます。以下のイメージのデモが示すとおりです。WindowsとIOMeterを利用して10ノードのクラスタと64KBの100%ランダムReadで28GB/sのスループットを達成することができました。

Fig324

IOパターンを70%のランダムReadと30%のランダムWriteに代えた場合、10ノードのクラスタのスループットは21GB/sまで落ちました。

Fig325

仮想マシンの数のスケールアウトが効果があるということを明らかに示しています。単一の仮想マシンでも優れたIOパフォーマンスを叩き出すことができるのです、当然のことです。お楽しみのために、32KBの100%ランダムReadの結果もお見せします。これはとあるオールフラッシュストレージベンダーでよく利用されています。

Fig326

10ノードのNutanix NX9030からなるクラスタで、10の仮想マシンから100%ランダムReadのワークロードを流したところ22GB/sが出ています。このクラスタは非常に小さいもので、32、48もしくはもっと大きなサイズへと拡張可能で、それに合わせてパフォーマンスもリニアに拡張されます。これはNutanix Acropolis分散ストレージファブリックを利用するメリットです。クラスタにノードを追加することで、増えていくワークロードのためにリニアに拡張でき、想定通りの一貫した構成を取れるのです。

これはもちろん想定通りの質問です。もしもライブマイグレーションや環境のアップグレードを行っていないときであればそうかもしれません。ですが、ライブマイグレーションが行われたとしたらどうなるでしょうか?喜んでお答えしましょう。8KBのランダムReadで100万IOPSを実行している途中に、その仮想マシンをライブマイグレーションさせてみました。以下の短いビデオを見ることで、仮想マシンを一つのホストから別のホストへ移行させた際に、平常時に戻る前にIOPSが少し減少するのを確認できます。ビデオではライブマイグレーションの発生時のみではないということも確認できます。


YouTube: 1M IOPS Live Migration

Nutanix AHVハイパーバイザーはCPU、メモリ、そしてストレージIOリソースのバランスをスマートに行い、プラットフォーム上のすべての仮想マシンが取りうる限りの最高のサービスを実現します。ビデオではマイグレーションの後でもパフォーマンスの欠落が無いということも示していますが、これも期待通りです。こちらのJosh Odgers記事をご参照下さい。将来的にどこにボトルネックが移るのかということも含まれています。

こうした変更はもしもWriteがミックスされてくるとどうなるでしょうか? 8KBのIOサイズ、70%のReadと30%のWriteで、期待値としては同じような振る舞いです。以下のビデオは単一の仮想マシンでライブマイグレーションを行っているものですが、その最中に 600K IOPSと4Gものスループットを示しています。


YouTube: 8K 7030 IOPS Live Migration

ここでお見せしている機能はAHV Turbo(IOパスをAHVカーネルから取り除く)で、次のAOS 5.5のリリースへワンクリックアップグレードすることで利用可能になります。AHV上にあるのであれば何の変更も加えずにAHV Turboからのメリットを受けることができます。ですが、もしもパフォーマンスを最大化したいと考えるのであればLinux上でマルチキューブロックIOを有効にするか、Windowsでは最新のvirtio-scsiドライバーを利用して下さい。単一仮想マシンでの検証はまた別の機能を利用していますが、この機能については5.5.1でリリースされる予定です。この機能では単一の仮想マシンは必要であればさらなるストレージIOリソースを利用してパフォーマンスを得ることができます。この機能はAcropolis分散スケジューラーとシームレスに統合されています。最後に仮想マシンは仮想化NUMAを利用しており、AOS 5.5と一緒に登場するAHVで利用できるようになります。我々はAHV TurboをワシントンDCで行われたNutanix .NEXTカンファレンスUSで最初にでもしましたが、Josh Odgersはその他にも8K 70/30についてのハイライトをこちらの記事で記載しています。

[2017年12月14日更新]

AHVをアップグレードした後には、100%の8KのIOサイズのランダムReadで1.2Mを継続させることができました。これに加えて更にCPU利用率とレイテンシが低減されています。イメージは以下:

Fig363

最後に

Nutanixのソフトウェア、Acropolis、Prism、そしてAHVは近年のサーバーハードウェアの能力を解き放ち、最も要件の高いアプリケーションであっても優れたパフォーマンスを実現することができます。新しいハードウェアの革新が業界標準のプラットフォームとしてもたらされればすぐにNutanixソフトウェアはその先進性を利用できるようにします。これによって持続的なパフォーマンスとスケーラビリティの改善のサイクルが実現され、フォークリフトによるハードウェアの入れ替えはもう考える必要がなくなるのです。Intel x86であれIBM Powerのアーキテクチャを選ぶのであれ、AHVは他のハイパーバイザーが羨むようなパフォーマンスを実現することが可能です。我々はAHVの本来の力の触りの部分を初めただけです。今後多くのものが登場するでしょう。チャンネルはそのまま! 2018年の5月のニューオリンズの.NEXT conferenceで更に詳しく!

記事担当者: マーケティング本部 三好哲生 (@Networld_NTNX

Ntc2017_2

さて、今年を締めくくる記事としてはこちらを選びました。将来のAHVではなんと単一VMで100万IOPSを実現できるということです。爆速大好きさん、こちらに集まれー(笑)

・・・ っていうか、32もvDisk繋いだり、色々とAHV Turbo以外にもおまじないが入っているようで・・・。ここまでしなきゃいけないんだったら、Nutanixのシンプルさはなくなってしまいます。今回は参加することに意義がある的な感じですかね。

今回の記事はベンチマークの数字がすごいでしょう? というよりも様々なワークロードに対応ができるだけの改善点をハイパーバイザーに取り込んでいるということに意味があると思っています。HCI専用ハイパーバイザーとしてどれだけ独自の進化をとげるのか・・・?

まさに海の覇者として独自の進化を遂げたサメのようなハイパーバイザーになってきました。(※サメは軟骨魚類という一般的な魚よりも旧世代のアーキテクチャ(笑)を採用している魚ですが、食物連鎖の頂点に位置しています、例えば、泳ぎ続けないと息ができないとか・・・)

おそらく前回の記事の機械学習だとか、色んな意味でそういうことを考えなくても良くしてくれるというNutanixのもう一つの車輪(Prism)側の対応も楽しみです。

乞うご期待です!