문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. [[분류: 시스템 세미나]] 2022 eBPF Summit - https://ebpf.io/summit-2022/ Alexei Starovoitov == 개요 == eBPF 는 2013년 이후부터 socket filters, sccomp와 같은 다양한 분야에서 사용되어 왔다. 다음과 같은 목표를 세웠지만 달성되지 못하였다. * gcc로 컴파일 -> 현재 clang으로만 사용중 * BPF verifier가 이처럼 복잡해 질것이라고는 생각하지 못하였다. 현재 BPF는 많은 관심을 받고 있으며 여러 분야에서 사용되고 있다. https://ebpf.io/applications BPF는 2022년 현재 다음과 같은 목표를 가지고 있다. ;Rust와 BPF :Rust는 커널의 버그를 줄이는 것이다. BPF는 Restricted된 C를 가지고 있다. Rust와 다르게 안전함을 보장하지만 한계가 있다. 둘은 비슷하지만 다른 목표를 가지고 있다. 또한 Rust는 Portable하지 않다는 문제도 가지고 있다. ;Extending Restricted C :점점 eBPF는 가능성을 넓히고 있다. Inline함수를 가능하게 되었으며, Bounded Loop을 허용하게 되었다. 또한 C language extension을 허용하였다. ;Symbloic Field :LLVM이 구조체의 offset을 저장하는 것이 아니라, type과 symbloic field를 저장하게 하여서, kernel version이 달라져도 안전하게 접근할 수 있도록 하였다. 또한 kptr이라는 커널의 심볼릭한 위치를 가르키는 포인터를 도입하여 커널의 위치가 바뀌어도 가르키는 stable한 pointer를 만들고 있다. 이처럼 커널 버전이 달라도 CO-RE원칙에 따라서 eBPF프로그램을 실행 시킬 수 있도록 하는 노력들이 이루어 지고 있다. ;Lock :eBPF의 락들이 커널의 오브젝트들의 위치를 참고하여 자연스럽게 verifier가 락을 최적화 시키도록 하도록 노력하고 있다. JHA: BPF의 Atomicity로 인하여 Lock의 구현이 힘든데, 이것은 어떻게 할 수 없을까? ;Assertion :assert란 함수를 만들어서, verifier가 static time에 체크하는 Assert을 만들 수 있도록 하고 있다. 예를 들어서, assert(cpu_num ==16)과 같은 예시이다. 2022 ebpf summit alexei starovoitov 문서로 돌아갑니다.