qemu Windows VM schlägt fehl, wenn ich die SMP-Ebene ändere

qemu Windows VM schlägt fehl, wenn ich die SMP-Ebene ändere

Ich habe vor SEHR langer Zeit eine Windows10-VM mit qemu erstellt und sie auf verschiedene Server kopiert und sie auf verschiedenen Ebenen verwendet -smp(ich starte sie einfach mit Befehlszeilenargumenten und verwende einfach -smp 4oder -smp 8oder was auch immer), basierend auf den Fähigkeiten des Servers. Grundsätzlich verwende ich etwa 75 % der verfügbaren CPU-Kerne im System, aber nie >10. Dasselbe gilt für -mem. Ich führe es mit aus -snapshot, weil ich es nur zum Testen der Installation usw. verwende.

Alle meine Server sind x86_64 und laufen unter Ubuntu 20.04 (QEMU 4.2.1).

Das hat gut funktioniert, aber ich musste das Windows-VM-Image mit neueren Patches usw. aktualisieren, also habe ich das gemacht ( -snapshotnatürlich ohne), und es hat super funktioniert. Dann habe ich das VM-Image auf meine anderen Server kopiert, aber gestern Abend ist der Test auf einem davon fehlgeschlagen.

Ein erneuter Versuch zeigt, dass dieses Image beim Starten auf diesem Server lange pausiert, dann einen BSOD mit dem Fehler „Power Driver State Failure“ ausgibt, dann schließlich neu startet und danach alles in Ordnung zu sein scheint. Das ist jedoch nicht gut, denn bis es endlich hochgefahren ist, sind alle meine Tests abgelaufen usw.

Ich habe nach diesem Fehler gesucht und nicht viel gefunden. Also habe ich beschlossen, einfach wahllos Sachen auszuprobieren :). Das Erste, was mir auffiel, war, dass sowohl mein „funktionierendes“ System als auch das „nicht funktionierende“ System beide verwenden -mem 8G, wobei das funktionierende System verwendet, -smp 4während das nicht funktionierende System verwendet -smp 10: Das nicht funktionierende System ist ein größerer Server mit mehr CPUs; am Ende von /proc/cpuinfowird angezeigt:

processor       : 19
vendor_id       : GenuineIntel
cpu family      : 6
model           : 79
model name      : Intel(R) Xeon(R) CPU E5-2630 v4 @ 2.20GHz

Also habe ich versucht, QEMU auf dem „nicht funktionierenden“ System neu zu starten, -smp 4und siehe da, es hat funktioniert! Ich habe es auch versucht, -smp 8und das ist auch fehlgeschlagen, hat aber -smp 6funktioniert.

Das ist also bedauerlich für mich. Hat jemand eine Idee, warum das passieren könnte, warum diese neue Version des Images dieses Problem haben könnte, während die alte einwandfrei funktionierte, ob es eine Möglichkeit gibt, es innerhalb des Images zu beheben (das Ändern des QEMU-Starts wäre ärgerlich, da dafür viele Testskripte in vielen Git-Zweigen geändert werden müssten) oder andere Hinweise?

Meine QEMU-Startzeile lautet:

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

Wenn ich das -smp 10in ändere -smp 4, funktioniert es.

Antwort1

Keine Lösung, aber es weist möglicherweise auf eine hin.

Aus einem alten Fehlerbericht:
Fehler 689665: Geben Sie die Anzahl der ausgefallenen CPU-Kerne mit dem CPU-Modell Nehalem Penryn und Conroe an

Ursache: Einige auf qemu-kvm definierte CPU-Modelle haben einen niedrigen „Level“-Wert (< 4). Dazu gehören die Modelle: Conroe, Penrym, Nehalem.

Ich verstehe das so, dass qemu-kvm eine Begrenzung der Anzahl der Kerne hat, die von der virtuellen Architektur der VM abhängt.

Ich weiß nicht viel darüber, wie Ihre VM definiert ist, und ich verwende kein QEMU, aber Sie haben wahrscheinlich eine seiner Grenzen erreicht. Möglicherweise müssen Sie mit QEMU-Versionen und Konfigurationsparametern experimentieren, um eine höhere Kernanzahl zu erreichen.

verwandte Informationen