diff --git a/HowtoKVM.md b/HowtoKVM.md index 0241ffb5..6360536b 100644 --- a/HowtoKVM.md +++ b/HowtoKVM.md @@ -80,6 +80,54 @@ Un hyperviseur KVM doit avoir des CPUs supportant la virtualisation. Cela s'active en général via le *BIOS* de la machine. Si ce n'est pas activé, vous aurez une erreur `KVM: disabled by BIOS` +#### CPU pinning + +Le CPU pinning permet d’attacher un processus à un CPU particulier. La machine virtuelle ne pourra alors utiliser que les CPU que l’hyperviseur lui a associés. Ça permet par exemple de limiter le problème d’invalidation du cache CPU. + +Pour choisir les CPU, on peut s’appuyer sur les informations sur la topologie du processeur avec la commande `lspcu`. + +``` +$ lscpu -e=cpu,core,cache +CPU CORE L1d:L1i:L2:L3 + 0 0 0:0:0:0 + 1 1 1:1:1:0 + 2 2 2:2:2:0 + 3 3 3:3:3:0 + 4 4 4:4:4:1 + 5 5 5:5:5:1 + 6 6 6:6:6:1 + 7 7 7:7:7:1 + 8 0 0:0:0:0 + 9 1 1:1:1:0 + 10 2 2:2:2:0 + 11 3 3:3:3:0 + 12 4 4:4:4:1 + 13 5 5:5:5:1 + 14 6 6:6:6:1 + 15 7 7:7:7:1 +``` + +On voit ici que les CPU 4 et 12 (1ère colonne) sont dans le même _core_ (2ème colonne). Les CPU 4 à 7 et 12 à 15 partagent le même cache L3 (3ème colonne, dernier caractère). La configuration XML ci-dessous associe à la machine virtuelle les CPU 4 à 7 et 12 à 15. + +```xml + +[…] + 2 + + + + + + + + + + +[…] +``` + +La machine virtuelle ne pourra utiliser que ces processur, mais ça n’empêchera pas des processus de l’hôte de les utiliser aussi. Pour empêcher ça, il faudra isoler les CPU. + ### Configuration mémoire On conseille d'avoir une certaine marge de RAM par rapport à la somme de la mémoire allouée à chaque VM, surtout si vous activez du cache au niveau des disques des VMs (ce qui est conseillé pour de bonnes performances).