FetchBPF: Customizable Prefetching Policies in Linux with eBPF

Ahn9807 (토론 | 기여)님의 2024년 9월 1일 (일) 06:17 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)


USENIX ATC 2024
Xuechun Cao Shaurya Patel Soo Yee Lim Xueyuan Han Thomas Pasquier

개요

eBPF를 이용해서 Prefetching알고리즘을 구현하였다.

Motivation

시스템이 점점 메모리를 많이 요구함에 따라서, Userlevel의 특정 Application에 최적화된 prefetching 알고리즘을 구현하는 것이 점차 중요해지고 있다.

Impotance

Userlevel의 Application에서 Prefetching알고리즘을 조절할 수 있도록 하는 Previous work들이 있었지만, Performance측면으로 단점이 있었다.

Challenge

  1. Prefetching알고리즘에서 공통적으로 필요한 핵심 요소를 추려내어서, eBPF Abstraction으로 구현하는 일
  2. Page fault handler가 호출된후 eBPF를 안전하게 호출하고, I/O Request를 block device의 특성에 따라서 적절하게(배칭같은 형태로) 호출하는 일

Main Idea

eBPF를 통해서 Userlevel semantic을 Kernel-level에 구현하자.

Design

eBPF Hook
eBPF Hook은 page fault가 발생할때 (Minor + Major), Linux kernel이 prefetch알고리즘을 수행하기 전에 작동하여서, Prefetching에 필요한 데이터 수집과, Prefetching알고리즘 조절을 수행한다.
Helper function 디자인
bpf_prefetch_virtual_page, bpf_prefetch_physical_page는 각각 virtual address, physical address에 대한 prefetching을 수행하며, bpf_start(stop)_block_plug는

Evaluation

Prefetching알고리즘을 성공적으로 구현할 수 있었다.

Conclusion

이 논문은 구현은 간단하나, Prefetching이라는 분야에 eBPF를 적용하는 일을 매우 Pratical하게 실증하였다는 점에서 의의가 있다. 한가지 걱정되는 것은 Safety에 대한 구체적인 설명이 없다는 점이다. Physical address를 어떻게 User-level에 안전하게 제공할 것인지, User-level이 I/O Request를 어떻게 처리할 것인지, Asyncrhonous한 응답의 처리가 전체 시스템에는 어떤 영향을 미칠것인지, 혹시라도 복잡한 Policy와 같은 경우에는 eBPF의 Limited programming환경에서 어떻게 구현할 것인지에 대한 Solution이 있었다면 더욱 완벽한 논문이었을 수도 있다는 생각이 가능하다.