それで、本当に、仮想化のオーバーヘッドは何であり、いつ心配する必要がありますか?


16

マシンを仮想化しない場合を理解するための良い経験則を探しています。

たとえば、ほぼ100%の使用率を持つ完全にCPUにバインドされたプロセスは、おそらく仮想化するのは得策ではありませんが、ほとんどの場合「かなりの量」(たとえば40または50%)?

別の例:1000台のマシンを仮想化する場合、たとえそれらが軽度または中程度にしか使用されていなくても、4コアのみのホストですべてを実行するのはおそらく悪いでしょう。

ホストリソースと比較した場合、マシンのワークロードまたはゲストマシンの数に基づいて仮想化に関するヒントを要約できますか?

私は通常、VirtualBoxまたはVMWareを使用してWindowsホストで仮想化しますが、これは非常に一般的な質問であると想定しています。


1
一部のCPUにバインドされたタスクでも、仮想化のポイントがあります-VMイメージにより、ユーザーがジョブを実行する環境を、たとえば単純なバッチスケジューラーを使用するよりもはるかに制御できるため、ユーザーがクラスターにジョブを送信できるようにします。
フレキソ

しかし、ある時点で「VM実行」のスケジューリングは、単一のVM内でスレッドをスケジューリングするのがすでに十分に困難であるとき、不必要なオーバーヘッドのように思えます。
-kvista

回答:


13

ディスクサブシステム。これは通常、最小の共有可能リソースです。もちろん、記憶ですが、それは明らかです。

ディスクサブシステムの制限は、両方の方法で機能します。システムが多くのディスクI / Oを使用している場合、他のゲストの速度が低下します。このゲストが運用中の場合、Webクエリへの高速応答が適切に必要です。これは非常にイライラする可能性があり、仮想ハードウェアをレンタルしない大きな理由にもなります。専用ディスクを使用すると、この問題を最小限に抑えることができます。

ゲストで512 MBのメモリのみを使用すると、すべてのディスクキャッシュがホストに配置されます。また、ゲスト間で均等に分割されていません。

CPU IOについて心配する必要はありません。このように、仮想化は非常に効率的であり、多くの場合、同じシステムで実行される複数のプロセスのみと関連しています。CPUで100%実行しているマルチxeonシステムはめったにありません。

編集:タイプミス


3
大量のディスクI / O要件が仮想化を行わない最大の理由
Jeff Atwood

おかげで-両方のコメントが役立ちます。高いディスク使用量が仮想化に問題がある理由を誰かが知っているのではないかと疑問に思っていますか?仮想化エンジニアがその比較的基本的な問題を無視するのはなぜですか?それとも、CPUの仮想化よりも根本的に複雑ですか?
kvista

注-@ジェフ、2006年のブログ投稿を読んでいるので、それがなぜより良い(つまりスピンドル予約)の理由を説明すると思いますが、仮想化設計者/実装者への私の質問は同じままです-これは仮想化にとって根本的に問題ですCPU仮想化はそうではありませんか?
-kvista

3
ハードディスクでできるシークは非常に多くあります。5msのハードディスクの場合、これは1秒あたり200シークになります。また、一般的に、OSがファイルをコピーまたはディレクトリをスキャンするときは、常にディスクioの100%を使用します。この間、ディスクからの小さなリクエストはすべて遅延され、多くのリクエストがあります。また、コピーのためにファイルシステムのバッファが無駄になります。動作するOSの概念は、アイドル状態のハードドライブに依存していると言えます。
アンティリツォラ

1
ありがとう。SSDがこの式を変更するかどうかを確認することは興味深いと思います。しかし、今は議論モードに入りすぎています。わかりました。ありがとう。
kvista

15

VMに決して入れないもの:

  • 仮想化できない特定のハードウェアを使用するもの:通常はグラフィックス、かなりの数のハードウェアセキュリティモジュール、カスタマイズされたドライバー(たとえば、特殊な目的のネットワークドライバー)を備えたもの。

  • ライセンスに問題があるシステム。一部のソフトウェアは、VMに割り当てた数に関係なく、物理CPUまたはコアごとに課金されます。32コアサーバー上のVMで実行されているシングルコア用のソフトウェアのライセンスを取得している場合、監査の対象となります。

