Optimisations VMWare.

  |   4889  |  Commentaire (1)  |  Optimisations
De nombreux plieurs à la recherche de la performance absolue ont eu la bonne idée de remplacer le client Windows SMP plutôt lent et inefficace par des clients Linux SMP tournant dans des machines virtuelles. En général, pour un processeur Quad cores, ces personnes utilisent deux machines virtuelles, occupant chacune deux cores physiques. Et si on pouvait ne lancer qu'une VM sur un Quad cores, et ainsi économiser la moitié de la RAM allouée à deux VM ?

A cause de l'utilisation de machines virtuelles, il arrive souvent qu'elless entrent en conflit avec les clients GPU présents sur la machine (les priorités d'exécution de la machine virtuelle étant identiques à un programme classique, et supérieures à celle du core GPU, même réglé en priorité la plus haute via la configuration du client).

Voici donc deux astuces pour résoudre ces deux problèmes. Ces astuces ont été testées et validées sur VMWare Workstation 6.5.2.

Une machine virtuelle sur 4 cores ... c'est possible !

Lors de la configuration de la machine virtuelle, il n'y a que deux choix possibles pour le nombre de CPU utilisés par la VM : un ou deux. Mais saviez-vous que VMWare peut accéder à quatre CPU de manière non officielle ?

Dans cet exemple, le stockage par défaut des machines virtuelles est réglé sur "F:\Virtual Machines\". Ce réglage se trouve dans le menu Edit > Preferences > onglet Workspace. Si vous avez laissé les réglages par défaut lors de la création de la VM, celle ci doit stocker ses fichiers dans "F:\Virtual Machines\Nom_de_la_VM\". Dans cet article, appelons notre VM "Ubuntu 64-bits". Les fichiers de configuration seront donc stockés dans "F:\Virtual Machines\Ubuntu 64-bits\"

Pour la suite, éteignez votre VM et quittez VMWare.

Allez dans le dossier de votre VM, et ouvrez son fichier de configuration avec votre éditeur de texte favori : dans l'example, "F:\Virtual Machines\Ubuntu 64-bits\Ubuntu 64-bits.vmx" ("VMWare virtual machine configuration" dans les types de fichiers affichés dans l'explorateur Windows, si vous n'affichez pas l'extension du fichier).

Le nombre de CPU accessibles par la VM est réglé par le paramètre "numvcpus" ... ce paramètre accepte des valeurs de 1 à 4. Au-delà de 4, votre VM refusera de se lancer. Si votre fichier de configuration contient le paramètre maxvcpus, vérifiez que cette valeur est à 4 (ou supprimez la ligne).

Pour utiliser un Quad core, nous mettrons donc :

Code :
numvcpus = "4"


Si vous utilisez bien la dernière version de VMWare (Workstation 6.5.2 ou Player 2.5.2) mais que votre VM a été crée avec une version antérieure, modifiez également la ligne suivante :

Code :
virtualHW.version = "7"


Enregistrez le fichier, et relancez VMWare. Vous devrez voir apparaitre le nouveau nombre de CPU sur le résumé de la VM, comme sur le screenshot suivant :


Cliquez sur l'image pour agrandir.



Régler la priorité de la machine virtuelle.

Deuxième étape de l'optimisation, le réglage de la priorité des VM. N'oubliez pas de régler vos clients GPU sur low (en console) ou Slightly Higher (en systray) et le client tournant dans la VM sur idle dans la configuration avancée des clients.

Pour un réglage global des priorités (appliqué à toutes les machines virtuelles par défaut), allez dans le menu Edit > Preferences > onglet Priorities. Réglez les paramètres comme sur le screenshot suivant :


Cliquez sur l'image pour agrandir.



Pour simplifier, Grabbed signifie que votre VM est sélectionnée ou affichée, et Ungrabbed signifie qu'elle n'est pas sélectionnée ou affichée. Pour profiter de la priorités suffisamment faible pour ne pas interagir avec les clients GPU, vous devez vous trouver dans la situation Ungrabbed, en réduisant par exemple VMWare dans la barre des taches.

Si vous ne souhaitez pas effectuer ce réglages globalement (je le déconseille), vous pouvez configurer ceci dans les options de chaque VM (onglet Options, élément Advanced). Vous pouvez également éditer votre fichier de configuration comme pour l'astuce précédente, et ajouter les lignes suivantes :

Code :
priority.grabbed = "normal"
priority.ungrabbed = "idle"


Vous devriez vous cet écran une fois la modification prise en compte :


Cliquez sur l'image pour agrandir.



Bon pliage virtualisé.