eBPF로 Goroutines 실시간 추적
(sazak.io)
이 기사는 eBPF 기반 xgotop으로 Go 런타임의 고루틴 상태와 메모리 할당을 실시간 추적하는 방법을 다루며, 이를 통해 마이크로서비스 환경에서 비침해적으로 성능 병목을 진단하고 동시성 버그를 해결할 수 있는 깊은 가시성을 제공합니다.
이 글의 핵심 포인트
- 1eBPF는 2026년 3월 31일 기준으로 Go 1.26 버전의 런타임에서 고루틴의 상태 변화 및 메모리 할당을 실시간으로 추적하는 데 사용될 수 있다.
- 2`xgotop`은 eBPF Summit '25 해커톤 우승작으로, 고루틴 상태 변화 및 메모리 할당을 실시간에 가깝게 관찰하는 Go 런타임 추적 도구다.
- 3고루틴은 Go 런타임의 `g` 구조체(`goid`, `parentGoid`, `atomicstatus` 등 포함)로 정의되며, `_Gidle`, `_Grunnable`, `_Grunning`, `_Gsyscall` 등 10가지 이상의 상태를 가질 수 있다.