6.1 KiB
6.1 KiB
P18. Faasm: WebAssembly-изоляция для stateful serverless
- Версия и дата проверки: 1.1, 07.09.2026.
- Статус: готово к назначению.
Статья и исходные материалы
- Основная статья: Simon Shillaker и Peter Pietzuch — Faasm: Lightweight Isolation for Efficient Stateful Serverless Computing. USENIX ATC 2020.
- Кратко о статье: Обычная serverless-платформа изолирует функции процессами или контейнерами, из-за чего запуск и обмен состоянием между функциями становятся дорогими. Faasm использует лёгкую WebAssembly-изоляцию, совместное размещение функций и средства общего состояния, уменьшая копирование и сериализацию данных. В проекте этот компромисс воспроизводится на CPU и сравнивается с процессной изоляцией.
- Почему результат актуален: система продолжает развиваться, а линия работы получила продолжение в GRANNY с поддержкой OpenMP, MPI и динамического управления ресурсами. Исходный механизм программной изоляции и совместного состояния остаётся доступен в текущем runtime.
- Артефакты и данные: faasm/faasm под Apache-2.0, с локальным кластером через Docker Compose, C++-функциями, тестами и поддержкой распределённого состояния. Зафиксированные ревизии:
faasm/faasm@3127fe5aee8e(Apache-2.0). - Что уже предоставляет артефакт: Faasm предоставляет runtime, распределённое состояние, локальное развёртывание, примеры функций и тесты. Систему можно использовать как внешнюю среду исполнения.
Обязательный результат
- Проверяемый вопрос или утверждение: совместное размещение WebAssembly-функций с разделяемой памятью уменьшает стоимость запуска, копирования данных и потребление памяти относительно изолированных процессов или контейнеров с сериализацией состояния.
- Технический результат: В локальном Faasm-кластере реализовать две CPU-функции, которые обмениваются массивом или состоянием через разделяемую память. Подготовить функционально эквивалентный baseline с сериализацией через файл, сокет или Redis, единый запуск и автоматическую проверку равенства результатов.
- Обязательное приращение команды: Создать предусмотренные две CPU-функции с обменом состоянием, эквивалентный baseline с сериализацией и общий проверяющий запуск. Самостоятельно организовать измерения холодного и тёплого режима, копирования и памяти при нескольких уровнях параллелизма.
- Эксперимент: на подготовленных функциях сравнить разделяемую память Faasm с передачей сериализованных данных через файл, сокет или Redis. Измерять холодный и тёплый запуск, задержку, объём копирования, RSS и пропускную способность при нескольких уровнях параллелизма.
- Границы выводов: стоимость обмена состоянием проверяется для двух CPU-функций и выбранного baseline в локальном окружении; результат не оценивает межузловую сеть, многоарендную изоляцию и масштабирование облачного кластера.
- Ресурсный профиль: локально, Linux или Docker, CPU, желательно 16 ГБ памяти. Если распределённый режим нестабилен, обязательная часть сохраняет реальные Faaslets и разделяемую память на одном узле, а межузловой обмен исследуется в отдельной модели с калибровкой по локальным измерениям.
Содержательные направления
- функции и базовый вариант с сериализацией.
- развёртывание Faasm и инструментирование.
- серии нагрузок, анализ памяти и собственный режим.
Возможное продолжение
Исследовать размер разделяемого состояния, снимки и восстановление, конкуренцию функций, размещение между workers либо границу, после которой удалённый обмен устраняет выигрыш от совместной памяти.