컨테이너 콜드 스타트는 흔히 네트워크 대역폭 문제로 설명됩니다. 런타임은 이미지 레이어를 내려받고 압축을 풀고 파일시스템을 마운트한 뒤 프로세스를 시작합니다. 그러나 논문이 측정한 비율은 판단 기준을 바꿉니다. 이미지 내려받기가 시작 시간의 76%를 차지했지만, 서비스가 준비될 때까지 실제로 읽은 데이터는 이미지의 6.4%였습니다. 모든 바이트를 먼저 옮기는 방식은 낭비지만, 필요한 바이트만 받으면 파일 조회가 시작 임계 경로에 들어옵니다.

기존 지연 로딩 시스템은 FUSE를 통해 사용자 공간 데몬을 거칩니다. 전체 전송은 피할 수 있지만 경로 구성요소를 찾을 때마다 커널 경계를 넘고, 이미 내려받은 데이터도 사용자 공간을 다시 통과할 수 있습니다. 백그라운드 선인출은 이후의 누락을 줄일 수 있으나, 시작 중인 컨테이너와 네트워크 및 저장장치 대역폭을 놓고 경쟁할 수도 있습니다. CoFS는 이 비용을 지연 로딩의 필연적 대가가 아니라 이미지 표현 방식에서 생기는 문제로 봅니다.

설계의 출발점은 컨테이너 이미지가 생성된 뒤 바뀌지 않는다는 사실입니다. CoFS는 이미지 생성 시점에 계산을 더 수행해 고정된 이름 공간을 직접 찾을 수 있는 인덱스로 바꿉니다. 내려받은 구간은 호스트 파일시스템의 희소 파일에 저장해 이후 읽기가 커널의 일반 캐시와 입출력 경로를 사용하도록 합니다. 일반 쓰기 가능 파일시스템보다 적용 범위가 좁고, 바로 그 제약이 성능 최적화를 가능하게 합니다.

불변 이름 공간의 사전 컴파일

일반 파일시스템은 디렉터리 항목을 검색하고 경로 이름을 한 단계씩 따라갑니다. FUSE에서는 요청 직렬화, 문맥 전환, 데몬 스케줄링이 이 경로에 추가됩니다. CoFS는 이미지 생성 시 각 디렉터리의 알려진 이름을 대상으로 최소 완전 해시 함수(MPHF)를 만듭니다. 저장된 키 사이에서는 충돌이 없으므로 해시 결과가 조밀한 메타데이터 배열의 위치를 바로 가리킵니다.

이미지에는 해시 매개변수, 압축된 메타데이터, 데이터 배치가 함께 들어갑니다. 마운트할 때 전체 트리를 다시 만들거나 모든 디렉터리 항목을 메모리에 올릴 필요가 없습니다. 조회 과정은 해시로 인덱스를 계산하고 해당 메타데이터 레코드를 읽으며, 필요한 경우 이름을 확인합니다. 인접한 메타데이터가 한 번의 읽기로 함께 들어올 수 있어 대부분의 조회가 평균 1회 미만의 저장장치 입출력을 사용했다고 저자들은 보고합니다. 긴 이름은 추가 접근이 필요할 수 있으므로 모든 조회가 1회라는 보장은 아닙니다.

MPHF 생성은 오프라인 작업입니다. 무작위 그래프 실험에서 평균 계산 시간은 노드 1,000개일 때 0.016초, 100만 개일 때 34.042초였고, 100만 개 조건의 최댓값은 63.24초였습니다. 이 규모의 이미지를 만들고 압축하는 데 이미 수분이 걸린다는 조건에서는 작은 추가 비용입니다. 반면 게시 후 항목이 계속 바뀌는 이름 공간이라면 수정할 때마다 매핑을 다시 만들어야 하므로 적합하지 않습니다.

CoFS는 세 경계에서 작업 위치를 바꿉니다. 이미지 생성 단계에서는 불변 이름 공간을 최소 완전 해시와 조밀한 아이노드 메타데이터로 컴파일합니다. 시작 단계에서는 디렉터리별 해시와 깊은 경로용 전체 경로 해시를 함께 사용합니다. 내려받은 구간은 호스트 희소 파일에 기록하므로 캐시 적중 읽기가 사용자 공간 FUSE 데몬을 다시 거치지 않습니다. 이 글을 위해 새로 만든 도판입니다.

경로 깊이의 직렬 의존성을 줄이는 두 번째 인덱스