VMに入れないようにすること:

  • コモディティハードウェアのすべてのリソースを使用するための努力を既に行っているソフトウェア。hadoopのような「ビッグデータ」の一環として機能するマシンは、通常、ベアメタルで実行するように設計されています。

  • リソースを利用するために細かく調整されるもの。データベースの調整を実際に開始すると、リソースを奪い合う仮想マシンは、実際に作業に手を貸します。

  • すでに大きなボトルネックがあるもの。既にそれ自体ではうまく機能していません。他の人とはうまく機能しないでしょう。

VMを配置するために非常に素晴らしいものがいくつかあります。

  • 非常に多くの時間をアイドル状態で過ごすもの。メールやDNSなどのユーティリティホストは、専用サーバーを保証するのに十分な負荷を現代のハードウェアに生成するのが困難です。

  • 単独ではうまく(または簡単に)拡張できないアプリケーション。レガシーコードは、このカテゴリに頻繁に分類されます。アプリがサーバーを占有するように拡張しない場合、多くの小さな仮想サーバーを使用します。

  • 小規模で始まりながら成長するプロジェクト/アプリケーション。ベアメタルで開始するのとは対照的に、VMにリソースを追加する(および新しい、より大きなハードウェアに移動する)方がはるかに簡単です。

また、単一のホストに膨大な数のVMを配置することを誇張しているかどうかはわかりませんが、VM:HW比を大きくしようとする場合は、代わりにESX、Xen、KVMを検討することをお勧めします。WindowsでVMwareやvirtualboxを使用するよりもはるかに優れています。


1
非常に役立つ組織的なコメントを+1-ありがとう!
kvista

もう1つコメント-ESXを使用している場合など、XマシンをYコアホストに配置しても意味がないと思われます。良い経験則は何ですか?仮想化のs / wホワイトペーパーはどこかでこの問題に対処する必要があると思いますが、残念ながら簡単に見つけることができません。
-kvista

1
VMwareの場合、ここから開始できます:vmware.com/technology/whyvmware/calculator
Cakemox

参考:上記のVMWareリンクごとに、CPUあたり最大30のVMを構成できます。デフォルトは、CPUあたり6 VMです。
アレックスヤーシャ

4

仮想化のパフォーマンスには2つのポイントがあります。

  • 共有ボトルネック
  • エミュレーション

共有されているボトルネックについて、他に誰が同じアイアンに乗っていますか?仮想化環境に共存している場合、ホスティングパートナーがあなたに誠実であることに非常に依存しています。

生のパフォーマンス(特に対話性)に対する主な質問は、仮想化システムのどの部分がエミュレートされるかです。これはセットアップによって異なります。ディスクとネットワークが典型的な候補です。経験則として、エミュレーションはアクションを実行するパフォーマンス「コスト」を2倍にするため、ハードウェアの待ち時間は2倍にカウントされ、スループット数は半分になります。


1
私が見た数値は、CPUが96-97%、ネットワークが70-90%、ディスクが40-70%(ベアメタルの)
ジェフアトウッド

1
+1の経験則コメントが役立ちます。
-kvista

2

最終的には、高パフォーマンスの負荷を仮想化すべきではありません。仮想化のパフォーマンスのオーバーハドは重要です。ここで私のテストの結果を参照してください。

http://www.altechnative.net/2012/08/04/virtual-performance-part-1-vmware/

OTOH、ほとんどが常にアイドル状態にある多数のマシンを統合しようとしている場合、仮想化が前進します。


1

anttiRからの良い答え。

さらに、タイムクリティカルなシステム。私が開発しているいくつかのタイムクリティカルなアプリケーションでは、Hyper-Vのダイムロット(vmがゆっくり遅れ、vmのすべての最新のOSがそれを行い、頻繁に再同期される)がうまく機能しないことがわかりました。さらに、「たくさん」のCPUを使用し、そのアプリケーション用に12コアのマシンを実稼働で使用する予定です。


アスタリスクはそのようなアプリケーションの1つです。電話会議中に視覚化すると、非常にファンキーなことが起こります。
ライアー

データ記録のクロックの安定性に問題があります;)天に感謝します。データフィードから信頼できるタイムスタンプを取得しますが、システムクロックが安定していない場合、ネットワークに問題があるかどうかを調べるのは困難です。
トムトム
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.