피드로 돌아가기
InfoQInfrastructure
원문 읽기
Zombie memcg 제거를 통한 Ray Job 성공률 25%p 회복 및 ENA Reset 해결
Pinterest Engineers Eliminate CPU Zombies to Resolve Production Bottlenecks
AI 요약
Context
Kubernetes 기반 PinCompute 플랫폼 내 Ray 클러스터 운영 중 간헐적인 네트워크 장애 및 ML 트레이닝 Job 크래시 발생. Aggregate CPU 지표는 정상이지만 특정 코어의 System CPU가 100%에 도달하여 ENA Network Interrupt 처리를 방해하는 병목 지점 형성.
Technical Solution
- mpstat를 통한 Per-core 분석으로 특정 코어의 일시적 Saturation 현상 식별
- Perf capture와 Flamescope 시각화를 통해 kubelet 프로세스의 mem_cgroup_nr_lru_pages 커널 함수 호출 부하 확인
- AWS Deep Learning AMI 내 기본 활성화된 미사용 ECS agent의 Crashlooping으로 인한 memory cgroups(memcgs) 누수 발견
- 70,000개에 달하는 Zombie memcg 리스트를 kubelet이 매번 순회하며 단일 코어를 점유하는 구조적 결함 파악
- Base Image 수준에서 ECS agent systemd unit을 비활성화하여 커널 상태 누수 원천 차단
- 머신 리부팅을 통한 기존 누적 cgroup 완전 제거로 Kubelet-Kernel 간 통신 효율 최적화
실천 포인트
1. Aggregate Metric에 의존하지 않고 Per-core/Per-thread 수준의 Resource Saturation 검토
2. AMI 등 Base Image 내 미사용 기본 서비스(Default Agent)의 활성화 여부 및 리소스 누수 점검
3. 간헐적 네트워크 장애 발생 시 ENA/NIC Driver의 Interrupt 처리 지연 및 NAPI poll thread starvation 가능성 분석
4. eBPF 기반의 지속적 프로파일링 도구(Parca, Pyroscope 등) 도입을 통한 Root Cause 분석 시간 단축