Files

6.1 KiB
Raw Permalink Blame History

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 либо границу, после которой удалённый обмен устраняет выигрыш от совместной памяти.