この質問は非常に一般的ですが、最も具体的には、Ubuntu Enterprise Cloudを実行している仮想マシンが、仮想化のない同じ物理マシンよりも遅いかどうかを知りたいと思っています。いくらですか(1%、5%、10%)?
誰かがWebサーバーまたはDBサーバー(仮想VS物理)のパフォーマンスの違いを測定しましたか?
構成に依存している場合、64ビットのubuntuエンタープライズサーバーを実行している2つのクアッドコアプロセッサ、12 GBのメモリ、および一連のSSDディスクを想像してみましょう。その上、使用可能なすべてのリソースを使用できる仮想マシンは1つだけでした。
ベアメタル\タイプ1ハイパーバイザーでの汎用サーバーワークロードの一般的なエクスペリエンスは、CPUオーバーヘッドの約1〜5%およびメモリオーバーヘッドの5〜10%で、追加のオーバーヘッドは全体によって異なりますIOロード。これは、基盤となるハードウェアが適切に設計されているVMware ESX\ESXi、Microsoft Hyper-V、およびXenで動作する最新のゲストOSの私の経験とほぼ同じです。サポートするハードウェアで実行される64ビットサーバーオペレーティングシステムの場合最新のCPUハードウェア仮想化拡張機能では、すべてのType 1ハイパーバイザーがその1%のオーバーヘッド数に向かっていると予想します。KVMの成熟度は、現時点ではXen(またはVMware)までは十分ではありませんが、そうなると考える理由はありません。あなたが説明する例については、それらよりも著しく悪いです。
ただし、特定のユースケースでは、仮想環境の全体的な「パフォーマンス」は、ベアメタルの個別のサーバーを超える場合があります。 ディスカッションの例を示します VMware ClusteredインプリメンテーションがベアメタルOracle RACよりも高速\高速\安価になる方法について。 VMwareのメモリ管理技術(特に透過的なページ共有)は、十分に類似した十分なVMがある場合、メモリのオーバーヘッドをほぼ完全に排除できます。これらすべてのケースで重要なことは、仮想化がもたらすパフォーマンス\効率の利点は、複数のVMをホストに統合している場合にのみ実現されることです。例(1 VM on the Host))は常にベアメタルよりもある程度遅くなります。
これはすべて有用ですが、サーバー仮想化に関する実際の問題は、管理、高可用性技術、およびスケーラビリティに集中する傾向があります。 2-5%のCPUパフォーマンスマージンは、20、40、または各ホストで必要なVMの数に効率的にスケーリングできるほど重要ではありません。ベースラインとして少し高速のCPUを選択するか、クラスターにノードを追加することでパフォーマンスの低下に対処できますが、ホストが実行できるVMの数をホストがスケールアウトできない場合、または環境の管理が難しい場合、またはサーバーの仮想化の観点からすると、信頼性が低く、価値がありません。
「パフォーマンス」には多くの側面があります。 n00bsは、OSの起動時間を測定します。 Windows 2012は、実際のHDでは12秒、SSDでは1秒で起動するので、すごい素晴らしいです。
しかし、この種の測定はあまり役に立ちません。パフォーマンスはOSの起動時間と同じですが、OSは月に1回起動するため、最適化しても意味がありません。
それは私の日常の仕事なので、「パフォーマンス」を構成する次の4つの部分を指摘するかもしれません
CPU負荷
これは同等である必要があります。つまり、ベアメタルで1000ミリ秒かかるタスクは、同じハードウェア(一部のハードウェア)のアイドルVM環境で1000ミリ秒のプロセス時間とおそらく1050ミリ秒のクロック時間で実行されます。詳細は後で)。 processtimeとqueryperformancecounterとMSDNのMSDNをGoogleにすると、VMがCPU時間をどれだけ消費するかを示すことができます。
SQLパフォーマンス
SQLのパフォーマンスは、SQLデータが格納されているデータストアのIOに大きく依存しています。バッファローのホームNASで見られる第1世代のISCSIと、DCEを使用したISCSIと実際のオールドスクールFC環境との間に、すべてのレベルで300%の違いが見られます。 FCレイテンシは最も低いアーカイブ可能性であり、TCP/IPデータセンターの機能強化のためにFCプロトコルの「コピー」につながるため、現在でもFCが勝っています。ここでIOpsとレイテンシは重要ですが、サーバープロセスからメディアへのIO帯域幅も-アプリがNo-SQLになるか、Datawarehousingになる傾向があるか、またはERPなどの中間にあるかによって異なります_システム...中小企業にはSage KHK、大企業にはSAP。どちらにも企業の財務統計に関するCEOの見解があり、CEOがボタンをクリックすると、データベースのIOサブシステムに弱点がある数日間、休暇を効果的に付与します。
ファイルシステムアクセス
ビデオストリーミングなどの一部のアプリケーションは、保証された最小帯域幅に依存しています。他のアプリケーションは、hex_editorで大きなファイルを開く、ビデオプロジェクトをお気に入りの映画にロードするなど、最大IOスループットに依存しています。 。 VMの一般的な状況ではありません。IOpsも開発者にとって重要な場合があります。開発環境は非常に敏感であり、VMでそれを実行する誘惑が高いため、開発者はVMを使用することがよくあります。多くの場合、大きなプロジェクトをコンパイルすると、大量の小さなファイルが読み取られ、コンパイラーの処理が行われ、EXEとそれに付随するコンポーネントがビルドされます。
クライアントへのネットワーク遅延
ここでは、Word 2010、Openoffice Writer、LaTEX、GSViewなどのWYSIWIGプログラムの使いやすさは、クライアントアクションからサーバーへのマウスアクションの速度に大きく依存しています。特にCADアプリでは、これは重要です....しかし、LANの問題ではなく、WANを介したリモートアクセスが重要です。
しかし-私は長年のコンサルティングの観点から話します-管理者パスワードを持っているユーザー(そして彼らはしばしばBIG予算とBIG手帳を持っているBIG会社の従業員です)がこれとそれについて不満を言っていますが、それは明確にされなければなりませんどのパフォーマンスコンポーネントが彼らにとって重要であり、どれが彼らが使用するアプリケーションの観点から重要です。
これはおそらくメモ帳ではありませんが、これとそれを設計するための非常に洗練されたアプリケーションです。これも非常に高価であり、VMware、HyperV、またはXenappに移動する必要があり、期待どおりに動作しません。
しかし、純粋なCPUパフォーマンス用に作られていないブレードの1.5 GHz Xeonで実行される可能性があることを心に留めていません。それらは平均のために構築されており、「CPUサイクルあたりの$に対して最適化されている」または「ワットあたりのCPUサイクル」としましょう。
そして私たちがトレードオフと経済化について話すとき-それは主にオーバーコミットメントにつながります。オーバーコミットメントは、CPUをかなりうまく処理できるリソースの不足につながりますが、メモリの不足はページングにつながり、コアルーターのIOの不足は、すべての応答時間の増加につながり、あらゆる種類のトランザクションの過負荷につながりますストレージがあると、すべての便利なアプリの応答が速すぎます。ここでは監視が必要ですが、多くのソフトウェアベンダーはそのような情報を提供できません....一方、3つの物理サーバーのリソースを持つホストは、物理サーバーと同じレイアウトの8つの仮想マシンを処理できる可能性が高いです...
アイドル状態のシステムでのCPUのトレードオフにより、システムのパフォーマンスが物理システムより50%遅くなることがよくあります。一方、顧客のIT担当者が_に移動したい「現実の」OSと「現実の」アプリをインストールすることはできません。VMボックス。そして、VMテクノロジーが純粋なCPU速度をトレードすることで柔軟性を提供できることを明確にするのに、数日(おそらく数週間ですが、42回のミーティング)かかります。これは、最近より大きなVM環境をホストしているこれらのブレードシステムのCPUに組み込まれているだけです。また、メモリは同等ではなく、いくつかのトレードオフが適用されます。 DDR3 1600 CL10のメモリ帯域幅はDDR2 800 ECC LLRよりも高くなります。これにより、Intel CPUがAMD CPUとは異なる方法でIntel CPUの利益を享受することを誰もが知っています。ただし、本稼働環境ではめったに使用されず、ホワイトボックスや、自分の国のデータセンターが請求する価格の10%でデータセンターサービスを提供する第三世界の国々でホストされているデータセンターで使用されることはほとんどありません。 Citrxのおかげで、エンドユーザーとデータセンターの間のレイテンシが150ミリ秒未満であれば、データセンターはどこにでも存在できます。
そしてホームユーザーの視点....
最後に重要なことですが、Win7またはXPを捨ててLinuxと交換したい人もいますが、実際にはLinuxとWindowsで使用できるゲームはほとんどないため、ゲームの質問が出てきます。ゲームは3Dアクセラレーションに大きく依存しています。 VMWare 6.5ワークステーションと接続された無料のプレーヤーはDirectX 9を処理できます。つまり、VMのDoom3は、ホストのグラフィックカードで全画面で実行できます。ゲームは主に32ビットアプリであるため、3 GBを超えることはなく、ほとんどが3 CPUを超えません(Crysisで確認)。新しいVMプレーヤーとWSは、より高いDirectXバージョンとおそらくOpenGLも処理できます... VMware 6.5でUTとUT2004をゲームしました。ホストにはATI Radeon 2600モバイルとT5440がありましたCPU。 1280x800で安定しており、ネットワークゲームでもプレイ可能でした。
はい。しかし、それは問題ではありません。通常、その差はごくわずかです(1%から5%)。
特定の状況では、仮想化が物理的なパフォーマンスを超える可能性があることを指摘しておきます。ハードウェアエミュレーションが特定のlanカードである場合でも、ネットワークレイヤーはギガビット速度に制限されないため、同じサーバー上のVMは、平均的なネットワーク機器を備えた複数の物理サーバーの速度を超える速度で相互に通信できます。
同じテストを実行している同じソフトウェア(大量のWebトラフィックと大量のSQL Serverアクセスを備えた.NETベースのWebアプリケーション)のいくつかのテスト比較を行っています。これが私が見たものです:
誰かが1%異なるか同じか、VMの方が速いことを証明するベンチマークを構築する方法を簡単に確認できます。 VMがソフトウェアでシミュレートする必要があるローカルハードウェアサポートの利点をプロセスが利用する場所には何も含めないでください。
特定の物理ハードウェアにインストールされたオペレーティングシステム、ソフトウェア、およびデータを、同じ元のハードウェアのハイパーバイザー内に単独でインストールされた同じオペレーティングシステム、ソフトウェア、およびデータと比較しようとしています。 (少なくとも最初は)これを行う人はほとんどいないため、この比較は無効です。もちろん、それはおそらく遅くなるでしょう。ありがたいことに、サーバーを仮想化する最も一般的なポイントを完全に逃してしまいます。
ここでのより良い例は、データセンター内の2つ(またはそれ以上)の古いサーバーを調べることです。適度にパフォーマンスは高いが、現在は古く、更新サイクルが開始されているサーバーを探します。これらのサーバーはすでに古いハードウェアで正常に動作しているため、ムーアの法則のおかげで、新しく得られるものはすべて仕様を超えるものになります。
それで、あなたは何をしますか?それは簡単です。 2つの新しいサーバーを購入するのではなく、1つだけを購入してから、古いサーバーの両方を同じ物理的な新しいデバイスに移行します。新しいサーバーを購入する準備をするときは、両方の古いサーバーからの負荷だけでなく、ハイパーバイザーからの負荷も処理するのに十分な容量があるように計画します(そして少し余分なため、パフォーマンスの向上と成長を可能にすることができます)。
要約すると、仮想マシンはほとんどの状況で「十分な」パフォーマンスを提供し、サーバーをより有効に活用して「無駄な」コンピューティング能力を回避するのに役立ちます。
これをもう少し伸ばしてみましょう。これらは古いサーバーなので、おそらくあなたはそれらを置き換えるためにいくつかの単純な$ 1500ピザボックスサーバーを見ていたでしょう。おそらく、これらのピザの箱の1つでも、仮想の古いマシンの両方からの負荷を簡単に処理できる可能性があります...しかし、実際のハードウェアに$ 7500以上を費やすことにしたとします。これで、数十もの既存のサーバーを簡単に処理できるデバイスがあり(ストレージとネットワークの処理方法によって異なります)、初期コストはわずか5です。また、1つの物理サーバーのみを管理し、分離するという利点もあります。ハードウェアからのソフトウェア(つまり、ハードウェアの更新で新しいWindowsライセンスが必要になったり、ダウンタイムが発生したりする可能性が低くなります)、消費電力を大幅に節約でき、ハイパーバイザーは以前よりも優れたパフォーマンス情報を提供できます。これらのうち2つを取得します。データセンター全体が2台のマシンにまでダウンしている可能性があるか、2台目のサーバーをホットスタンバイとして使用して、より高い可用性のストーリーを伝えたい場合があります。
ここでの私のポイントは、それはパフォーマンスだけではありません。完全に優れた運用サーバーを使用して同等のハードウェアに仮想化することは決してないからです。それは、コスト削減と、高可用性などの統合によって得られるその他の利点に関するものです。これらの利点の実現は、サーバーを別のハードウェアに移動することを意味します。つまり、ハイパーバイザーのペナルティを考慮に入れて、時間をかけてそのハードウェアのサイズを適切に決定する必要があります。はい、それらのマシンがそれぞれ独自の物理デバイス上にある場合よりも、合計でわずかに多くの計算能力が必要になる場合があります(ヒント:実際にはおそらくはるかに少ない総計算能力)必要ですが、それは- 全体のコストが低く、エネルギー効率が高く、保守が容易です 1台の物理サーバーを実行するよりも、多数を実行するよりも。
マイクロソフトはこの点に関して、BizTalkサーバーとSQL Serverをさまざまな構成で使用していくつかのベンチマークテストを行ったようです。以下のリンクを参照してください。
http://msdn.Microsoft.com/en-us/library/cc768537(v = BTS.10).aspx
SSD(OCZ Vertex 2)にアップグレードしたばかりで、XP VM開発環境を実行しています。ソフトウェア開発者です。プログラムを起動すると(ロードに時間をかけるのに十分な大きさ)、仮想CPUの1つのコアがペグアウトすることに気づきました。これは、ロード時に発生しますIE。CPUがペグアウトするため、 、ボトルネックはSSDではなくCPUであると思います。しかし、奇妙に思えますが、物理マシンで同じことを行うと、ロードが速くなり、VMWareの処理オーバーヘッドが増えると感じています。ディスクアクセスでCPUを消費しています。
一例として、私はDelphiを使用しており、通常のHDDが搭載された物理マシンでは、コールドブートから開始するのに20秒かかる場合があります。 VMでは、コールドスタートから19秒でロードされます。それほど大きな違いはありません。SSDが物理マシン上にあると、ロードが速くなります。しかし、物理マシンのCPU使用率を確認してください。CPUがボトルネックになっている可能性もあります。
しかし、VMの感触は、ディスクアクセスがVMに負担をかけるということです。
明らかに、仮想マシンは物理マシンよりも低速です。しかし、このシナリオでは、ニーズをカバーするのに最適なものを評価する必要があります。システムが1つだけ必要で高速にする必要がある場合は、ハードウェアに直接インストールします。反対に、柔軟性、スケーラビリティー(および他のすべての仮想化の利点:P)が必要な場合は、VMを展開します。遅くなりますが、場合によってはIMHOが正当化され、パフォーマンスが大幅に遅くなることはありません。