Вопрос или проблема
У меня постоянная проблема с виртуальными машинами Linux, которыми я управляю через virt-manager. Эти виртуальные машины, работающие на различных версиях Fedora Linux с окружением рабочего стола Mate, аварийно завершаются, когда используется видеодрайвер QXL и система находится под высокой нагрузкой более часа (например, во время операций make && make install
).
Симптомы
Все следующие симптомы должны присутствовать; в противном случае это может быть другая проблема:
- Сессия рабочего стола внезапно завершается, что приводит к завершению всех запущенных процессов, и снова отображается экран входа в систему.
- Журнал ядра (dmesg) показывает следующие ошибки в конце:
qxl 0000:00:01.0: object_init failed for (266240, 0x00000001)
[drm:qxl_gem_object_create [qxl]] *ОШИБКА* Не удалось выделить объект GEM (262164, 1, 4096, -12)
[drm:qxl_alloc_ioctl [qxl]] *ОШИБКА* qxl_alloc_ioctl: не удалось создать gem ret=-12
Решение обходом
Переход на видеодрайвер Virtio вместо QXL предотвращает аварии. Однако это изменение вводит новые проблемы:
- Автоматическая настройка разрешения экрана под размер окна больше не работает.
- Производительность дисплея значительно ухудшается, особенно при прокрутке полного окна терминала, где видно, как каждой строке отводится время на перерисовку.
Дополнительная информация
Я прочитал похожие отчеты об ошибках, в некоторых упоминается, что проблема может быть решена в ядре 6.10. К сожалению, этого не произошло в моем случае. Я столкнулся с той же проблемой в старой виртуальной машине с Fedora 34 и ядром 5.16, а также в новых виртуальных машинах с Fedora 38 и 40, работающих на ядре 6.10.
Это звучит похоже, но ошибка другая:
https://access.redhat.com/solutions/7004385
Одна из затронутых виртуальных машин работает на Fedora 40 с ядром 6.10.6-200.fc40.x86_64 и имеет установленный spice-vdagent-0.22.1-6. В настоящее время этой виртуальной машине выделено 32 ГБ ОЗУ.
У меня такая же проблема, за исключением того, что нагрузка на систему, похоже, не является фактором, кроме того, что это происходит только тогда, когда я использую виртуальную машину. Иногда это происходит через 1 час, в других случаях через 5 часов. Важно, что проблема начала появляться только после обновления с Kubuntu 22.04 LTS (версия ядра 5.15) до Kubuntu 24.04 LTS (версия ядра 6.8).
Это, похоже, не самое подходящее место для расследования или публикации этой информации, но я не нашел других, а вопрос, упомянутый в Red Hat, кажется доступным только подписчикам.
Это опубликовано как ответ, потому что Stack Exchange запрещает оставлять комментарии с рейтингом меньше 50.
Ответ или решение
К сожалению, проблема, которую вы испытываете, связана с драйвером QXL в KVM/virt-manager, и её решение может быть непростым. Ниже приведены некоторые шаги, которые могут помочь решить вашу проблему или по крайней мере облегчить её влияние.
Возможные причины и решения
-
Недостаток ресурсов:
- Убедитесь, что вашему виртуальному машине выделено достаточно ресурсов (ЦП, ОЗУ). Если нагрузка на систему (например, во время
make && make install
) сильно возрастает, это может привести к исчерпанию ресурсов. - Проверьте, не превышаете ли вы лимиты по памяти, особенно если в журнале вы видите сообщения об ошибках, связанных с выделением памяти (например,
Failed to allocate GEM object
).
- Убедитесь, что вашему виртуальному машине выделено достаточно ресурсов (ЦП, ОЗУ). Если нагрузка на систему (например, во время
-
Обновление системы:
- Попробуйте обновить ядро до последней версии. Хотя вы упомянули, что пробовали версии ядра 5.16 и 6.10, иногда более новые версии могут содержать исправления для таких ошибок.
- Убедитесь, что все пакеты (включая
spice-vdagent
) обновлены до последних стабильных версий для вашей операционной системы.
-
Параметры виртуальной машины:
- Если вы используете QXL, проверьте настройки видеопамяти вашей виртуальной машины. Увеличение объема видеопамяти может помочь.
- Попробуйте изменить настройки: отключите аппаратное ускорение или уменьшите разрешение экрана для временного тестирования.
-
Использование драйвера Virtio:
- Хотя вы уже отметили, что при переходе на драйвер Virtio проблемы исчезают, может помочь поиск альтернативных конфигураций.
- Попробуйте использовать Virtio с установкой дополнительных пакетов, таких как
virtio-gtk
, которые могут улучшить производительность и возможности.
-
Тестирование нагрузки:
- Откройте терминал и запустите тесты нагрузки (например, с помощью
stress
,stress-ng
илиsysbench
) на вашей VM, чтобы попытаться воспроизвести проблему. Это может помочь лучше понять, что именно вызывает сбой.
- Откройте терминал и запустите тесты нагрузки (например, с помощью
-
Мониторинг системных журналов:
- При повторяющейся ошибке внимательно просмотрите системные журналы (например,
journalctl -xe
) сразу после сбоя, чтобы выявить любые дополнительные сообщения об ошибках или предупреждения.
- При повторяющейся ошибке внимательно просмотрите системные журналы (например,
-
Форумы и сообщество:
- Посетите форумы и сообщества, такие как Fedora форум или Virtio-каналы на GitHub. Возможно, у других пользователей возникали такие же проблемы, и они могут предложить дополнительные решения или обходные пути.
Если вышеперечисленные шаги не решают вашу проблему, можно рассмотреть возможность обращения к разработчикам QXL или KVM с полной информацией о вашей системе, конфигурации виртуальной машины и детализированными отладочными данными. Также может оказаться полезным создать отчёт об ошибке в системе отслеживания проблем (например, на GitHub), поскольку это может помочь в выявлении проблемы и её устранении в будущем.