web-dev-qa-db-ja.com

VirtualBox:物理CPUコアの数よりも多くの仮想CPUコアを割り当てることは悪い考えですか

ハイパースレッディング 対応のCPUを持っているので、次の警告が示すように、物理CPUコアの数よりも多くの仮想CPUコアを割り当てることは悪い考えでしょうか。

VirtualBox Warning

筆記録:

ホストシステム上の物理CPUの数よりも多くの仮想CPUが仮想マシンに割り当てられます。これは、仮想マシンのパフォーマンスを低下させる可能性があります。仮想CPUの数を減らすことを検討してください。

誰かがこのトピックに理由を付けることができますか?

EDIT1:

問題のCPUはIntel Core i7-4700HQ、 Ark IntelCPUベンチマーク です。

EDIT2:

(SSDの代わりに)HDDのような古いハードウェアはなく、低RAM(ここでは16GB、最小 vm.swappiness 、このVMには4GBなど)。

43

ハードウェア/ OS /ソフトウェア

Host:Linux Mint 18 Cinnamon 64ビット(完全に更新);カーネルバージョン4.4.0-47-generic

ゲスト:Windows 8.1 Pro 64ビット(完全に更新)

プロセッサIntel Core i7-4700HQ 、(6MBキャッシュ、4つの物理コア、または ハイパースレッディング を使用して8)、 CPUベンチマーク

VirtualBox:バージョン5.1.10 r112026(Qt5.5.1)

Guest Additions:インストール済みで最新

ベンチマークツール#1WinRARバージョン5.40最終64ビット

ベンチマークツール#2VeraCryptバージョン1.19 final 64-bit


準備

どちらの場合も、起動後、CPU、RAM、ディスクドライブがほぼゼロ点のヒットになるまで待機しました。


方法

  1. 元の仮想マシンを複製して2つの同一の仮想マシンを作成する。
  2. 2回目のパスでは、再起動を無効にしたアンチウイルスがこの回答の最後で指摘し、どちらの場合もWinRARをベータ版から最終バージョンに更新したためです。
  3. 前に指摘したのと同じ準備をしました。
  4. 仮想マシンはフォアグラウンドで実行され、CPU時間を浪費する他のアプリケーションを実行せずに、テストが影響を受けないようにするために、私はできることを無効にしました。
  5. システムの内部または外部に潜在的なキャッシュを含めるために、同じテストを結果として2回実行しました。利点はほとんどありません。

結果

WinRAR

  1. 4コア=>7.5分(短い時間が良い)

    WinRAR with 4 cores enabled

    4コアを有効にしたWinRAR、1.5GiBは7.5分で処理されます。

  2. 8コア=>4.5分(短い時間が良い)

    WinRAR with 8 cores enabled

    8コアが有効なWinRAR、1.5GiBが4.5分で処理されます。


VeraCrypt

  1. 4コア=>速度2.6GiB/s(速い速度が良い)

    VeraCrypt with 4 cores enabled

    4コアを有効にしたVeraCrypt HW-accelerated AES(AES-NI) 速度2.6GiB/s。

  2. 8コア=>速度3.9GiB/s(速い速度が良い)

    VeraCrypt with 8 cores enabled

    8コアを有効にしたVeraCrypt HW-accelerated AES(AES-NI) 速度3.9GiB/s。


結論

必要なだけテストを実行できました。しかし、私は、これらの2つのうちの1つがかなり複雑な圧縮テストであり、2つ目がかなり複雑な暗号化テストのセットである場合、何がポイントになると考えます。

どちらのベンチマークも顕著な違いを示しています。私はかなり厳密な準備と方法に従っていたので、結果が不正確であると信じる理由はないと思います。さらに、これらのテストはI/Oボトルネックを排除するためにRAMで行われました。立場からすると、質問で言及された警告は、いくつかの条件に当てはまる可能性がありますが、すべての条件に当てはまるわけではありません。これらのかなり驚くべき結果をあなたと共有したので、私はあなたが同意することを確信しています Hyper-Threading を備えた最新のCPUで、最新のVirtualBoxバージョンを使用してください。この設定を永続的に適用する前に、Wordを試して自分の条件でテストしないでください。


新しいベンチマーク

Host + GuestLinux Mint 19.2 "Tina"-Cinnamon(64-bit) ;両方ともカーネル:5.3.0-24-generic

プロセッサーインテル®Core™i7-7700HQ ; 6 MBキャッシュ、最大3.80 GHz、4つの物理コア、またはハイパースレッディングを使用した8 CPUベンチマークの比較

VirtualBox:バージョン6.1.0 r135406(Qt5.9.5)

Guest Additions:インストール済みで最新

