메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

FAASM: Lightweight Isolation for Efficient Stateful Serverless Computing

noriwiki
Ahn9807 (토론 | 기여)님의 2025년 1월 11일 (토) 13:06 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


개요

Faaslet은 Address space를 protection domain에 공유하도록 하고, Isolation은 SFI기법을 활용하도록 하여서, 불필요한 overhead를 감소, Serverless computing에서 효율을 증대하였다.

Motivation

Serverless computing은 점차 많은 Data-intensive application에서 사용되고 있다. 그러나 기존 Serverless computing을 위한 디자인은 다음 두가지 문제를 가지고 있다.

  1. Data access overhead: Function을 실행시키기 위한 Data를 Copy하는 과정에서 오버헤드가 발생하고, Bandwidth limitation에 의해서 병령화 되기도 힘들다.
  2. Resource footprint: 초기 리소스 할당과정에서 Booting시간이 증가하는 Cold start문제가 발생한다. 또한 큰 메모리 Footprint는 Scalability측면에서도 문제가 생긴다.

현재 존재하는 Data-intensive serverless application들은 두 문제를 individually풀었을 뿐이며, 같이 해결하지는 못하였다. 즉, 기존에는 데이터카피를 줄이기 위해서 Caching을 사용하게 되면 Isolation과 Multi-tenancy를 희생하였다.

본 논문은 다음과 같은 목적을 달성하고 자 한다.

  1. Function사이에 strong memory and resource isolation을 제공
  2. 동시에 Efficient한 state sharing방식 제공
  3. Multiple host들에 대해서 Scaling있게 작동해야 함
  4. Low memory footprint를 가져야 함
  5. 빠른 booting time을 가져야 함
  6. 다양한 프로그래밍 언어를 Support할 수 있어야 함

Main Idea

  1. SFI기법을 통하여서 가벼운 Isolation기법을 활용한다. 이때, SFI만 사용하면, Resource isolation과 Efficient in-memory sharing을 제공하지 않기 떄문에, 추가적인 방법이 필요하다.
  2. Local/Global state Access를 통하여서 Shared memory를 통해서 서로다른 Function이 RPC없이도 통신할 수 있도록 한다. Runtime을 통해서 이러한 State접근을 통제할 수 있도록 하였다.
  3. Suspended state라는 것을 통해서 Boot시간을 줄였다.
  4. POSIX-like API를 통해서 host environment에 쉽게 접근할 수 있도록 하였다.

Design

Overview
WebAssembly로 SFI를 구현한다음, 제한된 POSIX Library로 API Control하고 추가적으로 CGROUP같은 리눅스의 도움으로 Resource privilege를 구현하였음
Shared Memory Region
FAASM은 WebAssembly의 메모리 모델에 Shared memory model을 더하였다.
Building Functions for FASSM
FASSM Toolchain은 WebAssembly로 우선 코드를 컴파일하며, 그뒤 WebAssembly로부터 Machine code를 얻고, Host interface definition이 link되어 실행한다. 이때 WebAssem->Machine코드를 Compile하는 과정은 TCB인 Host machine에서 수행된다.
Local and Global State
Distributed data object (DDO)라는 High-level state interface를 제공하였다. DDO는 두개로 구성된다; Local tier, Global tier. Local tier은 shared in-memory access를 같은 host에 제공하며, Global tier는 Host끼리 공유할 수 있는 API를 제공한다. API는 key-value store로 구현되며, Shared memory를 통해서 Directly하게 이루어진다. 또한 DDO는 Synchornization을 위한 API도 제공한다.
FAASM Runtime
FAASM Runtime은 Scheduling을 담당한다. Scheduler는 Cold-start를 피하기 위해서 최대한 로딩된 function위주로 스케쥴링한다. 또한 자주 실행하는 Function을 Caching하는 Proto-Faaslet이라는 기능을 제공하였다.

Conclusion

기존 Work들의 Limitation을 다룬 Motivation이 매우 인상깊었다. 그러나 다음의 걱정이 생긴다. 우선 Motivation측면에서, Function program들은 그 크기가 크지가 않은 경우가 대부분인데, FAASM에서 주장한 Overprovisioning이 큰 영향을 미치는가에 대한 의문이 생겼다. 또한 TCB측면에서 Language model, Compiler등등 TCB가 커지는 문제가 있어 보인다. 또한 기존 Work들과는 다른 추가적인 API에 의존한다는 점에서 Transparent측면에서 단점이 존재할 것이라 생각된다. 또한 Shared Memory Region은 Isolation을 희생하고 Performance를 얻는 대표적인 방식으로서, 과연 이 방식이 FAASM의 Motivation중 하나인 Trade-off를 해결한 방식인지에 대한 의문이 생긴다. 또한 Machine code로 실행하기 위해서 WebAssembly를 변환하는 과정이 TCB에 들어가며, 이를 위해 외부 프로그램을 사용하는 점도 Future work에 포함 될 수 있을 것 같다.