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

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 d'anciennes versions d'IE.

Cela me permet de voir comment les anciennes versions 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 diminuer la RAM; Existe-t-il un moyen de compiler la vitesse du processeur? Comment puis-je simuler une machine lente?

(Je vais également vérifier comment simuler une connexion Internet lente .)

Le fil Limiter la vitesse du processeur dans une machine virtuelle offre des conseils:

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

Le Virtual PC Guy remarque en ralentissant les machines virtuelles qui:

La configuration d'une machine virtuelle avec un maximum de 10% de ressources de CPU sous Virtual Server (par exemple) signifie qu'il ne sera possible d'exécuter sur la CPU que pour 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 fonctionnerait autrement).

Il suggère d'utiliser à la place Turbo pour ralentir la VM. Il suggère également d'utiliser des produits d'émulation, qui sont beaucoup plus lents que la virtualisation, tels que DOSBox et Bochs .

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 VM fonctionne en tant que processus 12345 et que vous souhaitez allouer seulement 5% des cycles de la CPU, utilisez les options suivantes:

$ cpulimit -l 5 -p 12345 

Il n'est vraiment pas possible de combiner de manière fiable les performances d'une machine plus ancienne. Même si vous parvenez à accélérer l'utilisation de la CPU et la taille de la mémoire, comment accélérez-vous la vitesse 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 VMWare Fusion lui-même. Si vous faites cela assez bien pour imiter une machine plus ancienne, alors toute l'application VMWare fonctionnera vraisemblablement très lentement – tout comme une machine vintage compatible avec XP.

Je ne sais pas ce que le programme graphique Mac est pour cela, mais voyez si votre Mac prend en charge la commande renice : Ouvrez un terminal et tapez man renice pour lire comment il fonctionne sur un Mac.

Soit dit en passant, les machines prêts à l'emploi XP sont probablement très sales à l'heure actuelle. On pourrait probablement avoir un réel pour ~ 75 $. Ensuite, vous pouvez transférer votre machine virtuelle vers une véritable …

Installez un petit utilitaire dans la machine virtuelle XP invité pour contrôler la fréquence de la CPU en utilisant 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 pourrait y avoir des problèmes potentiels si la CPU virtuelle que VMWare présente à la VM invitée ne supporte pas la commutation de fréquence dynamique.

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

Un moyen infaillible de faire démarrer une machine virtuelle lente est de démarrer autant de clones que vous pouvez le comparer!

Votre processeur, FSB, RAM et tous les autres composants rapides de votre machine seront découpés en tranches entre les autres machines virtuelles (aussi longtemps que vous les faites faire quelque chose d'intensif – Un des économiseurs d'écran openGL par exemple) et vous vous sentirez comme Vous êtes de nouveau en 1990 …

J'aimerais avoir l'idée d'utiliser un thread en boucle infinie avec une commande sleep réglable et définir la priorité du processus. Si vous voulez que je gifle un morceau rapide de code C, faites-le savoir.