본문 바로가기
Books

[책] BPF 성능 분석 도구

by hyeyoo 2021. 10. 28.
※ 이 블로그의 글은 글쓴이가 공부하면서 정리하여 쓴 글입니다.
※ 최대한 내용을 검토하면서 글을 쓰지만 틀린 내용이 있을 수 있습니다.
※ 만약 틀린 부분이 있다면 댓글로 알려주세요.

책 홍보 아님

요즘 코드만 보다보니까 너무 시야가 좁아진다는 생각이 들어서 알라딘에서 볼만한 책을 찾다가 이 책을 만났다. 이 책은 BPF라는 도구가 어떻게 동작하고, 이 도구로 리눅스 시스템을 어떻게 계측하는지를 설명해준다. 나는 원래 BPF, TRACING, PERF와 같은 서브시스템이 왜 중요한지 몰랐다. 하지만 이 책을 읽다보니 생각이 완전히 바뀌었다. 예를 들어서 성능과 관련된 부분에서 작업을 한다면 성능을 정확하게 측정할 수 있어야 한다. 코드의 어떤 부분에서 병목이 생기는지, 어떤 코드 경로에서 시간을 잡아먹는지, 실행시에 어떤 이벤트가 발생하는지를 알아야 한다. 정확한 측정 없이는 문제를 찾을 수도 개선할 수도 없다. BPF가 리눅스 시스템을 더 잘 이해할 수 있도록 시야를 넓혀줄거란 기대가 생겼다. 그리고 심지어 유연하기까지 하다.

 

생각보다 재미있어서 며칠동안 5챕터 정도를 읽었다. 아직 컴퓨터 아키텍처나 LLVM, 프로그래밍 언어론쪽을 잘 알지는 못해서 내부를 이해하지는 못했지만, BCC나 bpftrace로 만든 프로그램들으로 리눅스 시스템이 실제로 어떻게 동작하는지 계측하기에 매우 좋겠다는 생각이 들었다.

 

최근에는 커널 관련 주제만 공부했는데 BPF는 어플리케이션을 이해하고 개선하는 데에도 큰 도움이 될 것이다. 어플리케이션이 커널과 밀접한 관계를 맺고있기도 하고, BPF를 사용하면 커널 뿐만 아니라 어플리케이션의 동작도 계측할 수 있다. 당분간은 BPF/TRACING/PERF 등의 서브시스템을 활용하는 법을 배워야겠다.

 

 

BPF 성능 분석 도구: BPF 트레이싱을 통한 리눅스 시스템 관측가능성과 성능 향상

BPF를 설명하는 글을 보면 대개 “BPF는 버클리 패킷 필터(Berkeley Packet Filter)의 약자로….”라는 문장으로 시작되곤 합니다. 그러나 현재의 BPF는 패킷이나 필터링과 거의 관계가 없어서 ‘버클리

blog.insightbook.co.kr

 

댓글