Skip to main content
QUICK REVIEW

[논문 리뷰] Scalable, Fast Cloud Computing with Execution Templates

Omid Mashayekhi, Hang Qu|arXiv (Cornell University)|2016. 06. 06.
Cloud Computing and Resource Management참고 문헌 21인용 수 3
한 줄 요약

이 논문은 클라우드 컴퓨팅에서 반복적이고 CPU 집약적인 워크로드를 위한 스케줄링 결정을 캐시하는 제어 평면 추상화인 실행 템플릿을 소개한다. 반복되는 계산 루프를 재사용 가능한 템플릿으로 간주함으로써, 시스템은 스케줄링 오버헤드를 줄이고 Spark 및 Naiad 대비 16-43배의 성능 향상을 이룬다. 이는 100개 노드(800개 코어)까지 확장 가능하며, 100μs의 짧은 작업조차도 지원한다.

ABSTRACT

Large scale cloud data analytics applications are often CPU bound. Most of these cycles are wasted: benchmarks written in C++ run 10-51 times faster than frameworks such as Naiad and Spark. However, calling faster implementations from those frameworks only sees moderate (3-5x) speedups because their control planes cannot schedule work fast enough. This paper presents execution templates, a control plane abstraction for CPU-bound cloud applications, such as machine learning. Execution templates leverage highly repetitive control flow to cache scheduling decisions as {\it templates}. Rather than reschedule hundreds of thousands of tasks on every loop execution, nodes instantiate these templates. A controller's template specifies the execution across all worker nodes, which it partitions into per-worker templates. To ensure that templates execute correctly, controllers dynamically patch templates to match program control flow. We have implemented execution templates in Nimbus, a C++ cloud computing framework. Running in Nimbus, analytics benchmarks can run 16-43 times faster than in Naiad and Spark. Nimbus's control plane can scale out to run these faster benchmarks on up to 100 nodes (800 cores).

연구 동기 및 목표

  • 고도로 최적화된 CPU 집약적 코드를 실행할 때 느린 제어 평면이 현대 클라우드 분석 프레임워크에서 성능 저하를 유발하는 문제를 해결하기 위해.
  • Spark 및 Naiad와 같은 기존 프레임워크가 C++ 최적화 커널을 실행할 때 컨트롤러 과부하로 인해 20개 노드를 초과해 확장되지 못하는 한계를 극복하기 위해.
  • 반복적인 제어 흐름을 재사용 가능한 스케줄링 템플릿으로 추상화함으로써, 클라우드 환경에서 100μs 이하의 세밀한 작업(최소 100μs)을 대규모로 고성능으로 실행할 수 있도록 하기 위해.
  • 중앙 집중식 컨트롤러가 이전 시스템보다 최대 100배 빠른 작업률을 처리할 수 있도록 하는 새로운 제어 평면 추상화를 설계하기 위해.
  • 고성능 시뮬레이션(예: PhysBAM)과 같은 복잡한 실제 워크로드를 최소한의 런타임 오버헤드와 거의 네이티브 성능로 지원할 수 있도록 하기 위해.

제안 방법

  • CPU 집약적 응용 프로그램에서 반복 루프를 위한 스케줄링 결정을 캐시하는 제어 평면 추상화로서 실행 템플릿을 도입한다.
  • 작업의 제어 흐름을 컨트롤러 수준의 템플릿과 워커 별 템플릿으로 분해하여, 노드 간에 작업을 분할하면서도 의존성을 유지한다.
  • 동적 프로그램 분석을 사용해 런타임에 템플릿을 패치하여 제어 흐름과 데이터 흐름의 변동을 처리함으로써, 동적 행동에도 불구하고 정확성을 보장한다.
  • 변경 가능한 데이터 객체를 사용해 인-place 계산을 지원하고 메모리 오버헤드를 줄이는 C++ 기반 분석 프레임워크인 Nimbus에 이 추상화를 구현한다.
  • 단일 컨트롤러가 단일 메시지를 통해 템플릿을 통해 수천 개의 작업을 인스턴스화함으로써, 스케줄링 빈도와 지연을 극적으로 감소시킨다.
  • 100μs 이하의 초단기 작업(최소 100μs)을 고려한 작업 스케줄링 최적화를 통해, 이전에는 HPC나 MPI에서만 효율적으로 실행 가능했던 워크로드를 클라우드에서 효율적으로 실행할 수 있도록 한다.

실험 결과

연구 질문

  • RQ1C++ 최적화 커널을 실행할 때 Spark 및 Naiad와 같은 현대 클라우드 프레임워크가 JNI를 통해 호출된 커널이 최대 51배 빠르게 실행됨에도 불구하고 3-5배의 성능 향상에 그치는 이유는 무엇인가?
  • RQ2기존 프레임워크에서 많은 노드로 CPU 최적화 워크로드를 확장할 때 제어 평면이 어떻게 병목 현상이 되는가?
  • RQ3정확성과 확장성에 손상을 주지 않으면서도 초고속 작업률(예: 1ms당 1000개의 작업)을 처리할 수 있는 제어 평면 추상화를 설계할 수 있는가?
  • RQ4동적 제어 흐름 상황에서도 정확성이 유지되는 방식으로, 반복 루프의 반복적 반복에서 스케줄링 결정을 캐시하고 재사용할 수 있는가?
  • RQ5이와 같은 추상화를 갖춘 클라우드 프레임워크가 마이크로초 수준의 작업을 지원하면서도 실제 워크로드, 예를 들어 고성능 시뮬레이션을 얼마나 잘 지원할 수 있는가?

주요 결과

  • 기계 학습 벤치마크의 C++ 구현은 Spark 대비 최대 51배 빠르게 실행되지만, JNI를 통한 호출은 오직 3-5배의 성능 향상만을 제공하며, 이는 제어 평면 병목 현상 때문이었다.
  • Spark 및 Naiad의 제어 평면은 20개 워커 노드를 초과해 확장할 경우 과부하 상태에 이르게 되어, 완료 시간이 감소하는 대신 증가하게 되며, 이는 스케줄링 오버헤드 때문이었다.
  • 실행 템플릿을 사용함으로써, Nimbus는 동일한 최적화된 벤치마크에서 Spark 대비 16-43배, Naiad 대비 16-23배의 성능 향상을 달성했으며, 100개 노드(800개 코어)까지 확장 가능했다.
  • 실행 템플릿 덕분에 컨트롤러는 100μs 이하의 작업—이전 시스템이 지원하는 것보다 100배 더 짧은 작업—을 처리할 수 있었으며, 스케줄링 결정을 캐시하고 스케줄링 빈도를 줄여서 이를 달성했다.
  • 원래 MPI에 맞추어 수작업 최적화된 PhysBAM 시뮬레이션 라이브러리는 실행 템플릿을 사용할 경우 네이티브 MPI 성능의 약 15% 이내에서 실행되었으며, 실제 적용 가능성의 증거가 되었다.
  • 런타임에 템플릿을 동적으로 패치함으로써 제어 흐름이나 데이터 흐름의 변동에도 불구하고 정확성이 보장되며, 이는 다양한 복잡한 워크로드에서 성능을 손상시키지 않고도 추상화가 작동할 수 있음을 의미한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.