■ネットワークの性能
次にネットワークの性能を見ていきます。ネットワークの性能はdbenchパッケージに含まれている「tbench」という負荷テストツールで計測します。このツールは2つのノード間でデータを転送させ、そのスループットを計測するもので、dbenchと同様にスレッド数によって負荷を上げていくことができます。
ネットワークについてはテスト全体を通して約20%の劣化となっています。
さて、ネットワークについても、仮想マシンが2台になった場合の性能を見ておきたいと思います。次のグラフをご覧ください。
テスト全体を通じて、仮想マシントータルのスループットが物理マシンのスループットを上回っています。実際には、テストツールとして何を用いるかによって若干結果がブレることが予想されます。それでも、複数台の仮想マシンを稼働させるサーバの性能をトータルで見た場合、ハードウェアの性能は十分に引き出せるといえます。
ここまでで、物理マシンと仮想マシンにどれだけの性能差があるのかを見てきました。ここで紹介した数字は、あくまでも基本性能のベンチマーク結果であり、最終的なアプリケーションの性能数値ではありません。それでも、仮想マシンの性能がどの程度であるのかを知るのに役立つ指標となると思います。
次に、仮想ディスクのフォーマットが仮想マシンの性能に与えるインパクトを検証していきましょう。仮想ディスクとは仮想マシンのファイルシステムを保存する媒体であり、大きく分けて、以下の3種類があります。
1は、あらかじめホストOSで切り出しておいた論理ボリュームに、直接仮想マシンのデータを保存する形式です。
2は仮想マシンに割り当てたい仮想ディスクと同じ容量のファイルを作成し、そのファイルに仮想マシンのデータを保存する形式です。ファイルを作成した時点で指定した容量を消費します。
3は、2と同様にまずファイルを作成し、そのファイルに仮想マシンのデータを保存しますが、実際にデータが存在する分しかディスクを消費しません。
例えば、10Gbytesの容量を持つ仮想ディスクのファイルを作成し、実際に書き込むデータは2Gbytesであるケースを想定しましょう。この場合、そのファイルが存在しているファイルシステムでは、ディスク容量を2Gbytesしか消費しません。データが実際に書き込まれるにつれて、この消費容量がオンデマンドで増えていくことになります。この方式はディスクの消費容量を大幅に節約できる半面、書き込み性能が低下するといわれています。
■フォーマットによる性能差
それでは、実際にこの3つのフォーマットの仮想ディスクを用いて仮想マシンを作成し、それぞれの性能を検証してみたいと思います。サーバ機と仮想マシンのスペックは「物理マシンと仮想マシンの性能差」のテストと同様です。性能計測も、前述のテストで用いたdbenchを再び使用します。
以下が、そのテスト結果です。
LVMの論理ボリュームを用いた仮想マシンが最も良い性能を示し、次いでファイル、Sparseファイルとなっています。確かに優劣はあるものの、その差はわずかです。
ところで、このテストは、ストレージコントローラのWrite Cacheが「ON」の状態で行っています。
Write Cache(ライトキャッシュ)とは、物理的にメインメモリとは別に存在するストレージコントローラ専用のメモリです。OSからは透過的に動作し、OSから書き込み命令のあったデータを専用メモリに書き込んだ時点で、OS側に制御が返ります。実際のディスクへの書き込み完了を待たずに次の処理に移ることができるため、I/O待ち時間が大幅に短縮されます。
ハイエンドのRAIDコントローラなどには、このWrite Cache機構が搭載されていることがほとんどです。しかし一般的なサーバ機には、まだ標準では搭載されていないケースが多いと思われます。
■環境に応じてWrite Cacheを賢く使う
それでは、このWrite Cache機構を「OFF」にするとどうなるでしょうか。以下はWrite CacheをOFFにして、先ほどと同様のテストを行った結果です。
LVMの論理ボリューム、ファイルを用いた仮想マシンでは少し性能が劣化した程度ですが、Sparseファイルを用いた仮想マシンでは大幅に処理能力がダウンしています。
前二者は、OSのページキャッシュを活用してディスクへの同期処理をうまく節約できていたので、Write Cacheがなくてもそれなりの処理速度を保つことができます。しかしSparseファイルの方は、そのフォーマット上、データ書き込みを行うとより多くのディスク同期処理が発生してしまいます(注)。このため、2つ目のテストではWrite Cacheに頼っていた部分がI/O待ち時間になってしまい、それが処理速度の低下という結果を招いたと考えられます。
注:Sparseファイルへのデータ書き込みに余計な負荷が掛かるのは、仮想化に起因するものではありません。物理マシン上でも、Sparseファイルへの書き込みは通常のファイルへの書き込みに比べて速度が劣化します
従って、結果としてはSparseファイルをベースとした仮想マシンは、書き込み処理が多い環境下では極端に性能が劣化する場合があるため注意が必要です。しかしWrite Cache付きのストレージコントローラをインストールすることにより、Sparseファイルを使用した仮想マシンでも、ほかの仮想ディスクフォーマットと同レベルの処理能力へと性能を飛躍的に改善できる可能性があります。
今日では、Write Cacheを搭載したストレージコントローラは比較的安価に購入できます。仮想ディスクにSparseファイルを用いる環境では、このようなハードウェアは必須といえるでしょう。SparseファイルとストレージコントローラのWrite Cacheを組み合わせることにより、パフォーマンスの劣化を緩和させながらディスクを大幅に節約できます。これは仮想マシン環境だからこそ実現できるコストダウンの一例といえます。
あるいは、仮想ディスクがSparseファイルでなくとも、一部のデータベースなどのアプリケーションが同期書き込みを頻発するような場合も同様です。特にサーバ統合を行う仮想化環境ではディスクI/Oはボトルネックとなる可能性が高い個所なので、さらにストレージコントローラのWrite Cacheの重要性は高いといえます。
以上の2種類のパフォーマンステストを通じて、どういった要素が仮想マシンの性能に影響を与えるかが分かってきたと思います。次回はこれを踏まえて、1台の物理マシンにどのくらいの仮想マシンを搭載できるのかという仮想マシンの集約密度について詳しく見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.