Booster ses VMs windows
Que les VMs windows sont lentes sous KVM ! Quand on travaille sur FreeRDP on est inévitablement
obligé d'avoir des VMs sous windows pour tester que les vieilles features marchent encore,
ou bien pour pouvoir essayer ces nouveautés fantastiques (oui j'aime les licornes).
Installer les drivers virtIO
La solution est évidement d'installer les bons drivers. Pour commencer il faut récupérer une ISO contenant toute une série de virtio drivers pour windows. On configure l'ISO dans le lecteur CDROM de la VM et c'est parti !
Installer les drivers de base
Déjà, une fois qu'on a démarré sa VM, on peux commencer par aller faire un tour dans le gestionnaire de périphériques. Là, on trouve déjà des périphériques en manque de drivers: il s'agit du ballooning et du port série. Il suffit de demander à mettre à jour le pilote, on demande à chercher sur le CDROM. Et normalement on a 2 nouveaux périphériques fonctionnels:
Pour ceux qui se demanderait à quoi sert le ballooning, ça sert à ce que l'OS de VM soit au courant qu'il est virtualisé et qu'il évite d'utiliser toute sa mémoire disponible si ce n'est pas nécessaire. Contrairement à ce qu'on peut entendre souvent, de la mémoire qui n'est pas utilisée, de la RAM libre, c'est de la mémoire perdue, car elle aurait pû/dû servir par exemple à faire du cache disque. Donc si l'OS invité n'est pas au courant, il va prendre ses aises.
L'affichage
Comme j'en avais parlé dans un article précédent sur le multi-écran dans les VMs, il est sympathique d'installer
le drivers QXL
avec l'affichage spice. Dans la configuration de la VM, on commence par sélectionner QXL
dans le type de carte vidéo. Ensuite de la même
manière, on demande à mettre à jour le drivers de la carte graphique, ça flicke un peu lors de l'installation, et puis
on a plus de mode vidéos et l'affichage semble plus véloce:
Le réseau
De la même manière, on peut changer la configuration de la VM et mettre une carte de type virtio
:
On repasse par la case Gestionnaire de périphérique, puis installer le drivers.
Driver disque
Le driver virtio
qui offre de loin, le meilleur gain de performances, c'est celui de disque: il est tellement plus simple de demander
directement des blocs par un canal mémoire plutôt que de passer par une coûteuse couche d'émulation de controleur IDE.
Seulement comment installer le drivers virtio
du disque dur alors qu'on démarre à partir de ce disque dur ?
On a un problème de poule et d'oeuf !
La ruse va consister à rajouter un disque dur bidon, et à le mettre avec le drivers virtio
. On ne touche pas au disque dur principal pour l'instant:
Une fois la VM démarrée, on installe le drivers pour ce nouveau disque dur. L'installation du drivers est faite pour tout
le système, du coup au rédémarrage quand on aura changé le type du disque dur principal de IDE
vers virtio
, on aura un drivers pour gérer le
disque dur principal. On peut donc éteindre la VM, supprimer le disque dur bidon et changer le type de bus du disque dur principal vers ̀virtio
.
Le premier redémarrage est un peu long, comme à chaque installation de nouveaux périphériques, mais la VM est quand même très sensiblement plus rapide.
Essayer d'autres périphériques
QEmu offre d'autre type de périphériques qui sont rigolos à essayer. Il y a le générateur de nombres aléatoires pointant vers /dev/urandom
pour partager l'entropie
avec la machine hôte.
Il y a les périphériques watchdog qui permette de redémarrer la VM si l'OS rame trop.
Conclusion
Plus d'excuses pour avoir une VM windows qui rame, et si c'est encore le cas c'est que ça ne vient pas de la couche d'émulation...
Update: le CDrom de drivers contient un installeur qui permet de les installer tous d'un coup (et donc permet ne pas utiliser le truc du disque dur temporaire)