Benchmark Tool:VeraCrypt version 1.24 Hotfix1 64-bit final( web pagedirect deb download link


準備と方法

以前のベンチマークと同じです。


結果

4コアのVeraCrypt AES暗号化

⟶速度4.8 GiB/s (速度が速いほど良い)

VeraCrypt AES encryption 4 cores = speed 4.8 GiB/s


8コアのVeraCrypt AES暗号化( ハイパースレッディング 警告が発行されます)

⟶速度7.2 GiB/s (速度が速いほど良い)

VeraCrypt AES encryption 8 cores = speed 7.2 GiB/s

結論

Hyper-Threading を有効にすると、パフォーマンスが50%向上しますが、AESを使用した場合のみ、残念ながら、より包括的なテストを実行する必要があります。数日後に結果が表示されます。

31

OSデザイナーとして、私は測定結果に完全に同意します。主題について他の場所で生成されたでたらめの量は信じられないほどです。

論理コアの数を、ハードウェアで実行できる並列スレッド/プロセスの数として確認します。これは、たとえば、 CPUコアのレジスタと命令ポインタ。 CPUコア自体が、使用するスレッド(命令ポインター)を決定するようになりました。現在のスレッドの命令はキャッシュで利用できず、他のスレッドを使用することを決定します。メモリまたはL3キャッシュ。このメカニズムにより、命令/秒またはCPUパフォーマンスが10%〜30%向上する可能性があります。

1つのスレッドで1つのアプリケーションを実行する場合、この利点を享受することはできませんが、2つの高負荷アプリケーションを実行する場合、たとえば、古いHT Pentiumなら、メリットを享受できます。もちろん、1つ以上のスレッドを持つアプリケーションにも同じことが言えます。私のLinuxシステムには200のスレッドがあるので、実際の負荷に依存するいくつかの利点は常に存在します。これらすべての発言は、仮想化なしで適用されます。

Virtualboxは各仮想マシン(VM)で並列に実行できるスレッドの数のみを制限しますが、ホストプロセススケジューラは論理プロセッサを変更するため、VMプロセスは動的に実行されます。VMで高負荷のアプリケーションを実行する場合、追加の論理コアにより、10%〜30%の同じ利点が得られます。負荷は、単一のマルチスレッドアプリケーションまたは一連のアプリケーションです。さまざまなアプリケーション。

VT-xまたはAMD-Vを備えた最新のシステムでは、同時により多くの仮想マシンを実行することによる顕著なパフォーマンスの低下がないため、論理コアの数を最大にすることによるパフォーマンスの低下はありません。制限はCPUチップのパフォーマンスです。同じ物理CPUを共有する必要があるため、各VMの速度を落とさずに3つのVMで同時にビデオをレンダリングすることはできません。

すべての論理コアが存在するVMでビデオをレンダリングする場合、ホストシステムが応答しなくなる可能性がありますが、そのレンダリングアプリをホストで実行した場合、ほぼ同じ問題が発生します。少なくともVM=には選択肢があり、最大CPU負荷を80%〜90%に制限するか、この理由でコアの数を減らすことで解決できます。

18
Bert Nijhof

私の最高の2セントは、すべてのコア/スレッドを使用するのではなく、ホストに1つまたは2つだけ使用することです。

したがって、あなたのケースでは、ゲストに6つのコアを与えてください。決して8番目のコアではありません(ホストに8つのスレッドしかないため)。

ホストで使用可能なスレッドの数(コアと混同しないでください)が次の場合:

  • 2未満の場合は、仮想マシンをまったく使用しない方がよい
  • 2の場合、モノコアモードで仮想マシンを使用するか、リスクを冒してデュアルコアゲストを使用する
  • > 2の場合、数式を使用することをお勧めします

3つ以上のスレッドの場合、私はこの式を使用する傾向があります。

  • N =ホストのスレッド数
  • M =実行する同時実行仮想マシンの数(バランスが等しく、各ゲストに同じ数のゲストコアがある場合)
  • Formula =(N-1)/ M(ホストのスレッドが4つ以下の場合)
  • Formula =(N-2)/ M(ホストに4つを超えるスレッドがある場合)

私の経験では、このような数式の制限を超えないようにする方がはるかにスムーズでリスクが少ないことがわかります。

警告:ゲストの実行中にゲストコアの数を変更することはできませんが、CPU使用率を100%から75%または50%に下げることができます。失敗する可能性のあるゲストは少なくありません。

したがって、2つのゲストに8スレッドのホストで6つの6コア(2つのゲストではなく1つのゲストのみであるかのように式の数)を与える傾向がありますが、それらをCPU速度の50%に制限します(両方のゲストが1を使用できます)/2時間のCPU)、ただし、画像比較/ジョイントなどのように、ゲストが並列比が1より大きい比率のアプリを実行することがわかっている場合のみ。

1
Laura