qemu Windows VM дает сбой, если я меняю уровень SMP

qemu Windows VM дает сбой, если я меняю уровень SMP

Я создал виртуальную машину Windows10 с помощью qemu ДАВНО-ДАВНО и скопировал ее на разные серверы и использовал ее на разных -smpуровнях (я запускаю ее просто с помощью аргументов командной строки и просто использую -smp 4или -smp 8или что-то еще) в зависимости от возможностей сервера. В основном я использую около 75% доступных ядер ЦП в системе, но никогда не >10. То же самое с -mem. Я запускаю ее с , -snapshotпотому что я просто использую ее для тестирования установки и т. д.

Все мои серверы — x86_64, работающие под управлением Ubuntu 20.04 (QEMU 4.2.1)

Это сработало нормально, но мне нужно было обновить образ Windows VM новыми патчами и т. д., поэтому я это сделал (без -snapshotочевидности), и это сработало отлично. Затем я скопировал образ VM на другие мои серверы, но вчера вечером тестирование на одном из них не удалось.

Повторная попытка показывает, что когда этот образ запускается на этом сервере, он надолго останавливается, затем выдает BSOD с ошибкой "power driver state failure", затем он наконец перезагружается и после этого кажется нормальным. Однако это нехорошо, потому что к тому времени, как он наконец запускается, все мои тесты уже истекли и т. д.

Я искал эту ошибку и не нашел ничего. Поэтому я решил просто попробовать что-нибудь наугад :). Первое, что я заметил, это то, что хотя обе мои "рабочая" и "нерабочая" системы используют , -mem 8Gрабочая система использовала , -smp 4а нерабочая система использовала -smp 10: нерабочая система — это более крупный сервер с большим количеством процессоров; в конце /proc/cpuinfoпоказано:

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

Итак, я попробовал перезапустить qemu на "нерабочей" системе с помощью -smp 4и, о чудо, это сработало! Я тоже попробовал -smp 8, и это тоже не удалось, но -smp 6сработало.

Итак, это прискорбно для меня. Есть ли у кого-нибудь идеи, почему это могло произойти, почему эта новая версия образа имеет эту проблему, когда старая работала нормально, есть ли способ исправить это изнутри образа (изменение запуска QEMU будет раздражать, поскольку это требует изменения множества тестовых скриптов во многих ветках Git), или другие подсказки?

Моя стартовая строка QEMU:

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

Если я изменю на , -smp 10то -smp 4это сработает.

решение1

Это не решение, но может указывать на него.

Из старого отчета об ошибке:
Ошибка 689665: Не удалось указать количество ядер процессора для моделей процессоров Nehalem Penryn и Conroe

Причина: некоторые модели ЦП, определенные в qemu-kvm, имеют низкое значение "уровня" (< 4). Сюда входят модели: Conroe, Penrym, Nehalem.

Я полагаю, это означает, что qemu-kvm имеет ограничение на количество ядер, которое зависит от виртуальной архитектуры виртуальной машины.

Я не знаю многого о том, как определена ваша виртуальная машина, и я не использую qemu, но вы, вероятно, достигли одного из его пределов. Вам может потребоваться поэкспериментировать с версиями qemu и параметрами конфигурации, чтобы добиться большего числа ядер.

Связанный контент