1台の物理サーバー上で複数の仮想サーバーを立ち上げて利用できるサーバー仮想化技術は、柔軟なサーバー運用を可能にする技術として広く使われています。ただ、その一方で注意しなければならないのが、仮想化のオーバーヘッドから生じる性能の低下です。ここでは実際のベンチマーク結果を元に、仮想化技術がどの程度パフォーマンスに影響を与えるのかを検証していきます。
IaaSでスペックどおりの性能が得られない理由
仮想サーバーの作成や削除、リソースの変更といった操作がセルフサービスでいつでも行えるIaaSは、その利便性の高さからすでに多くの企業で使われています。ただ実際に利用したユーザーから不満の声を聞くことも少なくありません。その代表的な例と言えるのが「思ったよりもパフォーマンスが出ない」というものです。
多くのIaaSでは、CPUやメモリといったサーバーリソースが異なる仮想サーバーの選択肢があり、そのいずれかを選んで利用するという流れになっています。しかし実際に使い始めてみると、表記されていたスペックほどの性能が出ないというわけです。
スペックどおりのパフォーマンスが得られない理由はいくつか挙げられますが、その中でもっとも大きいと考えられるのが仮想化によって生じたオーバーヘッドの存在です。サーバー仮想化技術にはいくつかの種類がありますが、現在IaaSで一般的に使われているのは、ハードウェアレイヤーの上にサーバー仮想化を実現する仮想化レイヤーがあり、その上位で各ユーザーが利用するOS(ゲストOS)を実行するという構成です。仮想化レイヤーで必要な処理を行うことで、1台の物理サーバーのリソースを分割し、複数のOSを実行できるようにしています。
ハードウェア上で直接OSを実行する構成と比べると、仮想化レイヤーによる処理が追加される分、パフォーマンスへの影響は避けられません。このため、たとえばCPUの物理コア1つが割り当てられた仮想サーバーであっても、1コア分の性能がフルに利用できるわけではないということです。
性能面でアドバンテージを持つベアメタルクラウド
特に大規模なサービスの提供などで多くの仮想サーバーを利用している企業では、このような性能の問題は決して見過ごせるものではないでしょう。想定したパフォーマンスが得られなければ、上位スペックを持つ仮想サーバーを利用したり、あるいは複数のサーバーを利用して負荷分散を行ったりする必要が生じ、いずれにしても仮想サーバーの利用コストの上昇につながってしまうためです。
もちろん、必要なスペックを持つ物理サーバーをオンプレミス環境で運用し、サーバー仮想化技術を使わなければ、このような問題に頭を悩ませる必要はありません。ただIaaSの利便性をすでに知ってしまった企業にとって、オンプレミスでサーバーを構築し運用する環境に戻るのは避けたいところでしょう。そこでぜひ注目したいのがベアメタルクラウドです。
物理サーバー1台をクラウド上でサービスとして提供するベアメタルクラウドは、サーバー仮想化技術を利用しないため、その物理サーバーが持つパフォーマンスをフルに利用することが可能です。前回解説したように、物理サーバーを専用のユーザーポータルなどから制御することができるため、使い勝手は通常のIaaSと大きく変わりません。まさにIaaSの使い勝手のよさと、物理サーバーの性能面でのメリットを両立したサービスとなっているのです。
ただソフトウェアによる自動化が可能なサーバー仮想化技術を使ったIaaSに対し、物理ハードウェアをコントロール可能にする必要があるベアメタルクラウドは、サービス提供側の難易度が高く、国内ではほとんど提供されていませんでした。しかしリンクはサーバーを制御するオーケストレーターを独自に開発することなどによって課題を克服、「ベアメタル型アプリプラットフォーム」としてベアメタルクラウドサービスの提供を開始しました。既存のIaaSのパフォーマンス不足に悩むユーザーにとっては、待望のサービスと言えるのではないでしょうか。
ベンチマークで見る仮想化技術のオーバーヘッド
それでは、サーバー仮想化技術を利用すると実際にどの程度のパフォーマンスの低下が生じるのでしょうか。ベアメタル型アプリプラットフォームの物理サーバー上に直接CentOSをインストールした環境と、同じ物理サーバーにKVM(Kernel-based Virtual Machine)を使って1台だけ仮想サーバーを構築し、同じくCentOSをインストールした環境のそれぞれでUnixBenchを実行し、その結果を比較してみました。なお検証に利用したサーバーのスペックは、CPUがXeon E3系4コア、メモリが16GB、ストレージはSATA接続の1TB HDDです。
物理サーバーに直接CentOSをインストールした環境では、UnixBenchのSystem Benchmarks Index Scoreの値は「5209.9」となりました。一方、KVM上の仮想サーバーの結果は「4886.4」で、約7%の性能低下が見られました。
今回、ベアメタル型アプリプラットフォームで提供されている物理サーバーと、同価格帯のAWSのインスタンスでも比較してみました。Xeon E3系CPUを搭載する物理サーバーは、ベアメタル型アプリプラットフォームでは月額2万4800円で提供されています。AWSでほぼ同価格帯となるのは「m3.xlarge」(CPU:4vCPU/メモリ:15GiB/SSD:2×40GB)です。こちらのUnixBenchの結果は「1164.5」で、ベアメタル型アプリプラットフォームの物理サーバーと比べると大きな性能差があります。
6コア12スレッドのXeon E5系CPUを搭載し、メモリは32GB、ストレージはSAS接続の146GB HDD×2とSATA接続の500GB HDDを接続する物理サーバーで同じベンチマークを実行したところ、System Benchmarks Index Scoreは「7067」でした。このサーバーと同価格帯となるAWSのインスタンスは「m3.2xlarge」(CPU:8vCPU/メモリ:30GiB/SSD:2×80GB)です。こちらのUnixBenchの結果は「1577.0」で、先ほどと同様に大きな差が開きました。
それほどアクセス頻度が高くないサーバーなど、1台の物理サーバーのリソースをすべて割り当てるとオーバースペックになるようなケースでは、サーバー仮想化技術は有効でしょう。ただ高いパフォーマンスが要求される用途では、サーバー仮想化技術によって生じるペナルティが大きな問題につながります。特に今回のテスト結果を見ると、サービスによっては大きな性能差があるため、パフォーマンスを重視する用途であれば、物理サーバーのスペックをフルに使い切れるベアメタルクラウドに大きなアドバンテージがあることが分かるでしょう。
なおリンクのベアメタル型アプリプラットフォームは、物理サーバーとして使うことも、その物理サーバーにKVMをインストールして仮想サーバーを使うこともできます。このようにハイブリッドに使えることも、このサービスの魅力だと言えるでしょう。