VMで遅いマシンをシミュレートするにはどうすればよいですか?


29

AJAXを多用するWebアプリケーションをテストしています。私は新しいMacで開発していますが、VmWare Fusion(現在3.1.2)を使用してWindows XPでテストし、IETesterを使用して古いバージョンのIEをシミュレートしています。

これにより、古いIEバージョンがどのようにサイトをレンダリングするかを確認できますが、古いマシンでサイトがどのように動作するかを確認したいと思います。VMの設定で、RAMを削減できることがわかりました。プロセッサ速度をダイヤルダウンする方法はありますか?遅いマシンを他にどのようにシミュレートできますか?

遅いインターネット接続をシミュレートする方法も確認します。)

回答:


17

仮想マシンのスレッド制限CPU速度はいくつかのアドバイスを提供します:

  • VMWare ESXおよびESXiでは、リソースプールを作成し、そのプールのCPUリソースを制限できます。これにより、そのリソースプールで作成されたシステムのCPU速度を制限できます。
  • MS hyper-Vの設定により、仮想マシンをホスト全体のパーセントに制限できます。そのため、2 GHzで8コアのホストを実行している場合、クライアント仮想マシンを1コアに制限してみてください。コアの45%以下に制限します。

Virtual PC Guyは、仮想マシンのスローダウンで次のことを述べています。

Virtual Serverで最大10%のCPUリソースを仮想マシンに設定すると(たとえば)、一定期間のシステムスケジューリング時間の合計の10%の間のみ、CPUでの実行が許可されます。仮想マシンの実行中は、まだフルプロセッサスピードで実行されています(そうでない場合は頻繁に実行されますが)。

彼は代わりにTurboを使用してVMの速度を低下させることを提案しています。彼はまた、DOSBoxBochsなどの仮想化よりもはるかに遅いエミュレーション製品の使用を提案しています。


7

cpulimitを使用して、プロセスに割り当てられる処理時間を制限できます。これは、ほとんどのLinuxディストリビューションのリポジトリで利用可能です。

使用方法は非常に簡単です。たとえば、VMがプロセス12345として実行されており、CPUサイクルの5%のみを割り当てる場合は、次のオプションを使用します。

$ cpulimit -l 5 -p 12345

4

古いマシンのパフォーマンスと確実に一致させることは、実際には不可能です。CPU使用率とメモリサイズを調整できたとしても、FSB速度またはメモリ速度をどのように調整しますか?

そうは言っても、Macのプロセス管理ツールを使用して、VMWare Fusion自体のCPU使用率を制限できます。古いマシンをエミュレートするのに十分にこれを行うと、VMWareアプリケーション全体がおそらく非常にゆっくり実行されます。これは、ビンテージのXP対応マシンと同じです。

このためのグラフィカルなMacプログラムが何であるかはわかりませんが、お使いのMacが次のreniceコマンドをサポートしているかどうかを確認してくださいman renice

ちなみに、XP対応のマシンはたぶん、今のところ安いです。本当の物はおそらく$ 75で手に入れることができます。その後、仮想マシンを実際の仮想マシンに転送できます...


2
ハ!実際のマシンを購入する興味深いアイデア。全体のアイデアは古いコンピューターをエミュレートすることなので、古いコンピューターを購入するのはかなり安価なオプションです。:)
ネイサンロング

2

これは、エミュレートするマシンの速度に依存します。XPを128 MBのRAMに戻すと、非常に遅くなり、仮想プロセッサの速度が本当に適切かどうかわかりません。古いUSB1外付けハードドライブからVMファイルを実行することもできます(4200 RPMドライブが見つかるかどうかを確認してください)。それは物事を遅くする必要があります。


2

VMを遅くする確実な方法の1つは、できる限り多くのクローンを起動することです。

プロセッサ、FSB、RAM、およびマシンの他のすべての高速コンポーネントは、他のVMの間でスライスされ、さいの目に切られます(集中的な処理を行う限り-たとえば、openGLスクリーンセーバーの1つ)。あなたは再び1990年にいます...


シンプルで非常に効果的です。
ロール

1

ゲストXP VMに小さなユーティリティをインストールして、XPに組み込まれた動的な周波数切り替えを使用してCPU周波数を制御します。たとえば、SpeedswitchXPのようなユーティリティ。私は自分でこのようなことを試したことはありません。VMWareがゲストVMに提示する仮想CPUが動的な周波数切り替えをサポートしていない場合、潜在的に問題があるかもしれません。


1
CPUがエミュレートされるだけのVMには、これがほとんど影響を与えないのではないかと心配しています。
ハリーマック

1
ええ、周波数を変えることは選択肢とは思いません。(おそらく)動作しないか、ホストos全体を抑制します(不可能ですか?)。
jpaugh

0

調整可能なスリープコマンドで無限ループスレッドを使用し、プロセスの優先順位を設定するというアイデアを楽しませるでしょう。一緒に平手打ちしたい場合は、Cコードの短いチャンクを教えてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.