Я создал виртуальную машину 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 и параметрами конфигурации, чтобы добиться большего числа ядер.