Unikraft: Fast, Specialized Unikernels the Easy Way

Ahn9807 (토론 | 기여)님의 2023년 6월 8일 (목) 03:59 판 (새 문서: 분류: 시스템 논문 Simon Kuenzer, ..., Felipe Huici EuroSys 2021 <Best paper> == 개요 == 이 논문은 커널을 최대한 Modularize하여서, Unikernel을 만들때, Modularized된 시스템에서 쉽고 간편하게 각 모듈을 바꾸어서 Unikernel의 단점이었던 Significant expert work를 줄인 논문이다. == Motivation & Importance == 기존의 Unikernel의 General purpose OS의 Generality를 극복하여 Specialization을 위해서 사용된...)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


Simon Kuenzer, ..., Felipe Huici
EuroSys 2021 <Best paper>

개요

이 논문은 커널을 최대한 Modularize하여서, Unikernel을 만들때, Modularized된 시스템에서 쉽고 간편하게 각 모듈을 바꾸어서 Unikernel의 단점이었던 Significant expert work를 줄인 논문이다.

Motivation & Importance

기존의 Unikernel의 General purpose OS의 Generality를 극복하여 Specialization을 위해서 사용된다. 그러나 이러한 Specialization은 Significant expert work와 종종 non-POSIX compliant하다는 특징이 있었다. 리눅스 커널과 같은 경우에는 각 컴포넌트들이 Strong inter-dependencies를 가지고 연결되어 있어서 리눅스 커널을 직접 Unikernel로 만드는 것은 무리가 있었다. 또한 DPDKSPDK처럼 커널 bypassing하는 방식들또한 Application을 수정해야 하는 문제가 있었다.

Main Idea

Idea
커널을 모듈로 만들어서 각각의 모듈을 교체하는 방식으로 쉽게 Customized커널을 만들자.
Design principles
Single address space, Fully modular system, Single protection level, Static linking, POSIX Support, Platform abstraction

Design

Micro-libraries
Micro library는 Unikraft에서 다른 라이브러리, 혹은 모듈과 스스로의 디자인을 구별하기 위해서 만든 용어로서, 각 마이크로 라이브러리들이 다른 마이크로 라이브러리들과 일부 필수 라이브러리 (memcpy)를 제외하고는 분리되어 독립적으로 컴파일됨을 말하기 위해서 채택한 용어이다. 독립되어서 컴파일 되기 때문에 강한 Dependencies가 없고, 특정 모듈을 교체하는 방식으로 Policy를 쉽게 바꾸거나, 아니면 쉽게 모듈을 수정할 수 있다.

uknetdev, ukalloc, uksched..와 같은 Module들에 대한 설명은 논문 참고.

POSIX
musl C라이브러리를 개조해서, POSIX시스템콜을 다 Function call로 만들어서 작동하도록 수정하였다. 또한 POSIX System call 100-150개 정도를 Support하도록 하여서, POSIX 스택을 사용할 수 있도록 하였다.

Conclusion

이 논문은 Unikernel의 문제라고 생각되었던, Porting effort가 충분히 모듈러화된 OS를 사용하면 많이 줄일 수 있도록 주장한 논문이다. 그러나, 리눅스 처럼 복잡한 커널은 많은 기능들을 가지고 있다. 또한 리눅스는 모듈화된 구조를 성능을 위해서 포기한 경향도 있다. Unikraft의 소스코드는 리눅스 커널에 비하면 매우 작은 크기를 가지고 있다. 과연 리눅스처럼 다양한 기능을 최적화된 성능을 제공하면서, 모듈화된 구조를 유지할 수 있을지에 대한 의문이 든다. 그러나 OS를 모듈화 해야 한다는 생각을, 직접 커널을 구현함으로서 많은 엔지니어링 노력을 통해서 정확히 보여준 것은, 이러한 구조가 Unikernel처럼 풀 스택 OS구현이 필요없을 경우에는 가능할 수도 있다는 생각을 환기함점에 있어서 이점을 가진다고 생각한다.