Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

PageFlex: Flexible and Efficient User-space Delegation of Linux Paging Policies with eBPF: Difference between revisions

From noriwiki
새 문서: 분류: USENIX ATC Anil Yelam, Kan Wu, Zhiyuan Guo, Suli Yang, Rajath Shashidhara, Wei Xu, Stanko Novakovic, Alex C.Snoeren, Kimberly Keeton USENIX ATC 2025 == 개요 == Remote memory system에서 Paging을 어떻게 하느냐에 관한 많은 논문이 있지만, 구현방식에 따라서 Linux커널에 이식하기 힘들거나, 아니면 성능이 느려지는 문제가 있었다. 이 논문은 eBPF를 활용해서 Linux paging policy를 User-level에 Delegate하...
 
No edit summary
 
Line 17: Line 17:
== Design ==
== Design ==
[[파일:USENIX ATC 2025 PageFlex Figure 3.png|750px|섬네일|가운데]]
[[파일:USENIX ATC 2025 PageFlex Figure 3.png|750px|섬네일|가운데]]
* Kernel paging event: Kernel의 Paging이벤트들은 eBPF custom handler를 Invoke시킬 수 있다. Page에 메타데이터를 적을 수 있도록 struct page의 안쓰는 4KB 영역을 이용해서 메타데이터를 저장하였다.
* User-level agent: User-level agent을 Policy영역을 담당한다. eBPF프로그램을 로드하고, eBPF프로그램이 어떻게 작동할지를 컨트롤 한다. eBPF프로그램으로 모든 정보들을 사용해서 Policy decision을 내리고 바탕으로, madvise를 이용해서 Reclamation 이나 Promotion과 같은 정책을 반영한다. 


== Evaluation ==
== Evaluation ==
이를 통해서 기존의 g-swap과 유사한 결과를 얻을 수 있었다.


== [[Conclusion]] ==
== [[Conclusion]] ==
본 논문은 커널 수정없이 eBPF만으로도 기존의 Paging policy를 대체할 수 있음을 보여준 논문이다. eBPF를 Paging policy에 적용시킨 새로운 Design point를 찾는 논문이다.

Latest revision as of 09:45, 5 June 2025


Anil Yelam, Kan Wu, Zhiyuan Guo, Suli Yang, Rajath Shashidhara, Wei Xu, Stanko Novakovic, Alex C.Snoeren, Kimberly Keeton
USENIX ATC 2025

개요

Remote memory system에서 Paging을 어떻게 하느냐에 관한 많은 논문이 있지만, 구현방식에 따라서 Linux커널에 이식하기 힘들거나, 아니면 성능이 느려지는 문제가 있었다. 이 논문은 eBPF를 활용해서 Linux paging policy를 User-level에 Delegate하여서 효율적으로 사용할 수 있도록 하였다.

Motivation & Importance

Paging policy는 메모리를 절약하기 위하여 클라우드시스템에서 많이 연구되고 있다. 예를 들어서, Google의 g-swap이나 Metadata의 Transparent Memory Offloading과 같은 방법을 사용하면, 대략 20-30%정도의 메모리를 아낄수 있다. 그러나 더 좋은 Paging policy들이 연구되고 있지만, Userfaultfd나 LibraryOS의 사용을 요구하기 때문에 쉽게 실제 시스템에 적용해서 사용하기 힘들다.

  • Userfaultfd: Page fault의 Overhead가 증가하며 Scalability가 떨어진다. User-level에 Swap구현을 해야해서, 구현의 난이도가 높다. 또한 커널의 매커니즘을 활용할 수 없다.
  • LibraryOS: Application을 종종 수정해야 하며, Memory system이외에도 Virtualization overhead가 크며, 관리를 위한 개발자 노력이 크다.

Main Idea

eBPF를 사용해서 Paging policy의 Policy파트를 User-level이 작성하여 커널에서 동작하도록 한다. 또한 각 페이지의 메타데이터에 대한 안전하고 overhead없는 event handler를 eBPF로 작성할 수 있도록 하였다. 이를 통해서 Paging policy를 효율적으로 작성할 수 있는 API와 Default구현을 제공하였다.

Design

  • Kernel paging event: Kernel의 Paging이벤트들은 eBPF custom handler를 Invoke시킬 수 있다. Page에 메타데이터를 적을 수 있도록 struct page의 안쓰는 4KB 영역을 이용해서 메타데이터를 저장하였다.
  • User-level agent: User-level agent을 Policy영역을 담당한다. eBPF프로그램을 로드하고, eBPF프로그램이 어떻게 작동할지를 컨트롤 한다. eBPF프로그램으로 모든 정보들을 사용해서 Policy decision을 내리고 바탕으로, madvise를 이용해서 Reclamation 이나 Promotion과 같은 정책을 반영한다.

Evaluation

이를 통해서 기존의 g-swap과 유사한 결과를 얻을 수 있었다.

Conclusion

본 논문은 커널 수정없이 eBPF만으로도 기존의 Paging policy를 대체할 수 있음을 보여준 논문이다. eBPF를 Paging policy에 적용시킨 새로운 Design point를 찾는 논문이다.