행위

EBPF

라이언의 꿀팁백과

Berkeley Packet Filter (BPF) is an in-kernel execution engine that processes a virtual instruction set, and has been extended as eBPF for providing a safe way to extend kernel functionality. In some ways, eBPF does to the kernel what JavaScript does to websites: it allows all sorts of new applications to be created. (Source: How Netflix uses eBPF flow logs at scale for network insight)


#


eBPF(extended Berkeley Packet Filter)는 BPF의 확장된 기술로 커널 소스 코드를 바꾸거나 추가 모듈 추가 없이 프로그램을 OS 커널 공간에서 실행하는 기술이다. eBPF를 활용하면 OS 커널 수준부터 전체 소프트웨어 스택에 걸쳐 노코드 관찰 가능성을 구현할 수 있다. k8s 환경 내에 관찰가능성이 수월해지고 네트워킹 및 보안 부분에도 장점이 생긴다. eBPF는 CPU와 메모리 소비가 1% 미만일 정도로 사용 효율성이 높다. (출처: [Linux] eBPF(Extended Berkeley Packet Filter)란?)


#


BPF (eBPF) tracing is a superpower that can analyze everything...(skip)...Since BPF does so many things, it is becoming a technology name and no longer an acronym. It originated as Berkeley Packet Filter (BPF), an in-kernel execution engine that processes a virtual instruction set, and has been extended (aka eBPF) for providing a safe way to extend kernel functionality. BPF is in the Linux kernel. (Source: BPF Performance Tools: Linux System and Application Observability (book))


BPF tools.png


#


eBPF는 확장 BPF라는 뜻이다. 기존의 BPF에서 사용하던 머신에서 더 나아가서 레지스터의 크기를 늘려주고 스택과 맵을 도입하는 등의 변화가 있었다. 그래서 기존의 BPF를 cBPF (classic BPF)라고 부르고 새로운 BPF를 eBPF로 부르게 되었다.


#


The BSD Packet Filter: A New Architecture for User-level Packet Caputer (Link)


#


eBPF is a revolutionary technology with origins in the Linux kernel that can run sandboxed programs in a privileged context such as the operating system kernel. It is used to safely and efficiently extend the capabilities of the kernel without requiring to change kernel source code or load kernel modules. (Source: What is eBPF?)


#


참고로 시스템 성능 관련해서는 넷플릭스에서 일했던 (지금은 인텔) Brendan Gregg 사람의 블로그에 유익한 글이 많다. (Link)


#


아래 책은 시스템 성능 관련하여 전반적인 시야를 열어주는 책이다.

  • Systems Performance: Enterprise and the Cloud, 2nd Edition (2020) (Link)