web-dev-qa-db-ja.com

VMware X5650では、物理E5450よりもシングルスレッドアプリの速度が50%遅くなります

このアプリケーションは、ESXを搭載したXeon X5650では、ベアメタルE5450よりも50%遅く実行されます。

物理サーバーでのテストタスクには17分かかります。

仮想サーバーでの同じタスクには25分かかります。50%長くなります。

私が言えることすべてから、これは不可能なはずです。 5600シリーズは、同じクロック速度のシングルスレッドプロセスでは5400シリーズよりも10〜20%高速であると考えられ、仮想化のオーバーヘッドは、シングルスレッドのCPUバウンドワークロードでも同様に低くなります。パフォーマンスは最低で損益分岐点になるはずですよね?ただし、同等以上のパフォーマンスを実現する代わりに、パフォーマンスを3分の1に削減します。


更新:解決済み(修正済み)仮想サーバーでの同じタスクには14分かかります:15%高速です。

これはRAM構成でした。パフォーマンスが50%低下したのは、ESXホストシステムのメモリが正しくインストールされておらず、可能な全帯域幅の約半分しか提供されていなかったためです。CPUとメモリにバインドされたプロセスの場合、帯域幅の損失は、予想よりも50%悪いパフォーマンスに変換されました。

アプリケーションのパフォーマンスは、当初予想していた10〜20%の改善の真っ只中にあります。


一方のサーバー(32ビット)で実行されるシングルスレッド計算で構成されるアプリケーションを実行し、もう一方のサーバー(64ビット)でSQL Server2005データベースとやり取りする2つの物理WindowsServer 2003R2システムがあります。

両方の物理ボックスは、4GB RAM @ 800MhzのシングルCPUE5450です。計算サーバーは1.5GBを超える物理メモリを使用することはなく、SQLServerは2.5GBを超えることはありません。計算サーバーが最大15%(シングルコアの約50%)を超えることはありません。DBサーバーのCPU使用率が最大25%(完全に使用されているシングルコア)を超えることはありません。

物理ESX4.1ホストは、64GB RAM @ 1333Mhz)のデュアルCPU X5650です。仮想マシンには、物理​​をミラーリングするために4つのコアと4GB RAM)が与えられます。テストは、単一のVMを各物理ホストで実行し、両方を同じホストで実行して実行しました。

興味深いことに、X5550CPUとRAM @ 1066Mhz)を使用するESXサーバーの別のペアでほぼ同じ25分のテスト結果が得られます。

また、仮想システムでのテスト結果は、VM 1、2、または4 CPU、または1、2、4、または8GB RAMを使用しても、どちらの方法でも10%を超えて変化することはありません。ネットワークまたはディスクのアクティビティはほとんどなく、私が知る限り、プロセスはCPUにバインドされている必要があります。

テストは、個別のホスト上のローカル15K SASディスクと、ギガビットiSCSI SAN 15Kディスクの両方を使用して実行されました。違いはごくわずかです。さまざまなストレージの結果になります。

私が知る限り、Xeon 5600シリーズは、シングルスレッドワークロードの場合、5400シリーズよりも20〜50%高速である必要があります。 X5650が2.67GHzの部品であり、E5450が3GHhzの部品であることを考慮しても、コアあたりのパフォーマンスが同じクロック速度で等しい場合は、67%ではなく少なくとも90%のパフォーマンスが期待できます。これは、メモリクロックがほぼ2倍の速度であるという事実を考慮に入れていません。

私は過去にいくつかの仮想化プロジェクトを行ったことがあり、同じ物理CPUコアを使用しても、50%に近いパフォーマンス低下は見られませんでした。ましてや、2世代新しいコアでメモリが高速です。

考えられる原因や、確認する必要のある構成設定に関するアイデアはありますか?

6
ryandenki

仮想化のタイプにもよりますが、5%のオーバーヘッドがほぼ最良のシナリオです。完全な準仮想化を使用すると、IO-lightワークロードでこのようなオーバーヘッドを非常に簡単に実現できます。ハードウェア支援仮想化(VMWareで使用されるテクノロジー)を使用すると、VMが少ないハイパーバイザーのIO-lightワークロードでこのような低いオーバーヘッドを実現できます。完全仮想化(CPU拡張なし)では、5%のオーバーヘッドはほぼ夢です。

これは非常に多くの要因に依存する可能性があることに注意してください。仮想化は、ディスクとゲストOSの間にかなりの遅延を追加する傾向があります。これにより、IO待機が増加するため、CPU使用率をかなり低く抑えながら平均負荷が増加します。ストレージがIOPSスケールの下側にある場合、これは非常に大きな影響を及ぼします。使用している場合ネットワークストレージの場合、内部バスにアクセスするだけでなく、IO)ごとにネットワークにアクセスする必要があるため、ほとんどの場合、遅延が追加されます。

仮想スイッチなどの特別なネットワーク構成モジュールを使用する場合、仮想化によってネットワーク遅延が増える可能性もありますが、これは通常、それほど重要ではありません。

仮想化では、VMから別の割り込みに切り替えるために必要な多くの割り込みが追加される傾向があります。ハイパーバイザーのスケジューラーによっては、これが重要になる場合があります。これについてできることはあまりありません仮想化の性質によるものですが、パフォーマンスの低下を正当化するために留意する必要があります。

アプリケーションはシングルスレッドであるため、コアを増やしてもパフォーマンスが大幅に向上することはありません。両方のCPUの周波数は似ていますが、「ターボブースト」がないとX5650の周波数が遅くなります。機能がセットアップと互換性がある/有効になっていることを確認することをお勧めします。

IO集中的なワークロードの33%のオーバーヘッドは、それほど悪くはないと思います。2つのVMのストレージを分離して、それが役立つかどうかを確認してください。

1