BPF 리눅스 관측 가능성 향상하기

이 도서의 리뷰는 한빛미디어 출판사의 리뷰어 활동으로 진행하였습니다.

BPF_LINUX

목차

제1장 소개

제2장 생애 첫 BPF 프로그램

제3장 BPF 맵

제4장 BPF를 이용한 실행 추적

제5장 BPF 유틸리티

제6장 리눅스 네트워킹과 BPF

제7장 XDP 프로그램

제8장 리눅스 커널 보안, 능력, seccomp

제9장 실제 응용 사례

BPF 란 최초 Berkeley Packet filter 의 약자로 사용되었다. 리눅스 커널 네트워크 분석을 위해 사용되던 툴이 지금은 리눅스 커널과 어플리케이션 모두를 분석, 프로파일링 할 수 있는 유용한 툴로 발전하였습니다.

BPF를 온라인으로 학습하고 사용하다 처음 접한 도서가 Brendan Gregg가 작성한 ‘BPF Performance Tools’ 란 책이였다. 외서로써 약 950페이지..? 정도의 책이였다. 스터디를 위해 공부하기 시작하였던 책이였는데, 이 책을 읽고 부족한 점을 느낀 분들은 해당 책을 읽어보는 것을 추천한다. 책은 매우 두껍고, 작가의 개인적인 내용도 있기에 필요한 부분만 찾아서 공부하는 것을 추천한다.

이 책은 내가 읽은 BPF에 관련된 두 번째 책이다. 솔직하게 말하자면, 이 책을 본다고 모두가 리눅스 성능 분석을 할 수 있는 것은 아니다. 분석은 분석하려는 시스템에 대한 이해도가 깊어야한다. 내가 분석하려는 시스템이 어떤 동작을 하는지, 적어도 분석하려는 특정 부분에 대해서는 이해하고, 트레이싱하려는 포인트 또한 알아야 한다. 간단한 예시로 시스템에서 특정 동작 중 파일 I/O 가 매우 느리다고 하자. 이 때 어디를 분석하겠는가? 이 책만 보고는 절대 알 수 없는 부분이다. 아니, Brendan Gregg가 작성한 ‘BPF Performance Tools’ 책을 봐도 마찬가지 일 것 이다.

지금의 BPF 툴은 리눅스 프로파일링에서 점점 자리를 잡아가고 있으며 빠르게 다양한 기능이 확장되고 있습니다. 가장 좋은 건 제가 직접 코드를 작성하여 분석할 수 있다는 것입니다. 이 점은 dynamic tracing을 위한 다양한 기능과 더불어 매우 유용하게 사용될 수 있습니다.

프로파일링 업무를 하시는 분들에겐 BPF를 깊게 공부하는 것이 아닌, BPF가 이렇게 확장되서 사용되고 있구나 정도는 알 수 있는 책입니다. 좀 더 깊게 학습이 필요한 분들 Brendan Gregg 의 블로그나 github BPF 코드를 보는 것을 추천드려요!

감사합니다.