Wonsup Yoon, Jisu Ok, Jinyoung Oh, Sue Moon, Youngjin Kwon EuroSys ’23, May 9–12, 2023, Rome, Italy
개요
DILOS는 Unikernel을 사용해서 paging-based memory migration의 성능 한계를 극복한 논문이다.
Motivation
Memory migration에서 자주사용되는 방식인 Kernel-based는 kernel이 computing node와 memory node의 Migration을 담당하도록 하는 방식이다. 그러나 Kernel-user switching이 자주 일어나고, page와 access unit의 semantic gap은 성능 향상을 위한 방해요소로 작동한다.
이 문제를 해결하기 위해서, Library방식의 방식이 사용된다. AIFM은 Page fault를 피하기 위해서 user-level library를 remote memory management를 처리하게 하였다. Semeru와 같은 경우에는 Garbage collection을 외부노드에서 처리해서 page fault수를 줄였다. 그러나 User-level library방식은 Transparent하지 않다.
Main Idea
Unikernel를 통해서 User-level semantic정보를 반영한 Nimble page fault handler를 개발, 이를 통해서 Page fault handling이 kernel까지 가지 않아도, 빠르게 수행할 수 있도록 하여서 page migration의 성능을 올린다.
- Unikernel을 통해서 Page fault성능을 최대한 끌어 올린다.
- Prefetching, Backgroiund write-back, Fast RDMA와 같은 기능을 구현한다.
- Transparent를 위해서 POSIX Layer를 구현한다.
- 추가적으로 Application의 Semantic을 Prefetching알고리즘의 효율적인 구현에0 반영할 수 있도록 한다.
Design
- Fast Page Fault Handler
- Page fault handling과 Asynchronous networking이 동시에 일어나도록 하였다. 또한 PF처리에서 Permission체크와 같은 복잡한 Logic을 제거하였다. PTE를 개조해서 Local/Remote정보를 담도록 하여서 Metadata overhead를 줄였다.
- Prefetcher, Page Manager, Fast RDMA, Compatibility
- 기존의 prefetching, page eviction daemon, fast RDMA by bypassing VMM data path를 구현하였다. 또한 Compatibility를 위해서 POSIX Layer를 구현하였다.
- App-aware Prefetching Guide
- Application의 Semantic정보를 Prefetcher가 참조할 수 있도록 하여서, prefetching algorithm을 customizing할 수 있도록 upcall/downcall매커니즘을 제공하였다. 이 매커니즘들은 System call과는 다르게 Unikernel의 Function콜로 할 수 있도록 하여서 굉장히 빠르게 일어나게 하였다.