私はあなたのような質問に対して単純で絶対的な答えがないことを発見しました。各仮想化ソリューションの動作は、特定のパフォーマンステストで異なります。また、ディスクI / Oスループットなどのテストは、さまざまなテスト(読み取り、書き込み、書き換えなど)に分割でき、結果はソリューションごとに、またシナリオごとに異なります。このため、1つのソリューションをディスクI / Oの最速として指定するのは簡単ではありません。これが、ディスクI / Oのオーバーヘッドのようなラベルに絶対的な答えがない理由です。
異なるベンチマークテスト間の関係を見つけようとすると、より複雑になります。私がテストしたソリューションはどれも、マイクロ操作テストで優れたパフォーマンスを発揮しませんでした。たとえば、VM内で「gettimeofday()」を1回呼び出すと、ハードウェアよりも平均で11.5倍のクロックサイクルがかかります。ハイパーバイザーは、実世界のアプリケーション向けに最適化されており、マイクロ操作ではうまく機能しません。これは、実際のアプリケーションとしてより適切なアプリケーションの問題ではない場合があります。つまり、1,000クロックサイクル未満で完了するアプリケーションはすべてマイクロ操作で使用します(2.6 GHz CPUの場合、1,000クロックサイクルは385ナノ秒、つまり3.85e-7秒で消費されます)。
x86アーキテクチャのデータセンター統合のための4つの主要なソリューションについて、広範なベンチマークテストを実施しました。VM内のパフォーマンスとハードウェアのパフォーマンスを比較して、ほぼ3000回のテストを行いました。VM内で測定された最大パフォーマンスとハードウェアで測定された最大パフォーマンスの差を「オーバーヘッド」と呼びました。
ソリューション:
- VMWare ESXi 5
- Microsoft Hyper-V Windows 2008 R2 SP1
- Citrix XenServer 6
- Red Hat Enterprise Virtualization 2.2
ゲストOS:
- Microsoft Windows 2008 R2 64ビット
- Red Hat Enterprise Linux 6.1 64ビット
テスト情報:
- サーバー:8 GBのRAM、2つのIntel Xeon E5440 CPU、4つのギガビットイーサネットポートを備えた2つのSun Fire X4150
- ディスク:ギガビットイーサネット上のiSCSIを介した6X 136GB SASディスク
ベンチマークソフトウェア:
CPUとメモリ:32ビットと64ビットの両方のLinpackベンチマーク。これはCPUとメモリを集中的に使用します。
ディスクI / Oとレイテンシー:Bonnie ++
ネットワークI / O:Netperf:TCP_STREAM、TCP_RR、TCP_CRR、UDP_RRおよびUDP_STREAM
マイクロ操作:rdtscbench:システムコール、プロセス間パイプ通信
平均は、パラメーターを使用して計算されます。
CPUおよびメモリ:AVERAGE(HPL32、HPL64)
ディスクI / O:AVERAGE(put_block、rewrite、get_block)
ネットワークI / O:AVERAGE(tcp_crr、tcp_rr、tcp_stream、udp_rr、udp_stream)
マイクロ操作AVERAGE(getpid()、sysconf()、gettimeofday()、malloc [1M]、malloc [1G]、2pipes []、simplemath [])
テストシナリオでは、メトリックを使用して、4つの仮想化ソリューションの結果の平均は次のとおりです。
VMレイヤーのオーバーヘッド、Linuxゲスト:
CPUおよびメモリ:14.36%
ネットワークI / O:24.46%
ディスクI / O:8.84%
読み取りのディスク遅延:2.41倍遅い
マイクロ操作の実行時間:10.84倍遅い
VMレイヤーのオーバーヘッド、Windowsゲスト:
これらの値は一般的なものであり、特定のケースのシナリオを反映していないことに注意してください。
記事全文をご覧ください:http : //petersenna.com/en/projects/81-performance-overhead-and-comparative-performance-of-4-virtualization-solutions