한 디렉터리 안에서 바로 찾더라도 경로 구성요소 사이의 의존성은 남습니다. 커널은 보통 /a/b/c를 루트부터 내려가며 해석하므로 b를 찾기 전에는 c를 요청할 수 없습니다. 이미지 내부 경로가 깊을수록 각각의 조회가 빨라도 직렬 연결이 길어집니다.

CoFS는 절대 경로 전체에 두 번째 MPHF를 만들고 병렬 조회에 사용합니다. 깊이가 세 단계를 넘으면 계측된 열기 경로가 절대 경로를 커널 작업 큐에 보내고, 작업자는 잎에서 루트 방향으로 각 접두 경로를 해시해 메모리에 없는 아이노드를 구성합니다. 동시에 일반 커널 조회는 루트에서 아래로 진행됩니다. 역방향 작업자가 이미 메모리에 있는 아이노드를 만나면 중단할 수 있는데, 커널의 하향식 조회 특성상 그 상위 아이노드도 이미 존재하기 때문입니다.

이 방식은 데이터를 추측해 미리 가져오는 기능이 아니라, 앞서 고정하고 인덱싱한 이름 공간을 이용해 메타데이터 생성을 병렬화합니다. 작업 큐와 해시 비용을 상쇄할 만큼 깊은 경로에서 이점이 커지며, Elasticsearch에서는 병렬 조회를 끈 CoFS와 비교해 평균 조회 시간이 28% 줄었습니다. 반면 얕은 이미지나 디렉터리 캐시가 이미 따뜻한 환경에서는 개선 여지가 작습니다.

커널 데이터 경로를 지키는 희소 파일

지연 이미지 시스템은 어느 바이트 구간을 받았는지 기록하고, 없는 구간을 저장소에서 가져와야 합니다. CoFS는 각 이미지 데이터 객체를 호스트 파일시스템의 희소 파일로 표현합니다. 내려받은 범위만 세밀하게 채우며, 존재하는 데이터는 FUSE 데몬에 복사하지 않고 커널 파일시스템과 페이지 캐시를 통해 읽습니다.

캐시된 파일 시험은 Ubuntu 22.04 이미지 안에 100GB 무작위 파일을 만들고 한 번 모두 읽어 내려받은 뒤, 호스트 페이지 캐시를 비우고 컨테이너 안에서 fio를 실행했습니다. 전통 방식, EROFS와 fscache를 사용한 Nydus, CoFS의 성능은 거의 같았습니다. 세 방식 모두 내려받은 바이트를 커널 구성요소로 읽었기 때문입니다. Nydus-FUSE와 eStargz는 캐시된 데이터도 사용자 공간을 거쳐 더 느렸습니다.

운영에서는 이 구분이 중요합니다. 지연 로딩은 하나의 속성이 아닙니다. 메타데이터 해석, 누락 구간 처리, 영속 캐시 배치, 캐시 적중 읽기는 서로 다른 보호 및 스케줄링 경계를 지날 수 있습니다. 첫 번째 누락만 빠르게 만들고 이후 모든 읽기를 데몬에 남겨 두면 콜드 스타트는 줄어도 서비스 실행 비용이 계속 발생합니다. CoFS는 저장소 누락만 예외 경로에 두려는 설계입니다.

제한된 저장소 연결을 전제로 한 비교

프로토타입은 Linux 6.9.1과 stargz-snapshotter 0.15.1을 수정했습니다. 시험 장비는 10코어 Xeon E5-2640 v4 두 개, 메모리 128GB, 4TB HDD, 듀얼 포트 1GbE NIC를 사용했습니다. 이미지 저장소는 기가비트 네트워크로 연결된 다른 장비에서 실행했습니다. 최신 로컬 NVMe 캐시나 고대역폭 데이터센터 패브릭이 아니라, 내려받기 대역폭이 제한된 공유 저장소를 의도적으로 나타낸 조건입니다.

콜드 스타트 비교에는 CoFS, gzip 압축 CoFS, 전체 이미지를 먼저 받는 전통 방식, Nydus-FUSE, Nydus-EROFS, eStargz가 포함됐습니다. 각 컨테이너는 시험 사이에 캐시를 비우며 10회 시작했고, 프로세스 생성 시점이 아니라 서비스별 준비 메시지가 출력되는 시점까지 측정했습니다. Nydus와 eStargz는 백그라운드 내려받기를 켠 조건도 평가했습니다.

