피드로 돌아가기
InfoQInfrastructure
원문 읽기
eBPF 기반 off-CPU profiling으로 3.5GB mmap_lock 경합 해결
How LinkedIn Identified a Kernel Lock Contention Issue Causing Recurring System Freezes
AI 요약
Context
로그 흔적이 없는 10~15초 간격의 간헐적 시스템 Freeze 발생으로 인한 서비스 가용성 저하 상황. 기존 모니터링 툴로는 찰나의 순간에 발생하는 커널 레벨의 병목 지점을 포착하는 데 한계가 있었던 구조적 제약 존재.
Technical Solution
- BCC eBPF 툴킷을 활용한 실시간 데이터베이스 상태 감시 및 자동 프로파일링 트리거 시스템 구축
- Freeze 감지 즉시 offcputime.py를 실행하여 블로킹된 스레드의 Kernel Stack Trace를 15초간 캡처하는 Trap 구조 설계
- 분석 결과 Rust HashMap의 entry가 58,720,256개를 초과하며 발생한 Resize 작업으로 인한 3.5GB 대규모 메모리 할당 확인
- 대규모 할당 과정에서 mmap_lock 세마포어의 Write Lock 점유로 인해 모든 메모리 관련 스레드가 블로킹되는 Kernel Lock Contention 식별
- HashMap의 Pre-allocation 전략을 도입하여 런타임 중 Resize 발생 가능성을 원천 제거하는 구조로 변경
실천 포인트
1. 런타임 중 Resize가 발생하는 대규모 Collection의 임계치 및 메모리 할당 패턴 검토
2. CPU 사용량은 낮으나 응답 시간이 튀는 'Silent Freeze' 발생 시 eBPF 기반 off-CPU profiling 도구 적용
3. 간헐적 장애 포착을 위해 특정 조건 충족 시 자동으로 프로파일링을 수행하는 자동화된 Instrumentation 구축