Ceci est une ancienne révision du document !
Optimisation des performances pour les machines virtuelles KVM
VirtIO
VirtIO permet d'utiliser des techniques de paravirtualisation pour les points critiques:
- périphériques bloc
- interfaces réseau
Si le système de l'invité le supporte, il est recommandé d'utiliser des périphérique VirtIO qui permettent en générale d'augmenter les performances, où à performance égale, de diminuer la charge CPU en supprimant l'émulation de périphérique. VirtIO a été intégré dans le noyau linux 2.6.25, tout les invités ayant un noyau supérieur à cette version peuvent l'utiliser. Certaines distributions disposent de VirtIO avec un noyau plus ancien (backport) (ex: CentOS 5, RHEL5)
Problème CFQ/VirtIO
Il semble qu'il y ait un problème entre le scheduler I/O CFQ et VirtIO. Si des machines virtuelles utilisent VirtIO, il est conseillé de passer le scheduler des disque de l'hôte en deadline: (à placer dans /etc/rc.local après avoir vérifié le gain de performance)
for d in sdc sdd sde sdf;do echo deadline > /sys/block/$d/queue/scheduler;done
LVM comme backend
Il est conseillé d'utiliser LVM comme backend pour les disques des invités (un volume logique = un disque virtuel) au lieu d'utiliser des images (en tant que fichier). Les avantages sont:
- meilleurs performances, car il n'y a plus d'empilement de système de fichiers
- sauvegardes plus aisées: utilisation de snapshots et sauvegarde directe du périphérique bloc