메모리 인식 작업 병렬 배치를 통한 스파크 처리량 향상
초록
본 논문은 Apache Spark 애플리케이션의 메모리 사용 패턴을 다중 전문가(모델) 방식으로 학습하고, 런타임에 가장 적합한 모델을 자동 선택해 메모리 요구량을 정확히 예측한다. 예측된 메모리와 CPU 사용량을 기반으로 작업을 동시 배치(co‑location)함으로써 시스템 전체 처리량을 크게 높이고, 평균 응답 시간을 크게 단축한다. 실험 결과, 이상적인 메모리 예측기 대비 83.9% 성능을 달성했으며, 단일 작업 실행 대비 처리량 8.69배, 지연 시간 49% 감소, 기존 최첨단 스케줄러 대비 각각 1.28배·1.68배 향상을 보였다.
상세 분석
이 연구는 Spark와 같은 인메모리 데이터 처리 프레임워크에서 메모리 자원의 효율적 활용이 전체 시스템 성능에 미치는 영향을 깊이 탐구한다. 기존의 자원 예측 방식은 사용자가 직접 요구량을 입력하거나, 모든 애플리케이션에 동일한 수식(One‑size‑fits‑all)을 적용하는데, 이는 애플리케이션마다 메모리 사용 패턴이 크게 다르기 때문에 큰 오차를 발생시킨다. 논문은 이러한 한계를 극복하기 위해 ‘Mixture‑of‑Experts’라는 머신러닝 기법을 도입한다. 구체적으로, 연구팀은 44개의 대표적인 Spark 워크로드를 대상으로 오프라인 프로파일링을 수행하고, 입력 데이터 크기와 메모리 사용량 사이의 관계를 설명할 수 있는 여러 수학적 함수(선형, 지수, 로그 등)를 전문가 모델로 정의한다. 각 전문가 모델은 특정 유형의 메모리 성장 곡선을 잘 설명하도록 학습된다.
런타임 시에는 새로운 애플리케이션에 대해 작은 샘플 데이터(≈100 MB)를 실행해 L1 캐시 미스, 명령어 캐시 미스 등 5~6개의 하드웨어 성능 카운터를 특징값으로 추출한다. 이 특징벡터를 K‑Nearest‑Neighbour(KNN) 분류기에 입력하면, 가장 적합한 전문가 모델이 선택된다. 선택된 모델은 두 개의 다른 크기 샘플 입력에 대한 실제 메모리 사용량을 측정해 파라미터를 보정(calibration)한다. 이렇게 완성된 메모리 예측 함수는 해당 작업이 차지할 메모리 양을 정확히 추정하고, 동시에 프로파일링 단계에서 측정된 평균 CPU 사용률도 함께 제공한다.
스케줄러는 각 호스트의 남은 메모리와 CPU 사용률을 고려해, 메모리 초과 없이 동시에 실행 가능한 작업 수를 계산한다. 만약 합산 CPU 부하가 100 %를 초과하면 추가 작업 배치를 억제한다. 이 방식은 기존의 과보수적 자원 할당(사용자가 과다하게 요구량을 입력)이나 단일 모델 기반 할당에 비해 훨씬 높은 자원 활용도를 보인다.
실험은 40노드, 다중 코어 클러스터에서 수행됐으며, 메모리 예측 정확도는 평균 5 % 오차에 불과했다. 결과적으로 시스템 전체 처리량은 단일 작업 실행 대비 평균 8.69배 향상됐고, 평균 정규화된 턴어라운드 타임은 49 % 감소했다. 또한, 이상적인 메모리 예측기(oracle) 대비 83.9 %의 성능을 유지했으며, 기존 최첨단 작업 병렬 배치 스케줄러 대비 처리량은 1.28배, 지연 시간은 1.68배 개선되었다.
이 논문의 주요 기여는 (1) Spark 애플리케이션의 메모리 사용을 자동으로 모델링하는 새로운 머신러닝 기반 프레임워크, (2) ‘Mixture‑of‑Experts’를 최초로 자원 요구량 예측에 적용한 점, (3) 이 모델을 실제 스케줄러와 결합해 작업 병렬 배치를 최적화한 실증적 결과, (4) 애플리케이션 소스 코드를 수정할 필요 없이 바로 적용 가능한 시스템 구현이다. 향후 연구에서는 디스크·네트워크 I/O와 같은 다른 자원도 동일한 전문가 모델링 기법으로 확장하거나, 딥러닝 기반 분류기로 전문가 선택 정확도를 더욱 높이는 방안을 탐색할 수 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기