Skip to main content
QUICK REVIEW

[논문 리뷰] Multithreaded Input-Sensitive Profiling

Emilio Coppa, Camil Demetrescu|arXiv (Cornell University)|2013. 04. 13.
Parallel Computing and Optimization Techniques참고 문헌 27인용 수 3
한 줄 요약

이 논문은 스레드 기반 메모리 크기(trms) 메트릭을 도입하여 입력에 민감한 프로파일링을 다중 스레드 애플리케이션으로 확장한다. trms는 다른 스레드 또는 시스템 호출에 의해 유도된 메모리 접근에서 입력 크기를 자동으로 추정한다. 이 방법은 동적 인스트루멘테이션 기반 프로파일러를 사용하여 고성능 동시 프로그램의 정확한 성능 특성 분석을 가능하게 하며, 고비용 도구와 유사한 오버헤드를 유지하면서 이전 방법보다 훨씬 더 많은 성능 포인트를 수집한다.

ABSTRACT

Input-sensitive profiling is a recent performance analysis technique that makes it possible to estimate the empirical cost function of individual routines of a program, helping developers understand how performance scales to larger inputs and pinpoint asymptotic bottlenecks in the code. A current limitation of input-sensitive profilers is that they specifically target sequential computations, ignoring any communication between threads. In this paper we show how to overcome this limitation, extending the range of applicability of the original approach to multithreaded applications and to applications that operate on I/O streams. We develop new metrics for automatically estimating the size of the input given to each routine activation, addressing input produced by non-deterministic memory stores performed by other threads as well as by the OS kernel (e.g., in response to I/O or network operations). We provide real case studies, showing that our extension allows it to characterize the behavior of complex applications more precisely than previous approaches. An extensive experimental investigation on a variety of benchmark suites (including the SPEC OMP2012 and the PARSEC benchmarks) shows that our Valgrind-based input-sensitive profiler incurs an overhead comparable to other prominent heavyweight analysis tools, while collecting significantly more performance points from each profiling session and correctly characterizing both thread-induced and external input.

연구 동기 및 목표

  • 기존의 입력에 민감한 프로파일러가 순차적 코드에만 적용되며 다중 스레드 애플리케이션에서 스레드 유도 또는 외부 입력을 고려하지 못하는 한계를 해결하기 위해.
  • 입력이 비결정적 스레드 간 통신이나 OS 커널 동작에서 유래하더라도, 각 루틴 활성화에 대한 효과적인 입력 크기를 자동으로 추정함으로써 동시 프로그램의 정밀한 성능 분석을 가능하게 하기 위해.
  • 기존의 동적 인스트루멘테이션 프레임워크(예: Valgrind)와 통합되어 실제 다중 스레드 워크로드를 지원할 수 있는 실용적이고 확장 가능한 프로파일러를 개발하기 위해.
  • 동시 환경에서 정확한 입력 크기 추정이 이전 방법보다 더 정보가 풍부하고 신뢰할 수 있는 비용 함수 플롯을 제공함을 입증하기 위해.

제안 방법

  • 다른 스레드에 의해 수정되거나 시스템 호출에 의해 유도되는 메모리 위치의 첫 번째 접근을 기반으로 입력 크기를 측정하는 스레드 기반 읽기 메모리 크기(trms) 메트릭을 도입한다.
  • 실행 중 저수준 메모리 접근 패턴을 분석하여 각 루틴 활성화에 대해 trms를 추적하고 계산하는 효율적인 알고리즘을 설계한다.
  • 스레드에 안전하지 않은 메모리 작업을 인스트루멘트하고 루틴별 입력 크기 추정치를 기록함으로써 스레드 수준의 컨텍스트를 유지하는 Valgrind 기반 프로파일러를 구현한다.
  • 동적 인스트루멘테이션을 사용하여 메모리 접근 트레이스를 캡처하고, 이를 루틴 활성화와 연관지켜 동시 실행에서 자동으로 입력 크기를 유추할 수 있도록 한다.
  • 여러 실행에서 수집한 경험적 데이터에 비용 함수 피팅 기법을 적용하여 다양한 입력 크기에서의 성능 스케일링을 예측할 수 있도록 한다.
  • 합성 예제와 MySQL, vips에 대한 실제 사례 연구를 통해 비결정적 스레드 상호작용에 대해 강건함을 입증한다.

실험 결과

연구 질문

  • RQ1다중 스레드 프로그램에서 다른 스레드나 시스템 호출에 의해 생성된 입력이 있을 경우, 입력 크기를 어떻게 정확하게 추정할 수 있는가?
  • RQ2성능을 손상시키지 않으면서도 정밀도를 유지하기 위해 동시 환경에서 입력에 민감한 프로파일링을 지원하기 위해 필요한 메트릭과 인스트루멘테이션 기법은 무엇인가?
  • RQ3Valgrind 기반 프로파일러는 다중 스레드 워크로드에서 기존 도구보다 훨씬 더 많은 성능 포인트를 수집하면서도 낮은 오버헤드를 달성할 수 있는가?
  • RQ4제안된 trms 메트릭은 이전 방법에 비해 다중 스레드 응용 프로그램에서 비용 함수 추정의 정확성과 신뢰성에 어떻게 기여하는가?

주요 결과

  • 제안된 trms 메트릭은 I/O나 커널 동작과 같은 스레드 유도 및 외부 입력 원천으로부터 입력 크기를 성공적으로 캡처하여 다중 스레드 프로그램에서 정확한 성능 모델링을 가능하게 한다.
  • Valgrind 기반 프로파일러는 다른 고비용 분 析 도구와 유사한 오버헤드를 기록하여 동적 인스트루멘테이션에도 불구하고 실세계 적용에 적합하다.
  • 이전 방법보다 프로파일링 세션당 훨씬 더 많은 성능 포인트를 수집하여 비용 함수 추정의 해상도와 신뢰성을 향상시킨다.
  • MySQL과 vips에 대한 사례 연구 결과, 기존의 입력에 민감한 프로파일러보다 확장된 프로파일러가 스레드 간 통신에 기인한 버티브레인을 더 정밀하게 특성화함을 보여준다.
  • 이 방법은 스레드 유도 입력과 외부 입력을 정확히 식별하고 구분하여 잘못된 입력 크기 추정으로 인한 오해를 불러일으키는 잘못된 성능 플롯을 방지한다.
  • SPEC OMP2012 및 PARSEC 벤치마크에서의 실험 평가를 통해 다양한 다중 스레드 워크로드에서 이론의 확장성과 강건성을 확인한다.

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

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

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

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