Компания Amazon опубликовала систему виртуализации Firecracker 1.0

Компания Amazon опубликовала значительный выпуск
монитора виртуальных машин (VMM, Virtual Machine Monitor) Firecracker 1.0.0, рассчитанного на запуск виртуальных машин с минимальными накладными расходами. Firecracker является ответвлением от проекта CrosVM, используемого компанией Google для запуска приложений Linux и Android в ChromеOS. Разработка Firecracker ведётся в подразделении Amazon Web Services с целью повышения производительности и эффективности работы платформ AWS Lambda и AWS Fargate. Код Firecracker написан на языке Rust и распространяется под лицензией Apache 2.0.

Firecracker предлагает легковесные виртуальные машины, именуемые microVM. Для полноценной изоляции microVM применяются технологии аппаратной виртуализации на базе гипервизора KVM, но при этом обеспечивается производительность и гибкость на уровне обычных контейнеров. Система доступна для архитектур x86_64 и ARM64, и протестирована на CPU семейства Intel Skylake, Intel Cascade Lake, AMD Zen2 и ARM64 Neoverse N1. Предоставляются средства для интеграции Firecracker в runtime систем контейнерной изоляции, таких как Kata Containers, Weaveworks Ignite и containerd (предоставляется runtime firecracker-containerd).


Выполняемое внутри виртуальных машин программное окружение урезано и содержит только минимальный набор компонентов. Для экономии памяти, сокращения времени запуска и повышения безопасности в окружениях запускается модифицированное ядро Linux, из которого исключено всё лишнее, в том числе сокращена функциональность и урезана поддержка устройств. При этом возможен запуск в виртуальных машинах microVM и обычных окружений на базе штатного ядра Linux (поддерживаются ядра 4.14 и 5.10).

При запуске с урезанным ядром дополнительный расход памяти по сравнению с контейнером составляет менее 5 Мб. Задержка с момента запуска microVM до начала выполнения приложения заявлена в пределах от 6 до 60 мс (в среднем 12 мс), что позволяет порождать новые виртуальные машины с интенсивностью до 180 окружений в секунду на хосте с 36 ядрами CPU.

Для управления виртуальными окружениями в пространстве пользователя выполняется фоновый процесс Virtual Machine Manager, предоставляющий RESTful API, реализующий такие функции, как настройка, запуск и остановка microVM, выбор шаблонов CPU (C3 или T2), определение числа виртуальных процессоров (vCPU) и размера памяти, добавление сетевых интерфейсов и дисковых разделов, задание ограничений на пропускную способность и интенсивность выполнения операций, предоставление дополнительной памяти и мощностей CPU в случае нехватки ресурсов.

Кроме использования в качестве более глубокого уровня изоляции для контейнеров Firecracker также подходит для обеспечения работы FaaS-систем (Функция как услуга), предлагающих модель бессерверных вычислений, разработка при которой ведётся на уровне подготовки набора небольших отдельных функций, каждая их которых обеспечивает обработку определённого события и рассчитана на обособленную работу без привязки к окружению (stateless, результат не зависит от прошлого состояния и содержимого ФС). Функции запускаются только при возникновении необходимости и сразу после обработки события завершают свою работу. FaaS-платформа сама размещает подготовленные функции, организует управление и обеспечивает масштабирование окружений, необходимых для выполнения подготовленных функций.

Release. Ссылка here.