Необъяснимый сбой X11 с видео QXL в kvm/virt-manager под нагрузкой

Вопрос или проблема

У меня постоянная проблема с виртуальными машинами 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, и её решение может быть непростым. Ниже приведены некоторые шаги, которые могут помочь решить вашу проблему или по крайней мере облегчить её влияние.

Возможные причины и решения

  1. Недостаток ресурсов:

    • Убедитесь, что вашему виртуальному машине выделено достаточно ресурсов (ЦП, ОЗУ). Если нагрузка на систему (например, во время make && make install) сильно возрастает, это может привести к исчерпанию ресурсов.
    • Проверьте, не превышаете ли вы лимиты по памяти, особенно если в журнале вы видите сообщения об ошибках, связанных с выделением памяти (например, Failed to allocate GEM object).
  2. Обновление системы:

    • Попробуйте обновить ядро до последней версии. Хотя вы упомянули, что пробовали версии ядра 5.16 и 6.10, иногда более новые версии могут содержать исправления для таких ошибок.
    • Убедитесь, что все пакеты (включая spice-vdagent) обновлены до последних стабильных версий для вашей операционной системы.
  3. Параметры виртуальной машины:

    • Если вы используете QXL, проверьте настройки видеопамяти вашей виртуальной машины. Увеличение объема видеопамяти может помочь.
    • Попробуйте изменить настройки: отключите аппаратное ускорение или уменьшите разрешение экрана для временного тестирования.
  4. Использование драйвера Virtio:

    • Хотя вы уже отметили, что при переходе на драйвер Virtio проблемы исчезают, может помочь поиск альтернативных конфигураций.
    • Попробуйте использовать Virtio с установкой дополнительных пакетов, таких как virtio-gtk, которые могут улучшить производительность и возможности.
  5. Тестирование нагрузки:

    • Откройте терминал и запустите тесты нагрузки (например, с помощью stress, stress-ng или sysbench) на вашей VM, чтобы попытаться воспроизвести проблему. Это может помочь лучше понять, что именно вызывает сбой.
  6. Мониторинг системных журналов:

    • При повторяющейся ошибке внимательно просмотрите системные журналы (например, journalctl -xe) сразу после сбоя, чтобы выявить любые дополнительные сообщения об ошибках или предупреждения.
  7. Форумы и сообщество:

    • Посетите форумы и сообщества, такие как Fedora форум или Virtio-каналы на GitHub. Возможно, у других пользователей возникали такие же проблемы, и они могут предложить дополнительные решения или обходные пути.

Если вышеперечисленные шаги не решают вашу проблему, можно рассмотреть возможность обращения к разработчикам QXL или KVM с полной информацией о вашей системе, конфигурации виртуальной машины и детализированными отладочными данными. Также может оказаться полезным создать отчёт об ошибке в системе отслеживания проблем (например, на GitHub), поскольку это может помочь в выявлении проблемы и её устранении в будущем.

Оцените материал
Добавить комментарий

Капча загружается...