J'ai créé une VM Windows10 à l'aide de qemu il y a longtemps et je l'ai copiée sur différents serveurs et je l'ai utilisée avec différents systèmes d'exploitation. -smp
(je le démarre en utilisant uniquement les arguments de la ligne de commande et j'utilise juste -smp 4
o -smp 8
ou autre) en fonction des capacités du serveur. En gros, j'utilise environ 75 % des cœurs de processeur disponibles sur le système, mais jamais plus de 10. Idem avec -mem
. Je l'exécute avec -snapshot
parce que je ne l'utilise que pour tester l'installation, etc.
Tous mes serveurs sont x86_64 et fonctionnent sous Ubuntu 20.04 (QEMU 4.2.1).
Cela a bien fonctionné, mais j'avais besoin de mettre à jour l'image Windows VM avec de nouveaux correctifs, etc. -snapshot
évidemment), et ça a bien marché. J'ai ensuite copié l'image VM sur mes autres serveurs, mais hier soir, le test a échoué sur l'un d'entre eux.
Une nouvelle tentative montre que lorsque cette image démarre sur ce serveur, elle s'arrête pendant un long moment, puis lance un BSOD avec l'erreur "power driver state failure", puis elle redémarre finalement et tout semble aller bien après cela. Cependant, ce n'est pas bon car au moment où il se met enfin en marche, mes tests ont tous été interrompus, etc.
J'ai cherché cette erreur et je n'ai pas trouvé grand chose. J'ai donc décidé d'essayer des trucs au hasard :). La première chose que j'ai remarquée, c'est que si mon système "fonctionnel" et le système "non fonctionnel" utilisent tous deux la fonction -mem 8G
le système de travail utilisé -smp 4
tandis que le système non fonctionnel utilisait -smp 10
le système qui ne fonctionne pas est un serveur plus grand avec plus d'unités centrales ; la fin de la période d'essai de l /proc/cpuinfo
montre :
processor : 19
vendor_id : GenuineIntel
cpu family : 6
model : 79
model name : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz
J'ai donc essayé de redémarrer qemu sur le système "non fonctionnel" avec -smp 4
et voilà que ça a marché ! J'ai aussi essayé -smp 8
et ça a échoué aussi, mais -smp 6
travaillé.
Donc, c'est malheureux pour moi. Est-ce que quelqu'un a une idée de la raison pour laquelle cela pourrait se produire, pourquoi cette nouvelle version de l'image aurait ce problème alors que l'ancienne fonctionnait bien, s'il y a un moyen de le corriger à partir de l'image (changer le démarrage de QEMU sera ennuyeux car cela nécessite de changer beaucoup de scripts de test dans beaucoup de branches Git), ou d'autres conseils ?
Ma ligne de démarrage QEMU est :
qemu-system-x86_64 -enable-kvm -cpu host,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time \
-vnc 0.0.0.0:5 -pidfile qemu-installer-vm.pid -daemonize \
-device nec-usb-xhci -device usb-tablet \
-device ide-hd,bus=ide.0,unit=0,drive=drive-ide0-0-0,id=ide0-0-0,bootindex=1 \
-drive file=win10-x64.qcow2,if=none,id=drive-ide0-0-0,format=qcow2 -vga std \
-net user,hostfwd=tcp::6350-:22 -net nic -name windows \
-m 8G -smp 10 -snapshot
Si je change le -smp 10
a -smp 4
ça marche.