Comment puis-je simuler une machine lente dans une machine virtuelle?

29

Je teste une application Web lourde AJAX. Je développe sur un nouveau Mac, mais j'utilise VmWare Fusion (actuellement 3.1.2) pour tester dans Windows XP, en utilisant IETester pour simuler des versions plus anciennes d'IE.

Cela me permet de voir comment les anciennes versions d'IE rendraient le site, mais j'aimerais également voir comment le site fonctionnerait sur une machine plus ancienne. Je vois dans les paramètres de la machine virtuelle que je peux réduire la RAM; existe-t-il un moyen de réduire également la vitesse du processeur? Sinon, comment pourrais-je simuler une machine lente?

(Je vais également découvrir comment simuler une connexion Internet lente .)

Nathan Long
la source

Réponses:

17

Le thread Limiting CPU speed in a virtual machine propose quelques conseils:

  • Sur VMWare ESX et ESXi, vous pouvez créer un pool de ressources et limiter les ressources CPU pour ce pool. Cela vous permettrait de limiter la vitesse du processeur de tous les systèmes créés dans ce pool de ressources.
  • Les paramètres de MS hyper-V permettent de limiter une machine virtuelle à un pourcentage de l'hôte global. Donc, si vous avez un hôte à 8 cœurs fonctionnant à 2 GHz, vous pouvez essayer de limiter la machine virtuelle cliente à un cœur, et pas plus de 45% du cœur.

Le gars de Virtual PC remarque dans Ralentir les machines virtuelles que:

définir une machine virtuelle avec un maximum de 10% de ressources CPU sous Virtual Server (par exemple) signifie qu'elle ne sera autorisée à s'exécuter sur le CPU que pendant 10% du temps total de planification du système sur une période de temps. Pendant que la machine virtuelle est en cours d'exécution, elle fonctionne toujours à pleine vitesse du processeur (quoique moins souvent qu'elle ne le ferait autrement).

Il suggère d'utiliser plutôt Turbo pour ralentir la machine virtuelle. Il suggère également d'utiliser des produits d'émulation, qui sont beaucoup plus lents que la virtualisation, tels que DOSBox et Bochs .

harrymc
la source
7

Vous pouvez utiliser cpulimit pour limiter le temps de traitement alloué à votre processus. Ceci est disponible dans les dépôts pour la plupart des distributions Linux.

L'utilisation est très simple, si par exemple votre machine virtuelle s'exécute en tant que processus 12345 et que vous souhaitez lui allouer seulement 5% des cycles de processeur, utilisez les options suivantes:

$ cpulimit -l 5 -p 12345
pfrenssen
la source
4

Il n'est vraiment pas possible de faire correspondre de manière fiable les performances d'une ancienne machine. Même si vous parvenez à limiter l'utilisation du processeur et la taille de la mémoire , comment allez-vous limiter la vitesse du FSB ou la vitesse de la mémoire ?

Cela dit, vous pouvez utiliser l'outil de gestion des processus d'un Mac pour limiter l'utilisation du processeur de VMWare Fusion lui-même. Si vous le faites assez bien pour émuler une ancienne machine, alors l'application VMWare entière s'exécutera probablement très lentement - tout comme une machine vintage prête pour XP.

Je ne sais pas quel est le programme graphique Mac pour cela, mais voyez si votre Mac prend en charge la renicecommande: Ouvrez un terminal et tapez man renicepour savoir comment cela fonctionne sur un Mac.

Soit dit en passant, les machines prêtes pour XP sont probablement très bon marché en ce moment. Un vrai pourrait probablement être obtenu pour ~ 75 $. Ensuite, vous pouvez transférer votre machine virtuelle sur une machine réelle ...

jpaugh
la source
2
Ha! Idée intéressante pour acheter une machine réelle. Puisque l'idée est d'imiter un vieil ordinateur, acheter un vieil ordinateur est une option assez bon marché. :)
Nathan Long
2

Cela dépend vraiment de la lenteur d'une machine que vous souhaitez émuler. Si vous ramenez XP à 128 Mo de RAM, cela sera douloureusement lent, au point où je ne suis pas sûr que la vitesse du processeur virtuel soit vraiment pertinente. Vous pouvez également exécuter vos fichiers VM à partir d'un ancien disque dur externe USB1 (voir si vous pouvez trouver un lecteur à 4200 tr / min). Cela devrait ralentir les choses.

Église
la source
2

Une façon infaillible de ralentir une VM est de démarrer autant de clones que possible à côté d'elle!

Votre processeur, FSB, RAM et tous les autres composants rapides de votre machine seront tranchés et coupés en dés entre les autres machines virtuelles (tant que vous les faites faire quelque chose d'intensif - l'un des économiseurs d'écran openGL par exemple), et vous vous sentirez comme vous êtes à nouveau en 1990 ...

Haqa
la source
Simple et assez efficace.
roule le
1

Installez un petit utilitaire dans la VM XP invitée pour contrôler la fréquence du processeur à l'aide de la commutation de fréquence dynamique intégrée de XP. Par exemple, un utilitaire comme SpeedswitchXP . Je n'ai jamais essayé quelque chose comme ça moi-même, et il peut y avoir des problèmes si le processeur virtuel que VMWare présente à la machine virtuelle invitée ne prend pas en charge la commutation de fréquence dynamique.

queso
la source
1
Je crains que cela n'ait que peu d'effet sur une machine virtuelle, où le processeur est uniquement émulé.
harrymc
1
Ouais, je ne pense pas que changer la fréquence soit une option; cela ne fonctionnerait pas (probablement) ou étranglerait le système d'exploitation de l'hôte entier (impossible?).
jpaugh
0

Je voudrais entretenir l'idée d'utiliser un fil de boucle infinie avec une commande de sommeil réglable et de définir la priorité du processus. Si vous voulez que je claque ensemble un morceau rapide de code C, faites le moi savoir.

RobotHumains
la source