web-dev-qa-db-ja.com

Virtual Boxを実行しているときにCPU使用率を減らす方法は?

VirtualBoxを実行しているときに、システムで100%のCPU使用率の問題に直面しています。詳細は次のとおりです。

私のシステム情報:

CPU 1名: Intel(R)Pentium(R)デュアルCPU T2310 @ 1.46GHz
CPU 1レベル1キャッシュサイズ: 32Kデータキャッシュ。 32K命令キャッシュ。

CPU 1レベル2キャッシュサイズ: 1024K統合キャッシュ。
CPU 1 Mips: 2926.20
CPU 2名: Intel(R)Pentium(R)Dual CPU T2310 @ 1.46GHz
CPU 2レベル1キャッシュサイズ: 32Kデータキャッシュ。 32K命令キャッシュ。

CPU 2レベル2キャッシュサイズ: 1024K統合キャッシュ。

CPU 2 Mips: 2925.96
64ビットCPU?はい!
合計メモリ: 2.0 GB
合計スワップ: 6141 Mバイト


私のオペレーティングシステム情報:

Kubuntu OSバージョン: 11.04
カーネルバージョン: 2.6.38-8-汎用
カーネルアーチ: i686
デフォルトのシェル:/bin/bash


My Virtual Boxの設定:

OSタイプ: Windows XP
ビデオメモリ: 32 MB
加速度: 3D
ベースメモリ: 512 MB

問題の詳細:

そうですね、VirtualBoxからWindows XPを実行するたびに、CPU使用率はほぼ100%になります。ホストされているWindowsでプログラムが実行されていなくても、システムの速度が低下しますXPバージョン。

パフォーマンスを少し向上させるために、設定を試す方法はあるのかと思っていました。私のPCは、Linuxオペレーティングシステムでは比較的高速です。より良い結果を得ることができるように、VirtualBoxの設定を構成するときに従う可能性のあるヒントがあるかどうかを知る必要があります。

提案/アイデアは大歓迎です!

12
CompilingCyborg

上記の私のコメントを詳しく説明すると、T2310にはCPUデータシートにある仮想化拡張機能(VT-x)がありません http://ark.intel.com/Product.aspx?id=32431

このウィキペディアの記事 から、VMのパフォーマンスの測定可能な低下を引き起こす3つの基本的なことがあります(したがって、ホストのCPU使用率の増加:

  • バイナリ変換は、POPFなどの特定の命令を書き換えるために使用されます。これらの命令は、リング0より上で実行すると、サイレントに失敗したり、動作が異なったりして、従来のトラップアンドエミュレート仮想化が不可能になります。パフォーマンスを向上させるには、変換された基本ブロックを、コードのパッチ適用(VxDなどで使用)、ゲストOSによるページの再利用、さらには自己変更コードを検出する一貫した方法でキャッシュする必要があります。

  • プロセッサが使用するいくつかの重要なデータ構造をシャドウイングする必要があります。ほとんどのオペレーティングシステムはページ化仮想メモリを使用し、ゲストOSにMMU=への直接アクセスを許可すると、仮想化マネージャーによる制御の喪失を意味するため、x86の一部の作業がMMUは、シャドウページテーブルと呼ばれる手法を使用して、ゲストOSのソフトウェアで複製する必要があります。これには、アクセス試行をトラップしてソフトウェアでエミュレートすることにより、ゲストOSが実際のページテーブルエントリへのアクセスを拒否することが含まれます。

  • I/Oデバイスエミュレーション:ゲストOSでサポートされていないデバイスは、ホストOSで実行されるデバイスエミュレーターによってエミュレートする必要があります。

ゲストオペレーティングシステムは、必要な特権命令の使用を必要とする操作を大いに耳にします。通常、これらのオーバーヘッドは、IntelのVT-xおよびAMDのAMD-V仮想化拡張機能を使用することで大幅に軽減されます。プロセッサにはこれらの拡張機能がないため、キャプチャとエミュレーションのすべての作業によってパフォーマンスが低下します。

私の推奨事項は次のとおりです。

  • 実行する必要があるページングの量を最小限に抑えるために必要なだけのメモリを仮想マシンに与えるには、ワークロードに応じて、おそらく1GB以上にします。

  • 3Dドライバーへのすべての呼び出しはエミュレーションレイヤーを介してプッシュする必要があり、プロセッサーにコストがかかる可能性があるため、3Dアクセラレーションを無効にします。

  • ゲストオペレーティングシステムにVirtualboxGuest Additionsをインストールします。これらは、仮想環境をより適切にサポートするドライバーを使用するためです。

  • ゲストオペレーティングシステムの画面解像度とグラフィックオプションを減らします。

  • ネットワーク(インターネット)アクセスを適切なレベルに維持します。ネットワークにバインドされた仮想マシンは、VT-xを使用しても高価であり、プロセッサでサポートされていないVT-d(Directed I/Oの仮想化テクノロジ)の恩恵も受けます。

5
Mokubai

私の答えは質問のタイトルのみに関連しており、質問の他のテキストには関連していません。私の重点は、より多くの仮想ゲストでのアイドル状態のCPU使用率です(ホストに十分な空きメモリがある)。

VirtualBoxの実行時にWindowsホストでaudiodg.exeプロセスによって引き起こされるCPU使用率は、ミドルゲスト自体の負荷よりも高くなります。 [オーディオ]タブのVirtualboxゲスト設定でオーディオチェックボックスを無効にすることで、簡単に減らすか、完全にドロップアウトすることができます。 (閉じた仮想マシンでのみ無効にできます。)

Audiodg.exeプロセスは1人のゲストに対して約5%のCPUを消費しますが、ソース編集などの典型的なアイドルアクティビティ中のラップトップへの重要な負荷であり、CPU周波数(80%から40%に減少)、ファン速度に大きな影響を与えますラップトップのバッテリー寿命。実行中の仮想マシンの多くは、通常、サウンドを必要としないか、たまにしか必要としません。 (ゲストOSでオーディオを無効にしても効果はなく、仮想マシンの一時停止もありませんでしたが、virtualboxゲスト設定は重要です。)

2
hynekcer