ATLAS 이벤트 데이터 선택적 읽기를 위한 지속적 레이아웃 최적화

ATLAS 이벤트 데이터 선택적 읽기를 위한 지속적 레이아웃 최적화
안내: 본 포스트의 한글 요약 및 분석 리포트는 AI 기술을 통해 자동 생성되었습니다. 정보의 정확성을 위해 하단의 [원본 논문 뷰어] 또는 ArXiv 원문을 반드시 참조하시기 바랍니다.

초록

ATLAS는 7 TeV 충돌에서 수십억 이벤트와 페타바이트 규모의 데이터를 기록한다. 이벤트 메타데이터와 TAG 데이터베이스를 이용해 이벤트를 선택적으로 조회할 수 있지만, 실제 데이터 접근 속도는 ROOT 트리의 영구 저장 레이아웃에 크게 좌우된다. 2011년부터 ROOT의 새로운 기능을 활용해 컬럼‑와이즈 저장 방식, 트리 분할 레벨, 버킷 크기 등을 세밀히 조정함으로써 선택적 이벤트 읽기를 수십 배 가속화한다. 본 논문은 이러한 레이아웃 전략과 I/O 성능 향상 결과를 상세히 기술한다.

상세 분석

ATLAS의 데이터 모델은 크게 세 단계로 구성된다. 첫 번째는 온라인에서 RAW 이벤트를 압축해 1.6 GB/초 수준으로 저장하고, 두 번째는 재구성 후 700 kB/이벤트 규모의 Event Summary Data(ESD)를 POOL/ROOT 파일에 보관한다. 세 번째 단계는 ESD에서 파생된 Analysis Object Data(AOD, ~200 kB/이벤트)와 Derived Physics Data(DPD)를 추가로 저장한다. 각 단계는 StoreGate이라는 전역 캐시를 통해 transient 객체와 영구 객체를 매핑한다. 기존에는 StoreGate가 ROOT I/O와 1:1 매핑되는 단일 트리를 사용했으며, ROOT의 기본 split‑level 99가 적용돼 모든 객체가 개별 브랜치와 버킷에 분산되었다. 이 방식은 디스크 사용량을 최소화하고 압축 효율을 높였지만, 선택적 읽기 시에는 불필요한 브랜치와 버킷을 모두 읽어야 하므로 I/O 오버헤드가 크게 발생했다.

2011년부터 ROOT 5.28 이후 도입된 “bucket‑size sharing”과 “column‑wise storage” 옵션을 활용해 ATLAS는 메인 이벤트 트리의 버킷 크기를 30 MB 수준으로 고정하고, 주요 물리 객체(트랙, 클러스터, 입자 등)를 각각 독립적인 컬럼으로 배치했다. 이렇게 하면 동일한 이벤트 내에서 여러 컬럼을 동시에 읽을 때 하나의 대형 버킷을 한 번만 디스크에서 읽어 들이면 되며, 압축률도 유지된다. 또한, 덜 사용되는 보조 객체는 split‑level을 낮춰(예: 1~2) 하나의 브랜치에 묶어 버킷 수를 감소시켰다. 결과적으로, 선택적 이벤트 조회 시 필요한 컬럼만을 포함하는 버킷만 로드되므로 평균 I/O 시간은 10배 이상 단축되었다. 실험에서는 300 Hz 입력률을 유지하면서도 2 TB/일 수준의 데이터 스트림을 5 % 이하의 CPU 사용률로 처리할 수 있었다. 이러한 성능 향상은 TAG 데이터베이스를 통한 SQL‑like 질의와 결합될 때, 물리 분석 팀이 수백만 이벤트를 빠르게 샘플링하고, 재처리 파이프라인을 최소화하는 데 결정적인 역할을 한다.

또한, 새로운 영구 레이아웃은 메모리 사용량을 예측 가능하게 만든다. 기존에는 split‑level 99로 인해 수천 개의 작은 버킷이 메모리 풀에 동시에 적재돼 페이지 폴트가 빈번했지만, 고정 버킷 크기와 컬럼‑와이즈 저장은 메모리 풀을 2 GB 이하로 제한하면서도 디스크 I/O를 최적화한다. 이는 대규모 Grid 작업에서 노드당 메모리 제한을 초과하지 않게 해, 전체 클러스터 효율을 높인다. 마지막으로, ATLAS는 이 레이아웃을 기존 데이터와 호환되도록 설계했으며, 기존 파일은 새로운 StoreGate 인터페이스를 통해 투명하게 읽을 수 있다. 따라서 데이터 마이그레이션 비용 없이 즉시 적용이 가능하다.


댓글 및 학술 토론

Loading comments...

의견 남기기