web-dev-qa-db-ja.com

ハイパースレッディングを備えたクアッドコアホスト、VirtualBoxで構成するプロセッサの数

ハイパースレッディング(8つの論理コア)を備えたクアッドコアi7プロセッサーを使用していますが、8つのプロセッサーを使用するように仮想マシンを構成すると、VirtualBoxからコアが4つしかない(true)と、これによりパフォーマンスの問題。しかし、ハイパースレッディングはハードウェア機能であるため、OSは8コアを認識し、すべての8に命令を送信します。4に設定すると、VMが2コア(4スレッド)を使用することになります) (4つのコアすべてで)4つの同時スレッドの場合?マシンにハイパースレッディングがあるという警告は考慮されますか?

10
Anthony

Kristian Wedberg によって行われたベンチマークに基づいて、所有しているすべての論理コアを使用する必要があると思います。
また、同じCPU(i7、HTを搭載した4 CPU)を使用して独自のベンチマークを行い、マルチスレッドアプリケーションのパフォーマンスの向上を確認しました。ゲストPC(Win。8.1 x64)が8コアすべてを使用した場合、ホストPC(Ubuntu x64)も8コアすべてを使用しました。

enter image description here

シングルスレッドアプリケーションのパフォーマンスも比較しました。どちらの場合も同じ値を測定したため、物理(ただし論理まで)を超える数のCPUを使用してもペナルティはありません。
ここでは、ゲストPCの1 CPUフルロードがホストPCの1 CPUロードにつながることがわかります。

enter image description here

9
icl7126

VirtualBox(私の経験ではバージョン5.1.0でした)で論理プロセッサーに基づいてvCPUをVM=)に割り当てることは可能(そしておそらく間違いなく高速)ですが、問題が発生する可能性があることがわかりました高負荷で実行中のゲストOS内。私の場合、Windows 2012 R2 VM 8コアのUbuntu 16.04ホストに12個のvCPUを搭載(16の論理プロセッサを報告))は、高CPU負荷時にBSODになります。 DPC_WATCHDOG_VIOLATIONエラーメッセージが表示されます osronline.com を使用したミニダンプ分析では、e1g6032e.sys(WindowsにネイティブのIntel 100/1000ネットワークドライバー)が違反の原因であることが示されました。

これにより、論理プロセッサー容量に基づいてvCPUを割り当て、高負荷で長期間VMを実行すると、ゲストOS内のタイミングが悪影響を受けると私は信じています。私の場合、100%のCPU負荷Windowsの内部VM数分間はBSODになります。vCPUカウントを8(ホストの物理コアカウントに対応)に減らした後、Windows VMは、同様の高負荷状況ではBSODを実行しません。VirtualBoxの オンラインドキュメント は、これを実行する必要があると述べていますが、理由はありません。

私の環境では、他にも2つのUbuntu VMが実行されており、それぞれに独自の8つのvCPUが搭載されていました。ただし、Windows VMのBSODの問題が発生したときの負荷は最小限でした。

8
Albert Gazendam

私のマシンにハイパースレッディングがあることを考慮した警告はありますか?

はい。 VMでコアの数を物理的な数よりも多く設定すると、Virtual BoxのタスクスケジューリングプロセスがCPUリソースをオーバーコミットして、パフォーマンス上の大きな問題を引き起こします。

コア間で負荷を分散することは、ホストOSの仕事であり、正しい方法で動作するはずです。

2
user195560

これはVMお使いのマシンのオリジナルですか?)VMを複製して別のマシンに移動したり、設定を変更したりすると、特有のエラーが発生することがあります。
最新の拡張機能を備えた最新バージョンのVirtual Boxをダウンロードしてインストールすることをお勧めします。

8つのコアすべてをコミットしましたが、Ubuntu 13.10でVMを実行しているi7でエラーが発生しません。

0
ClaireW