Объявлено о выходе эмулятора QEMU 1.0, который подвёл итоги развития проекта за восемь лет с момента основания. Изначально проект был создан Фабрисом Беллардом (Fabrice Bellard) с целью обеспечения возможности запуска собранных для платформы x86 исполняемых файлов Linux на архитектурах, отличных от x86. За годы разработки была добавлена поддержка полной симуляции для 14 аппаратных архитектур, число симулируемых аппаратных устройств превысило 400. За восемь лет в разработке приняло участие 400 авторов, которые смогли подготовить около 20 тысяч изменений.
В качестве эмулятора QEMU позволяет запустить программу собранную для одной аппаратной платформы на системе с совершенно иной архитектурой, например, выполнить приложение для ARM на x86-совместимом ПК. В режиме виртуализации в QEMU достигается производительность выполнения кода в изолированном окружении близкая к нативной системе, за счет прямого выполнения инструкций на CPU и задействования гипервизора Xen или модуля KVM.
Ключевые улучшения, появившиеся в QEMU 1.0:
- Реализация генератора кода TCI (Tiny Code Interpreter), позволяющего запустить QEMU на архитектурах для которых не генерируется нативный код. Иными словами TCI даёт возможность выполнять QEMU на любой 32- и 64-разрядоной хост-системе, в то время как без поддержки TCI классический генератор кода TCG может обеспечить работу только на хост-системах x86, arm, mips, ppc, s390 и sparc. TCI не генерирует нативный код, а обеспечивает трансляцию фрагментов кода (базовых блоков) из кода для целевой платформы в промежуточное представление (байткод), которое не зависит от архитектуры хост-системы и выполняется путем интерпретации. Ценой универсальности является скорость, поэтому для поддерживаемых хост-систем рекомендуется использовать классический генератор кода TCG;
- Новое блочное устройство scsi-block, которое можно использовать в том числе и для проброса реальных SCSI-устройств в виртуальное окружение без изменения имени устройства (например, можно использовать в гостевой системе имена /dev/sda или /dev/sr0, вместо /dev/sgN). Новый драйвер позволяет добиться более высокой эффективности при работе со SCSI-устройствами за счёт отсутствия необходимости в использовании дополнительной памяти при передаче больших объемов данных в гостевой системе.
Параллельно ведётся разработка нового стека организации работы с устройствами хранения virtio-scsi, который планируется использовать вместо virtio-blk и работа над которым ещё не завершена. Необходимость в создании virtio-scsi обусловлена тем, что virtio-blk лишён некоторых возможностей, реализация которых затруднена из-за необходимости изменения спецификаций и нарушения совместимости. Кроме того в virtio-blk имеется ограничение в одно PCI-устройство на диск, что ограничивает масштабируемость. Virtio-scsi сохранит эффективную архитектуру и производительность virtio-blk, дополнив данную систему новыми возможностями, такими как одновременное использование нескольких целевых устройств (qemu и lio) и возможность привязки к одному PCI устройство тысяч дисков, которые внутри виртуального окружения не будут ничем отличаться от реальных SCSI-устройств;
- Поддержка Live-миграции, используя файлы с образами виртуальных машин в таких форматах как QCOW2, размещенные на хранилище, общем для участвующих в миграции хостов;
- Новый внутренний API для управления памятью, основанный на использовании новой техники моделирования памяти, которая более точно соответствует реализации памяти в реальных компьютерах. Для мониторинга иерархии используемых в гостевой системе регионов памяти можно использовать новую команду "info mtree". В настоящее время новый API базируется на старом API управления памятью, что накладывает ряд ограничений по реализации дополнительных возможностей, но уже позволяет начать разработчикам миграцию.
- Поддержка эмуляции процессоров семейства Tensilica Xtensa, предназначенного для использования во встраиваемых системах. В настоящее время степень поддержки Tensilica Xtensa позволяет запустить Linux на платах sim (Tensilica ISS)) и LX60/LX110/LX200. Из процессорных ядер поддерживаются DC232b и FSF;
- В QEMU теперь используется отдельная нить для выполнения виртуального CPU (VCPU). Данная возможность была реализована в ветке qemu-kvm и являлась одним из основных отличий qemu-kvm от основной кодовой базы QEMU;
- Для всех форматов образов виртуальных машин добавлена поддержка асинхронного выполнения операций;
- Поддержка аккаунтинга задержек ввода/вывода (I/O latency). Посмотреть статистику можно через команду мониторинга "info blockstats";
- Значительно увеличена точность эмуляции SCSI. SCSI-устройства могут быть адресованы по channel/target/LUN. Эмулируемый SCSI CD-ROM теперь поддерживает DVD-образы и информирование о смене состояния носителя;
- В SLIRP добавлена поддержка ARP-ответов и ARP-запросов со стороны гостевой системы;
- В VDI добавлена поддержка отброшенных блоков (discarded blocks) в образах с динамическим изменением размера;
- Добавлена поддержка инструкций ARM-процессоров Cortex-A15 в режиме linux-user (через "-cpu any"). Добавлена поддержка звука для плат vexpress-a9, versatileab, versatilepb и realview-*.