CoFS는 시험한 모든 컨테이너에서 비교 시스템보다 빠르게 준비됐습니다. 백그라운드 내려받기는 대부분 성능을 낮췄습니다. 전체 이미지가 준비 시점까지 필요한 데이터보다 훨씬 커서, 불필요한 전송이 전경 누락 처리와 같은 네트워크 및 로컬 입출력 자원을 사용했기 때문입니다. 이 결과를 모든 선인출 정책에 적용해서는 안 됩니다. 저장소 경로가 더 빠르거나, 이후 반복 접근이 많거나, 작업 집합을 정확히 예측한다면 손익은 달라집니다.

SystemTap 측정은 메타데이터 효과를 별도로 보여 줍니다. CoFS의 평균 조회 시간은 루프백 FUSE보다 73%에서 86% 짧았습니다. 이 기준선은 FUSE 조회 비용을 분리하는 데 유용하지만, 모든 운영 컨테이너가 73% 빨리 시작된다는 뜻은 아닙니다. 준비 시간에는 내려받기, 압축 해제, 런타임 초기화, 애플리케이션 작업, 캐시 상태가 함께 들어갑니다.

예측 가능한 작업과 맞바꾸는 불변성

CoFS가 직접 주소 지정을 할 수 있는 이유는 이미지 생성 후 파일을 추가하거나 삭제하거나 이름을 바꾸지 않기 때문입니다. 컨테이너 쓰기는 별도 쓰기 가능 레이어가 담당하고 읽기 전용 기반 이미지는 컴파일된 상태를 유지합니다. 가비지 컬렉션, 이미지 서명, 중복 제거, 콘텐츠 주소 기반 배포는 CoFS 아티팩트와 해시 메타데이터를 하나의 인증 단위로 다뤄야 합니다.

커널 확장도 배포 경계입니다. 따뜻한 읽기를 커널에 유지하면 문맥 전환은 줄지만, 커널 버전마다 유지하고 악성 이미지를 방어해야 할 코드가 늘어납니다. 최소 완전 해시는 알려진 키를 충돌 없이 배치할 뿐, 메타데이터를 인증하거나 공격자가 만든 알 수 없는 키를 자동으로 거부하지 않습니다. 무결성은 이미지 검증 체인과 해시가 가리킨 레코드의 확인 절차에서 확보해야 합니다.

희소 파일 캐시는 용량 관리를 호스트 파일시스템에 맡깁니다. 운영자는 논리 이미지 크기, 실제 할당 구간, 내려받기 누락, 퇴거, 컨테이너 사이 캐시 공유를 각각 관찰해야 합니다. 논리적으로 큰 희소 파일이 곧 큰 물리 할당은 아니지만, 빈 구간을 펼쳐 쓰는 백업이나 복사 도구는 실제 용량을 크게 만들 수 있습니다. 노드 도구가 희소성을 보존하는지도 검증 대상입니다.

콜드 스타트를 나누어 보는 네 가지 지표

도입 시험에서는 준비 시점까지 요청한 바이트, 메타데이터 조회 수, 저장소 누락 바이트, 따뜻한 캐시 읽기 비용을 따로 측정해야 합니다. 이 네 지표는 실제 작업 집합이 큰 이미지, 경로 탐색이 비싼 이름 공간, 과부하된 저장소, 캐시 뒤에도 비싼 사용자 공간 경로를 구분합니다.

CoFS는 이미지가 크고 시작 작업 집합이 작고 반복 가능하며, 경로가 깊고 노드가 내려받은 구간을 유지할 때 가장 잘 맞습니다. 작은 이미지, 계속 바뀌는 트리, 이미지 전송이 이미 로컬이고 메타데이터 시간이 미미한 환경에서는 이점이 작습니다. 논문은 모든 콜드 스타트를 같은 문제로 취급하지 않고 이러한 배치 조건을 측정 가능한 판단 기준으로 바꿉니다.

더 넓은 시스템 관점에서 온디맨드 로딩은 첫 실행뿐 아니라 두 번째 접근도 빨라야 합니다. CoFS는 불변 메타데이터를 미리 컴파일하고, 경로 작업을 겹치며, 내려받은 데이터를 커널에 돌려 줍니다. 어떤 바이트를 가져올지 결정하는 정책만큼 캐시 적중 경로의 구조가 중요하다는 점이 이 연구의 핵심입니다.

출처와 저작권 안내

이 글은 Silicon & Systems의 편집 분석입니다. 설계, 평가 조건, 측정값, 한계를 자체 문장으로 재구성했습니다. 원문의 문장, 표, 도판을 복제하지 않았으며 본문 도판은 이 글을 위해 새로 만들었습니다. 논문은 USENIX FAST 2026 발표 페이지에서 확인할 수 있습니다. 저작권은 저자에게 있으며 연도는 2026년입니다.