回答:
Kristian Wedbergによって行われたベンチマークに基づいて、私はあなたが持っているすべての論理コアを使用するべきだと思います。
また、同じCPU(i7、HTを搭載した4 CPU)を使用して独自のベンチマークを行い、マルチスレッドアプリケーションのパフォーマンスが向上することを確認しました。ゲストPC(Win。8.1 x64)が8コアすべてを使用した場合、ホストPC(Ubuntu x64)も8コアすべてを使用しました。
シングルスレッドアプリケーションのパフォーマンスも比較しました。どちらの場合も同じ値を測定したため、物理(ただし論理まで)を超える数のCPUを使用してもペナルティはありません。
ここでは、ゲストPCの1 CPUフルロードがホストPCの1 CPUロードにつながることがわかります。
VirtualBox(私の経験はバージョン5.1.0でした)で論理プロセッサーに基づいてvCPUをVMに割り当てることが可能(そしておそらく間違いなく高速)ですが、高負荷で実行するとゲストOS内で問題が発生する可能性があることがわかりました。私の場合、8コアのUbuntu 16.04ホスト(16の論理プロセッサを報告する)に12のvCPUを備えたWindows 2012 R2 VMは、CPUの高負荷時にDPC_WATCHDOG_VIOLATIONエラーメッセージでBSODになります。使用ミニダンプ分析osronline.comは、違反の原因とe1g6032e.sys(Windowsにインテル100/1000ネットワークドライバのネイティブ)を示しました。
これにより、論理プロセッサの容量に基づいてvCPUを割り当て、VMを高負荷で長期間実行すると、ゲストOS内のタイミングに悪影響が及ぶと私は思います。私の場合、Windows VM内のCPU負荷が数分間100%になると、BSODが発生します。vCPU数を8(ホストの物理コア数に対応)に減らした後、同様の高負荷状況下でWindows VMがBSODを実行しなくなりました。VirtualBox のオンラインドキュメントには、これを行う必要があると記載されていますが、理由はありません。
私の環境では、他にも2つのUbuntu VMが実行されており、それぞれに独自の8個のvCPUが搭載されていました。ただし、Windows VMのBSODの問題が発生したときの負荷は最小限でした。
私が受け取った警告は、私のマシンにハイパースレッディングがあることを考慮していますか?
はい。VMのコアの数を物理的に持っている数よりも多く設定すると、Virtual BoxのタスクスケジューリングプロセスがCPUリソースをオーバーコミットして、パフォーマンス上の大きな問題が発生します。
コア間で負荷を分散することは、ホストOSの仕事であり、正しい方法で動作するはずです。