리뷰/도서

BPF 성능 분석 도구

Aaron's papa 2021. 8. 10. 22:20
반응형

http://www.yes24.com/Product/Goods/102726821?OzSrank=1

 

BPF 성능 분석 도구 - YES24

BPF 도구를 통한 성능 최적화, 문제 해결 및 시스템 내부 구조 분석BPF 기반 성능 분석 도구들은 시스템과 애플리케이션에 대해 기존과는 차원이 다른 가시성을 제공합니다. 이를 통해 성능 최적

www.yes24.com

성능 분석을 통해 애플리케이션이 최적의 성능을 낼 수 있도록 구성하고 문제를 해결하는 업무는 DevOps 엔지니어나 시스템 엔지니어의 주요 업무 중 하나입니다. 하지만 성능 분석이라는 특성상 주로 성능에 문제가 있을 때 진행하게 되는 경우가 많고, 꽤 많은 수의 트래픽이 들어오지 않으면 성능에 문제가 있을 수 있다는 것을 알 수 없기 때문에 그 중요도가 다른 업무들에 비해 낮아지고 있습니다. 또한 퍼블릭 클라우드의 특성상 빠른 리소스 투입이 가능하기 때문에 성능에 문제가 있을 경우 성능을 분석하기보다는 더 많은 양의 서버, 더 좋은 사양의 서버를 투입해서 성능 문제를 해결하곤 합니다.

 

물론 이런 방법이 잘못되었다는 것은 아닙니다. 당장 서비스에 문제가 발생하고 있는데 성능 분석 및 개선에 쏟을 시간에 돈으로 어느 정도 해결이 된다면 돈을 들여서 해결하는 것도 좋은 선택지 중 하나죠. 하지만 계속해서 이렇게 대응하는 것은 향후에 더 큰 문제를 일으킬 수 있습니다. 비용을 더 투입해서 어느 정도 성능 문제를 해결했다면 그로 인해 벌어 놓은 시간만큼 분석 작업을 시작해서 성능을 개선시키는 노력을 해야 할 필요가 있습니다. 왜냐하면 비용을 들여서 성능 문제를 해결하는 것에는 한계가 있기 때문입니다. 투입할 수 있는 서버의 대수에도 한계가 있고, 좋은 사양으로 높인다고 해도 언젠가는 더 높일 수 없을 만큼 좋은 사양을 사용하게 될 것이기 때문입니다. 그렇기 때문에 성능 분석 업무는 당장 진행해야 할 높은 중요도의 업무는 아니지만 반드시 해야 할 업무 이긴 합니다. 그리고 BPF 도구는 이런 성능 분석을 좀 더 쉽게 할 수 있도록 도와주는 좋은 도구 입니다.

 

굳이 BPF 도구가 아니어도 성능을 분석하고 개선 포인트를 찾아 낼 수 있는 도구들은 많이 있습니다. top, sar, iostat, mpstat과 같은 도구들을 잘 조합하면 BPF 도구를 사용하지 않아도 문제의 원인을 찾아내고 개선할 수 있습니다. 하지만 이런 도구들을 이용하더라도 좀처럼 잡아낼 수 없는 이슈들도 발생하기 마련입니다. 짧은 시간 동안만 실행되어 CPU를 잔뜩 사용하고 없어지는 정체 모를 부하 때문에 문제가 될 수도 있고 (이런 건 execsnoop 으로 잡고), 갑작스럽게 발생하는 TCP 재전송 때문에 애플리케이션의 응답 시간이 저하되는 (이런 건 tcpretrans로 잡고) 경우들이 생길 수 있습니다. 이런 두 가지 경우만 봐도 기존에 사용하고 있는 도구들로는 원인을 파악하기 어렵습니다. 그래서 BPF 도구를 가까이 두는 것이 필요합니다.

 

이 책은 BPF 도구들에 대한 설명을 담고 있습니다. 브랜든 그렉의 이전 책에서와 비슷한 구성으로 CPU, 메모리, 네트워크 등등 주요 항목들로 나누고 각 항목들을 BPF 도구와 기존의 도구들로 분석하는 방법을 예시를 통해서 보여 주고 있습니다. 성능 분석을 시작하기 어려워 하는 사람들을 위해 시작하기 위한 방법도 알려 줍니다. 예를 들어 CPU에 성능 이슈가 있다고 생각이 될 때 어떤 순서로 분석을 시작해야 하는지에 대한 브랜든 그렉 자신이 정의해 놓은 방법론들을 알려 줍니다. 성능 분석에 익숙하지 않은 경우 이런 방법론을 바탕으로 시작해 보는 건 큰 도움이 됩니다. 하지만 한 가지 아쉬운 건 각 항목들에 대한 세세한 설명들 (CPU가 어떻게 동작하고 메모리 할당이 어떻게 이루어지는지 등등)이 많이 생략되어 있다는 점입니다. 본문에도 더 자세한 내용은 Systems Performance를 참고하라고 나와 있기도 합니다. 이 항목들에 대한 설명이 조금 더 자세히 되어 있었다면 더 좋았을 거라는 생각이 듭니다.

Systems Performance의 한글판 제목은 시스템 성능 분석과 최적화 (http://www.yes24.com/Product/Goods/23314903) 입니다.

 

그리고 이 책은 좀 어려운 편에 속하긴 합니다. strace, ftrace 를 사용해 보거나 커널 코드를 살펴보면서 커널 함수들에 대해 조금이라도 경험이 있다면 괜찮을텐데, 그런 경험이 없다면 어색하고 어려울 수 있습니다. 그래서, 저도 그랬지만 대부분 이 책을 처음부터 끝까지 다 이해하면서 볼 수 있는 사람은 흔치 않을 겁니다. 하지만 이 책을 처음부터 끝까지 가벼운 마음으로 훑고 지나가보는 게 중요한 것 같습니다. 책 전체에 걸쳐서 BPF 도구들에 대한 설명과 출력 결과에 대한 설명, 예시들이 있기 때문에 천천히 살펴 보면서 나중에 BPF 도구를 이용한 분석이 필요해질 때 '아 맞다 그게 있었지' 라고 생각이 나면 책을 펼쳐서 그 부분을 다시 한번 세세하게 살펴보면 좋을 것 같습니다.

 

BPF 도구들을 하나하나 기억할 수도 없고 그럴 필요도 없지만, 대략 이런 것들을 할 수 있구나 라는 걸 마음속에 새겨 놓고 기억해 놓으면 나중에 비슷한 이슈가 발생했을 때 그 기억을 발판으로 필요한 정보를 찾아낼 수 있기 때문입니다.

어렵고 읽기 힘든 책인 건 맞습니다. (페이지도 엄청나게 많..) 하지만 성능 분석과 BPF 도구에 대해 평상시 관심이 있는 분이라면 레퍼런스용으로 곁에 두고 있기엔 좋은 책이라고 생각합니다. 

반응형

'리뷰 > 도서' 카테고리의 다른 글

크래프톤 웨이  (0) 2021.10.03
이와타씨에게 묻다  (0) 2021.09.19
Tucker의 Go 언어 프로그래밍  (0) 2021.08.28
클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트  (0) 2021.08.02
컨테이너 보안  (0) 2021.07.26