DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
KOEN
Read Original

Contents

Continue Reading

  • More from Netflix
#DevOps

넷플릭스의 마운트 대소동: 현대적인 CPU에서 컨테이너 스케일링하기

넷플릭스의 마운트 대소동: 현대적인 CPU에서 컨테이너 스케일링하기
01

Summary

넷플릭스는 왜 최신 CPU에서 컨테이너 실행 속도가 느려지는 문제를 겪었을까?

리눅스 커널 VFS 락 경합부터 하드웨어 캐시 아키텍처까지, 넷플릭스가 찾아낸 컨테이너 런타임 최적화의 비밀.

이 글은 넷플릭스가 새로운 컨테이너 플랫폼으로 전환하며 겪은 시스템 락 현상의 원인을 하드웨어 수준까지 깊이 파고들어 분석한 기술 리포트입니다. 단순히 소프트웨어 설정의 문제가 아니라, 최신 CPU의 NUMA 및 캐시 구조가 글로벌 락과 만났을 때 발생하는 성능 병목을 실증적인 벤치마크와 함께 설명합니다.

  • 01컨테이너 이미지 레이어 수(50+)에 비례하여 기하급수적으로 증가하는 마운트 작업의 위험성 분석
  • 02리눅스 커널 VFS 글로벌 락 경합이 시스템 전체 지연(30초 이상)에 미치는 영향 확인
  • 03Intel(중앙 집중식 캐시)과 AMD(분산형 캐시) 아키텍처 간의 락 경합 처리 성능 차이 규명
  • 04하이퍼스레딩(HT) 비활성화를 통한 락 경합 지연 시간 20-30% 개선 사례 공유
  • 05containerd 오픈소스 기여를 통해 마운트 로직을 O(n)에서 O(1)로 개선하여 근본적 해결

+RECOMMENDATION

대규모 컨테이너 환경을 운영한다면 이미지 레이어 수를 최적화하고, 특히 보안을 위한 idmap 기능을 사용할 때 하드웨어 특성에 따른 런타임 성능 저하 가능성을 반드시 검토해야 합니다.

The Problem

넷플릭스가 새로운 컨테이너 런타임(kubelet + containerd)으로 전환하는 과정에서 수많은 레이어를 가진 컨테이너를 대규모로 동시 실행할 때 시스템이 멈추거나 30초 이상의 상태 체크 타임아웃이 발생하는 병목 현상이 발견되었습니다.

The Solution

리눅스 커널 VFS의 글로벌 락 경합을 원인으로 식별하고, containerd 소스 코드 수정을 통해 각 레이어마다 수행되던 마운트 작업을 부모 디렉토리 기반의 단일 작업(O(n)에서 O(1))으로 최적화했습니다.

The Result

글로벌 락 경합을 제거함으로써 CPU 아키텍처와 관계없이 안정적인 스케일링이 가능해졌으며, 기존에 락 경합으로 인해 낭비되던 CPU 리소스를 복구하고 컨테이너 시작 지연 시간을 정상화했습니다.

Trade-off

보안 강화를 위해 컨테이너별 고유 사용자 범위를 사용하는 idmap 기능을 도입했으나, 이것이 역설적으로 커널 마운트 작업의 폭증을 야기하여 성능과 보안 사이의 초기 균형 조정이 필요했습니다.

03

Key Concepts

Concept · 01

idmap mounts

파일 소유권을 실제로 변경하지 않고도 커널 수준에서 UID/GID를 매핑하여 다른 사용자 네임스페이스에서도 파일을 안전하게 공유할 수 있게 해주는 기능입니다.

  • 넷플릭스의 신규 런타임에서 보안 강화를 위해 도입되었습니다.
  • 이미지 레이어마다 개별적인 마운트 호출을 유발하여 시스템 부하의 원인이 되었습니다.
Concept · 02

NUMA (Non-Uniform Memory Access)

멀티 프로세서 시스템에서 각 CPU가 자신의 로컬 메모리에는 빠르게 접근하지만, 다른 CPU의 메모리에는 상호 연결망을 통해 상대적으로 느리게 접근하는 설계 방식입니다.

  • 글로벌 락 공유 시 원격 메모리 접근으로 인한 지연 시간을 증폭시켰습니다.
  • r5.metal 인스턴스에서 싱글 소켓 대비 높은 실패율을 보인 주요 원인으로 지목되었습니다.
Concept · 03

VFS Global Lock

리눅스 커널의 가상 파일 시스템(VFS)에서 마운트 테이블 변경과 같은 전역적인 작업을 동기화하기 위해 사용하는 락 메커니즘입니다.

  • 수천 개의 마운트 요청이 동시에 발생할 때 CPU 코어들이 이 락을 획득하기 위해 무한 대기하는 현상이 발생했습니다.
  • containerd의 마운트 로직을 최적화하여 이 락에 대한 의존도를 O(1)로 낮추었습니다.
Continue reading · same source

NetflixMore from Netflix

View all posts from Netflix
  • MAPS: 넷플릭스의 대규모 멀티모달 에셋 개인화

    CLIPMediaFMRecommendation Systems
    1일 전
  • 두 개의 플링크 오토스케일러 이야기

    Apache FlinkAutoscalingStream Processing
    1주 전
  • 넷플릭스가 실시간 분산 그래프를 구축한 방법과 이유: 3부 — gRPC 실행 API를 통한 그래프 쿼리

    gRPCGraph DatabaseDistributed Systems
    3주 전
  • 분석을 위한 디바이스 사양 모델링

    Data ModelingFeature ManagementAnalytics
    4주 전
  • GenRec: 넷플릭스의 LLM 네이티브 추천 시스템을 향하여

    LLMRecommendation SystemContext Engineering
    1개월 전

Source

Netflix
Netflix
Engineering Blog

Published · February 28, 2026

Topics

containerdLinux KernelVFSNUMACPU Architecture