[논문 리뷰] Faasm: Lightweight Isolation for Efficient Stateful Serverless Computing
Faasm은 Faaslets를 도입하여, WebAssembly 기반의 경량 격리와 서버리스 컴퓨팅을 위한 공유 인메모리 상태를 제공하며 컨테이너 기반 플랫폼에 비해 상당한 속도 향상과 메모리 절감을 달성합니다. Proto-Faaslets를 통한 빠른 콜드 스타트와 로컬/글로벌의 이원화된 두 계층 상태를 통해 효율적인 데이터 공유를 가능케 합니다.
Serverless computing is an excellent fit for big data processing because it can scale quickly and cheaply to thousands of parallel functions. Existing serverless platforms isolate functions in ephemeral, stateless containers, preventing them from directly sharing memory. This forces users to duplicate and serialise data repeatedly, adding unnecessary performance and resource costs. We believe that a new lightweight isolation approach is needed, which supports sharing memory directly between functions and reduces resource overheads. We introduce Faaslets, a new isolation abstraction for high-performance serverless computing. Faaslets isolate the memory of executed functions using software-fault isolation (SFI), as provided by WebAssembly, while allowing memory regions to be shared between functions in the same address space. Faaslets can thus avoid expensive data movement when functions are co-located on the same machine. Our runtime for Faaslets, Faasm, isolates other resources, e.g. CPU and network, using standard Linux cgroups, and provides a low-level POSIX host interface for networking, file system access and dynamic loading. To reduce initialisation times, Faasm restores Faaslets from already-initialised snapshots. We compare Faasm to a standard container-based platform and show that, when training a machine learning model, it achieves a 2x speed-up with 10x less memory; for serving machine learning inference, Faasm doubles the throughput and reduces tail latency by 90%.
연구 동기 및 목표
- 데이터 집약적 서버리스 워크로드를 위한 메모리 안전하고 오버헤드가 낮은 격리 모델에 대한 동기를 부여한다.
- 강한 격리를 유지하면서 효율적인 인메모리 상태 공유를 달성한다.
- 사전 초기화된 스냅샷(Proto-Faaslets)을 통해 빠른 초기화를 제공한다.
- 다양한 언어 및 레거시 코드와 호환되는 최소한의 호스트 인터페이스를 제공한다.
- ML 및 선형대수 워크로드 전반에 걸쳐 컨테이너 기반 배포보다 향상된 성능을 시연한다.
제안 방법
- WebAssembly와 소프트웨어 결함 격리(SFI)를 사용하는 격리 추상화인 Faaslets를 도입한다.
- CPU 및 네트워크 격리를 위해 Linux cgroups와 네트워크 네임스페이스로 제약된 단일 주소 공간 내에서 다수의 Faaslets를 실행한다.
- Distributed Data Objects(DDOs)를 통해 로컬 공유 메모리와 전역 분산 상태의 이원화된 상태 아키텍처를 제공한다.
- Proto-Faaslets를 사용하여 호스트 간 복구를 수백 마이크로초 수준으로 달성하고 빠른 콜드 스타트를 달성한다.
- 네트워킹, 파일 입출력, 동적 링킹 및 메모리 관리에 대한 최소한의 POSIX/WASI 유사 호스트 인터페이스를 제공한다.
- 사용자 코드를 WebAssembly로 컴파일하고, 유효성을 검사하며, 신뢰할 수 있는 호스트 인터페이스와 연결하고, WAVM을 WebAssembly VM으로 실행한다.
실험 결과
연구 질문
- RQ1경량의 WebAssembly 기반 Faaslets가 다중 테넌트 서버리스 워크로드에 대해 메모리 안전한 격리와 효율적인 인메모리 상태 공유를 제공할 수 있는가?
- RQ2데이터 집약적 작업에 대해 Faaslets와 기존 컨테이너 간의 성능 및 자원 사용의 트레이드오프는 무엇인가?
- RQ3데이터 이동과 네트워크 전송을 줄이는 이원화된 로컬/글로벌 상태 아키텍처의 효과는 어느 정도인가?
- RQ4Proto-Faaslets가 빠른 크로스-호스트 복구를 가능하게 하고 클러스터 전반의 콜드 스타트 지연을 줄일 수 있는가?
- RQ5Faaslets 내에서 다양한 워크로드를 WebAssembly로 컴파일할 때 언어 지원의 범위는 얼마나 넓은가?
주요 결과
- SGD로 머신러닝 모델을 훈련시키면 컨테이너 기반 배포에 비해 실행 시간이 60% 개선되고, 네트워크 전송은 70% 감소하며, 메모리 사용은 90% 감소한다.
- TensorFlow Lite와 MobileNet를 이용한 기계학습 추론은 최대 처리량이 200% 이상 증가하고 꼬리 지연이 90% 감소한다.
- 분산 선형대수(Python/Numpy)는 성능 오버헤드가 미미하고 네트워크 전송이 13% 감소한다.
- Faasm은 메모리 사용량을 감소시키고 처리량을 향상시키며, 호스트 간 복원 가능하고 Proto-Faaslets를 통한 빠른 초기화를 제공한다.
- Faaslets의 메모리 풋프린트는 200 KB 미만이고 콜드 스타트 시간은 10 ms 미만이며(Proto-Faaslets는 호스트 간 복원을 수백 마이크로초 수준으로 제공).
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.