本記事の原文はNutanixコミュニティのブログNutanix Connect Blogの記事の翻訳ヴァージョンです。原文の著者はNutanix社のSr. Technical Marketing EngineerであるAndy Daniel氏によるものです。原文を参照したい方はHCI and the Art of Performance Measurement - Part II - Microsoft SQL Serverをご確認ください。情報は原文の投稿時のままの情報ですので、現時点では投稿時の情報と製品とで差異が出ている場合があります。
当社のNutanix社製品についてはこちら。本ブログのNutanix関連記事のまとめページはこちら。
ネットワールドのNutanix関連情報はぜひ以下のポータルから取得ください(初回はID、パスワードの取得が必要です)。
本シリーズのパート1で、Enterprise Strategy Group(ESG)と共同で行った、Nutanixエンタープライズクラウドプラットフォーム上での4つのエンタープライズクラスでミッションクリティカルなアプリケーションのワークロードについてのパフォーマンスの一貫性、予測性、そして拡張性についての背景を共有いたしました。他のベンダーが公開しているような人工的に生成された単純なI/Oを用いる「英雄の数字」とは異なり、我々は業界の標準となるアプリケーション検証ツールを利用して、現実的なワークロードを使うことにフォーカスしていたことを思い出して下さい。パート2では、我々はMicrosoft SQL Serverを利用した検証について、更に奥深く分け入りたいと思います。
検証のためのワークロードを選ぶ際に我々はデータとお客様からのフィードバックに大きく依存しています。SQL Serverは最も展開されているエンタープライズ・アプリケーションのリストのトップにおり、これは大した驚きでは無いでしょう。様々な場面で利用されていますから、そのパフォーマンスの要件も幅広いものとなります。ですから、検証のためにリファレンスとしての標準が必要となります。幸い、オンライントランザクション処理(OLTP)のような一般的なデータベースのワークロードのための優れたツールが開発されており、検証のパラメーターとそれがどのように実環境のワークロードとして適応されるのかを理解していればその実行はさほど難しいものではありません。最終的にはQuestのベンチマークファクトリーを利用することにし、更に業界標準のTPC-Eワークロードを利用することにしました。Questのドキュメントに検証のためのTPC自体の説明書きがあります:
「TPC-Eベンチマークはデータベースを証券ファームのお客様が利用することをモデルとしており、取引や会計審査、市場調査などのトランザクションを生成します。証券ファームは金融市場とやり取りし、お客様の代わりにオーダーを実行し、対応する金融情報を更新します。
このベンチマークは「拡張性」があります。つまり、証券ファームの顧客数は証券ファーム毎に様々に定義でき、ビジネスの規模はそれに応じて変化するのです。このベンチマークではベンチマーク内で実行されるトランザクションの混合具合も定義する必要があります。TPC-Eの計測は毎秒のドランザクション数(tps - tranaction per second)で与えられます。この値はサーバが一定の期間内でどれだけの取引結果のトランザクションを実行できたかという値となります。」
4台のWindows Server 2012 R2の仮想マシンで、SQL Server2016を稼働させた(物理ノードあたり1つずつ)後、我々はNutanix上におけるアプリケーションのベストプラクティスを参照して適切に構成を行いました。SQL Serverのための手引にはデータベースを作成する際に1つ以上のデータファイルを作成し、それぞれのデータファイルを別々のおライブへ割り当てます。完全な詳細についてはMicrosoft SQL Server Best Practices Guideをご参照下さい。オールフラッシュのNutanixクラスタが適切に構成されているため、OLTPデータベースの検証は大抵はCPUによって決まります。我々はホストのCPUに適切な余力を残しながら、仮想マシンに適切なvCPUの構成を入れることに重点的にフォーカスして、最大の毎秒のトランザクション数が一貫して提供ができるようにしました。ホストのCPUの利用率はほとんどの本稼働系システムの場合で最大でも80%であると考え、この閾値を下回ることが無いように検証をチューニングしました。
OLTPデータベースを検証する際には様々な検証構成のパラメーターがあり、これが結果に大きく影響します。それらのうちの一つがデータベースのサイズであり、ベンチマークファクトリーでは「scale factor」として設定できます。非常に小さなデータベースを使って検証することでtpsのスコアを釣り上げることもできましたが、我々は現実的なサイズである300GB(scale-factorは32)をそれぞれのデータベースインスタンス毎に設定しました。データベースを完全利用するため、我々は最終的にはエージェント仮想マシンから各々のデータベースに対して80同時ユーザーで付加生成しました。テストのパラメーターとしては「no think time(考えている時間は加味しない)」を設定しています。
ハイパーコンバージドインフラストラクチャの検証においてパフォーマンスの拡張性は非常に重要です。ESGは特にOLTPのパフォーマンスの拡張性とより多くの仮想マシンとインスタンスをクラスタに追加した際のワークロードの分散に興味を持ちました。ですから、単一仮想マシンとSQLサーバインスタンスの最適な構成を決めるための様々な事前検証を終えた後、検証はそれぞれの仮想マシン数で実行されており(1から4)、仮想マシンとインスタンスを追加する毎に予測通りのパフォーマンスの拡張がなされることを確認しています。以下の画像で確認できるとおり、tpsがリニアに拡張されるだけでなく、平均トランザクション応答時間は低く、さらに特筆できるほどに安定しています。
テストの結果、インスタンスあたりの毎秒のトランザクション数の総計は2,635~2,703と非常に狭い幅に収まっており、平均すると2,658です。ワークロードをスケールさせると、ESGは特にそのレスポンスタイムに感心していました。「ESGにとって更に印象的だったのは平均トランザクション応答時間でした、これは単なるストレージのレイテンシ以上のものだと考えることができますが、データベースの応答についてはコンピューティングが決定因子であるということがわかります。Nutanixのソリューションは一貫してワークロードが動作している4ノード全てで、0.031秒という超速のトランザクション時間を提供しているのです。」
パート1で言及したように、我々の検証はアプリケーションレベルでのパフォーマンスにフォーカスしていますが、その下のストレージのパフォーマンスに全てついても監視を行っており、平均のストレージのReadとWriteのレイテンシはそれぞれ0.95と1.59ミリ秒であったと記録されています。この低遅延によって、適切にCPUを稼働させることで最良の結果になるということがはっきりとわかります。この結果をより良い文脈で理解するために、これはOLTPでの検証だということを忘れてはいけません。すべての検証は継続的に行われたものです。言い方を変えるとターゲットとなるパフォーマンスは最高でかつ、少しの変動はありながらも安定的なものであるということです。もしも適切に構成されていればtpsの結果は狭い幅に「収まる」のであり、そのポイントに一貫してテストを停止するまであり続けます。これは実環境におけるパフォーマンスの能力を現実的に図っているといえることになります。
我々の検証に先駆けて、ESGは現在のハイパーコンバージドの市場を調査し、いくつかの結論に至っています。そのうちの一つが「コンピューティングおよびストレージの両方を活用するトランザクションヘビーなアプリケーションという観点からは、ハイパーコンバージドソリューションは予測性のある一貫したパフォーマンスを拡張時に提供することができない」というものでした。我々の検証をもとにすると、彼らは残念なことにその誤った概念を認めなくてはなりませんでした。つまり「・・・[Nutanixの]OLTPデータベース環境はデータベースインスタンス数が倍になっても予測性のあるパフォーマンスを提供できる、加えてクラスタ全体にIOPSが分散したとしても応答時間は一貫して低く、さらにデータがより大きくなったとしてもそれが実現できる」
個人的にこの結果を見直した際に、私は更に幾つか思うところがありました。自身のキャリアを最近はストレージのパフォーマンスやフラッシュ関連の現場に費やしているため、私はオールフラッシュのソリューションを導入することでデータセンタに一貫した、継続的なパフォーマンスをも足らせる可能性があるということは知っていました。しかし、このオールフラッシュを完全に利用するとなると、従来のメディアに加えてより多くのCPUサイクルが必要になります。CPUをより多く利用するSQL Serverのようなアプリケーションの要件を考えあわせるとこれはパフォーマンスについての麻薬のようなものになりかねません。最終的に我々は超低遅延をホスト内のストレージ(データローカリティ)で実現することができることを示し、さらにあらゆる他のオーバーヘッドを排除できることも示すことができました。ほぼリニアなIOPSと拡張しても低遅延を維持できることが合わさっていることがNutanixプラットフォームのパフォーマンスの秘伝のタレなのです。
SQLの検証とパフォーマンスの数字の詳細についてはESGのレポートを入手して下さい。そして、Nutanix Nextコミュニティでどう思ったのか教えてください、そして更に会話を続けましょう。
レポートはこちらからダウンロードできます。
議論しましょう : 我々のコミュニティのフォーラムで会話をづづけましょう。
© 2017 Nutanix, Inc. All rights reserved. Nutanix and the Nutanix logo are registered trademarks or trademarks of Nutanix, Inc. in the United States and other countries. All other brand names mentioned herein are for identification purposes only and may be the trademarks of their respective holder(s).
記事担当者: マーケティング本部 三好哲生 (@Networld_NTNX)
Andyさん、やっぱり訳しにくい!(笑) 今回は前回のパート1に引き続いて、SQL Serverのパフォーマンスについて更に詳細が明かされます。ですが、記事を読んで分かる通り、問題はストレージではなくCPUです。Nutanixには強力なCPUを搭載することができますが、その強力なCPUを用いてさえ、オールフラッシュ構成のNutanixのストレージパフォーマンスを圧倒することは(OLTPでは)できません。
Andyさんが言うように、アプリケーションのことを考えるとHCIをストレージとして評価することがどれだけ愚かなことなのか、そしてその評価でものを買ってしまうと・・・ゾッとしますね。
また、NutanixのスケーラビリティについてもESGの当初の想定を覆すほどの結果だったということも重要です。Nutanixはローカリティがありますので仮想マシンから見たときに、そのI/O性能を決めるノードはわずか、2(RF2の場合、RF3なら3)ノードです。どんなにクラスタが大きくなってもこの鉄則は崩れることがありません。スケーラビリティというより、実際にはスケールアウトしても影響範囲が限定的なのでリニアに性能を伸ばしていくことができるのです。この考え方はAndyさんの古巣のPernixDataと同様ですね。