Увидел свет эмулятор QEMU 2.5.0
Состоялся релиз QEMU 2.5. В качестве эмулятора QEMU позволяет запустить программу, собранную для одной аппаратной платформы, на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU производительность выполнения кода в изолированном окружении близка к нативной системе за счёт прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Изначально проект был создан Фабрисом Белларом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной эмуляции для 14 аппаратных архитектур, число эмулируемых аппаратных устройств превысило 400. Всего в разработке всех выпусков QEMU приняло участие более 400 авторов, которые подготовили около 34 тысяч изменений. При подготовке версии 2.5 внесено около 2000 изменений от 185 разработчиков.
Ключевые улучшения, добавленные в QEMU 2.5:
- В устройстве virtio-gpu (виртуальный GPU Virgil3D) добавлена поддержка ускорения 3D-графики, что позволят задействовать средства 3D-акселерации в виртуальных окружениях на базе QEMU и KVM без эксклюзивного проброса видеокарты в гостевую систему. Virtio-gpu позволяет организовать 3D-рендеринг внутри гостевых систем с задействованием GPU хост-системы, но при этом виртуальный GPU работает независимо от физического GPU хост-системы. Для отрисовки требуется наличие компонента virglrenderer;
- Поддержка live-миграции в режиме Postcopy, позволяющем выполнить миграцию гостевых систем, в которых наблюдается большая интенсивность изменений страниц памяти, сравнимая с пропускной способностью канала переноса данных на другую систему. При использовании режима Postcopy, виртуальное окружение запускается почти сразу, а все недостающие данные подгружаются при обращении к не скопированным страницам памяти, определяемым при помощи механизма page fault;
- Для live-миграции реализован метод Autoconverge, позволяющий урезать производительность CPU гостевой системы во время миграции для более быстрого завершения переноса нагруженных гостевых систем;
- Добавлена возможность использования virtio-бэкенда vhost-user при live-миграции при наличии поддерживающего такую миграцию клиента;
- В управляющем протоколе QMP (QEMU Management Protocol) реализована полная поддержка интроспекции. В новой версии реализована команда 'query-qmp-schema', которая позволяет клиентам проанализировать элементы ABI, принимаемые парсером QMP, что может применяться для предварительной оценки доступных для использования возможностей QMP без привязки к номеру версии сборки QEMU, которая не всегда отражает фактическое состояние (например, в пакетах дистрибутивах некоторые новшества могут быть бэкпортированы в старые версии);
- Поддержка горячего подключения многофункциональных устройств с интерфейсом PCIe;
- Увеличена производительность драйвера virtio-pci в режиме virtio-1. Режим virtio-1 пока отключен по умолчанию и может быть активирован через опцию disable-modern=off. Для окружений KVM на процессорах Intel проведены дополнительные оптимизации virtio-1, которые требуют наличия ядра Linux 4.4. Для увеличения производительности на старых ядрах и процессорах без поддержки EPT представлен флаг modern-pio-notify;
- В virtio-бэкенд vhost-user добавлена поддержка работы с привлечением нескольких очередей (multi-queue);
- Поддержка задания сетевых фильтров. В настоящее время доступны только объекты фильтрации «filter-buffer» для буферизации пакетов каждые N микросекунд и «filter-dump» для сброса в сетевого трафика лог. Пример подключения фильтров к сетевому устройству:»-object filter-buffer, id=filter, netdev=net0, queue=rx, interval=1000»;
- В коде эмуляции ARM-систем появилась возможность работы на системах AArch64, добавлена поддержка i.MX31 SoC (тип машины kzm), добавлена возможность доступа SMBIOS к прошивкам для типа машин 'virt;
- В коде эмуляции PowerPC улучшена поддержка загрузки MacOS 9. Для pSeries реализована поддержка virtio-vga и paravirt RNG, а также возможность горячего подключения памяти;
- Представлена начальная поддержка новой целевой архитектуры Tile-Gx;
- Для архитектуры x86 добавлена возможность проброса в Xen-окружения интегрированных GPU Intel. В код эмуляции добавлена поддержка инструкций clflushopt, clwb и pcommit.
© OpenNet