QEMU Гость, использующий большие объемы сжатой памяти при загрузке

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

QEMU Гость, использующий большие объемы сжатой памяти при загрузке

Конфигурация Virt Manager:

введите описание изображения здесь

Использование памяти гостя сразу после загрузки (ничего не запущено):
введите описание изображения здесь

Я запускаю virt-manager на стандартной системе Ubuntu 17.10. В Proxmox аналогичная общая конфигурация (с включенной ballooning) выделит 8GB хоста, но гость использует примерно 1-2GB из 16GB вместо этого.

Я почти уверен, что у меня установлены все драйвера для гостя. (qemu guest, virtio, balloon driver и служба)

Это не моя первая VM QEMU, но единственная за пределами Proxmox (который, как я предполагаю, делает что-то дополнительное, чего не делает virt-manager).

Что действительно усугубляет эту проблему, это если я устанавливаю Текущее выделение на 2GB, гость имеет примерно 15.6GB сжатой памяти, и большинство программ не запускаются или работают неправильно, потому что нет свободной системной памяти…


Хост:

:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:          32163       20273        8949         176        2940       11325
Swap:          2047           2        2045

введите описание изображения здесь

На хосте почти ничего не работает. Похоже, что все 16GB заявлены, но одновременно большая часть этой памяти недоступна для гостя.

обычное и ожидаемое поведение.
qemu/kvm выделяет максимальную оперативную память, пока не будет запущена служба balloon.
после этого любая оперативная память, потребляемая службой balloon, становится свободной (с точки зрения хоста)

Ответ или решение

Проблема, с которой вы столкнулись, связана с тем, как работает управление памятью в QEMU/KVM, особенно в контексте работы с ballooning. Давайте рассмотрим возможные причины и пути решения этой проблемы более детально.

Причины высокой памяти в QEMU Guest

  1. Баллонный механизм (Ballooning): Когда вы настраиваете виртуальную машину в virt-manager, у вас есть возможность назначить определенный объём оперативной памяти. Однако при старте виртуальной машины QEMU/KVM может занять весь доступный объём памяти, пока не начнется работа службы ballooning. Это объясняет, почему при 2 ГБ, установленном в качестве текущего выделения, вы видите 15.6 ГБ сжатой памяти в гостевой системе.

  2. Сервисы и драйверы: Убедитесь, что у вас установлены все необходимые драйверы QEMU/virtio. Вы уже упомянули, что драйверы установлены, однако стоит проверить, что служба ballooning действительно активна и работает внутри виртуальной машины. Для этого можно использовать команду:

    sudo lsmod | grep virtio_balloon

    Если драйвер не загружен, его необходимо активировать.

  3. Конфигурация виртуальной машины: Проверьте конфигурацию вашей виртуальной машины в virt-manager. Убедитесь, что вы действительно настраиваете баллонный механизм, и что параметры памяти (например, максимальной и текущей) заданы правильно. Проверьте также, что функция ballooning включена в параметрах вашей виртуальной машины.

Шаги по решению проблемы

  1. Активация службы Ballooning:

    • Убедитесь, что в гостевой системе запущена служба ballooning. Для Ubuntu можно проверить состояние службы с помощью:
      sudo systemctl status balloon.service
    • Если служба не запущена, ее нужно включить. В большинстве случаев достаточно просто перезагрузить виртуальную машину.
  2. Настройка параметров памяти:

    • В virt-manager выберите вашу виртуальную машину и перейдите в параметры.
    • Убедитесь, что выделенная память соответствует вашим нуждам, и установите минимальное значение согласно вашему плану использования (например, 2 ГБ).
    • Убедитесь, что выделение увеличивается при нагрузке, а не занимает всё необходимое при старте.
  3. Мониторинг:

    • Наблюдайте за использованием памяти, включая сжатую память, и настройте параметры по мере необходимости. Используйте команды free -m и cat /proc/meminfo для мониторинга.
  4. Ресурсы хоста:

    • Убедитесь, что на хосте достаточно ресурсов. Проверьте, не выставлены ли в настройки виртуальной машины ограничения по использованию CPU и RAM.
  5. Обновление ПО:
    • Если вы используете Ubuntu 17.10, имейте в виду, что данная версия больше не поддерживается. Рассмотрите возможность обновления до более новой, поддерживаемой версии операционной системы, чтобы получить более стабильные и совместимые функции виртуализации.

Заключение

Правильное управление памятью в QEMU/KVM требует настраиваемых параметров и активированной службы ballooning. Убедитесь, что все драйверы установлены правильно и мониторинг состояния виртуальной машины проводится с учетом общего использования ресурсов на хостовой машине. Следуя вышеизложенным рекомендациям, вы сможете оптимизировать использование памяти в вашем гостевом окружении.

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

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