Что делает фейерверк microvm «микро» по сравнению с чем-то вроде qemu?

Из https://firecracker-microvm.github.io/:

Firecracker — это альтернатива QEMU, специально созданная для безопасного и эффективного запуска бессерверных функций и контейнеров, и не более того. Firecracker написан на Rust, предоставляет минимально необходимую модель устройства для гостевой операционной системы, исключая несущественные функции (доступно только 5 эмулируемых устройств: virtio-net, virtio-block, virtio-vsock, последовательная консоль и минимальная клавиатура). контроллер используется только для остановки микроВМ). Это, наряду с оптимизированным процессом загрузки ядра, обеспечивает время запуска < 125 мс и объем памяти < 5 МБ. Процесс Firecracker также предоставляет API-интерфейс управления RESTful, обрабатывает ограничение скорости ресурсов для микроВМ и предоставляет службу метаданных микроВМ, позволяющую обмениваться данными конфигурации между хостом и гостем.

Так что же главное делает qemu медленнее — в первую очередь эмуляция устройства?

И это время запуска 125 мс + 5 МБ в отличие от... чего?

1 ответ

Да, firecracker загружается быстрее и легче, чем QEMU, цифры варьируются (от небольшого до 10-кратного) в зависимости от используемого ядра и заданных опций (драйверов, устройств). Здесь есть более старая статья: https://dreadl0ck.net/papers/Firebench.pdf , которая находит фейерверк быстрее, но не так впечатляюще:

В наших экспериментах среднее время загрузки ядра Firecracker microVM составляет 800 мс в последовательных экспериментах и ​​1000 мс в параллельном сценарии. QEMU загружает ядро ​​Linux в среднем на 18% медленнее. […] Важно отметить, что настройка сетевого стека во время занимает дополнительное время, без инициализации сетевого стека машина может загрузиться за 150-200 мс. Сокращение времени загрузки Firecracker можно объяснить тем, что Firecracker эмулирует только пять устройств: virtio-net, virtio-block, virtio-vsock, последовательную консоль и минимальный контроллер клавиатуры, используемый только для остановки микроВМ.

Но я бы оценил это с другой точки зрения: фейерверк преднамеренно минимален, чтобы создавать меньше возможностей для ошибок конфигурации и, что важно, минимизировать поверхность атаки (обычно он используется для запуска ненадежных рабочих нагрузок). Кроме того, полный контроль с помощью ReST-API упрощает управление.

Другие вопросы по тегам