시스템에서 좀비를 찾아서: CPU 병목의 실제 사례
Ray 학습 장애의 원인은 GPU가 아니라 ENA 드라이버가 겪는 CPU starvation이었다.
Pinterest의 Kubernetes 플랫폼 팀은 Ray 기반 ML 학습 작업이 간헐적으로 네트워크 연결을 잃고 크래시하는 문제를 추적했다. 처음에는 분산 학습의 불안정성처럼 보였지만, 로그에는 ENA Network driver reset이 반복적으로 남았고, AWS 문서가 지목한 대표 원인인 CPU starvation 가능성에 주목하게 됐다.
네트워크 reset이 발생한 머신들은 일부에서 system CPU 사용률과 page fault가 높게 관측됐다. 팀은 TransparentHugePages, jemalloc, taskset을 통한 CPU affinity, ENA 인터럽트 pinning 같은 완화책을 시도했지만 재현성 있게 문제를 없애지 못했다. 재부팅은 약 일주일 정도만 효과가 있었고, 이후에는 다시 reset이 나타났다.
문제는 모든 존에서 동일하게 나타나지 않았다는 점에서 더 복잡했다. 동일한 Kubernetes 버전과 시스템 이미지를 쓰는 환경인데도 us-east-1a에서만 reset이 집중됐고, AWS 지원팀과의 검토에서도 “어딘가에서 CPU를 과하게 잡아먹어 네트워크 스레드가 굶고 있다”는 결론만 얻었다.
이 시점부터 팀은 고수준 지표 대신 perf와 mpstat 같은 프로파일러로 실제 CPU를 쓰는 코드를 파고들었다. 전체 머신 관점의 평균 사용률만 봐서는 놓치기 쉬운 문제였고, 96 vCPU를 가진 GPU 노드에서는 소수 코어의 포화만으로도 네트워크 스레드가 밀려 드라이버 reset이 발생할 수 있다는 점이 핵심이었다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.