피드로 돌아가기
Dev.toInfrastructure
원문 읽기
eBPF uprobe 기반 CUDA/HIP 통합 트레이싱으로 오버헤드 2% 미만 달성
Same eBPF, Different Vendor: Tracing libhip Calls on AMD ROCm
AI 요약
Context
GPU 벤더별로 상이한 런타임 API로 인해 멀티 벤더 환경의 통합 모니터링 체계 구축에 어려움 발생. 기존 방식은 벤더별 개별 에이전트를 운영해야 하므로 관리 복잡도와 리소스 소모가 큼.
Technical Solution
- libcudart.so와 libhip.so의 안정적인 Symbol 구조를 활용한 eBPF uprobe 설계
- Symbol Resolve 및 Calling Convention 일치 여부에 기반한 벤더 독립적 후킹 메커니즘 적용
- hipLaunchKernel 등 핵심 API Symbol에 Probe를 부착하여 Launch Latency 및 Sync Stall 분석
- Linux Kernel Scheduler 및 TCP/Block I/O tracepoints를 통한 Host-side 병목 지점 식별
- Ring Buffer를 통한 Event 전송 및 /proc/[pid]/maps 매핑으로 커널 심볼 복원 구조 구현
- AMD KFD(Kernel Fusion Driver)의 커널 중심 설계를 활용한 커널 레벨 트레이싱 최적화
실천 포인트
1. 멀티 벤더 라이브러리 분석 시 Symbol Table의 안정성 및 Calling Convention 일치 여부 확인
2. User-mode Probe와 Kernel-side Tracepoint를 조합하여 Host-Device 간 인과관계 매핑
3. /proc/[pid]/maps를 통한 동적 심볼 복원 프로세스 검토
4. 벤더 전용 툴링으로 해결 불가능한 영역(Device Internal)과 eBPF로 해결 가능한 영역(Host/Driver Interface)의 경계 설정