[논문 리뷰] An Efficient Thread Mapping Strategy for Multiprogramming on Manycore Processors
이 논문은 멀티코어 프로세서에서 다중스레드 다중프로그래밍 환경에서의 로드 밸런싱을 향상시키기 위해 확장된 최소 로드(Extended Lowest Load, XLL) 스레드 매핑 전략을 제안한다. 실시간 CPU 활용도를 기반으로 스레드를 코어에 동적으로 할당함으로써, XLL은 단일 및 다중프로그래밍 워크로드에서 모두 원래의 리눅스 스케줄러를 능가한다. 특히 코어 및 스레드 수가 많을수록 두드러진 성능 향상을 보인다.
The emergence of multicore and manycore processors is set to change the parallel computing world. Applications are shifting towards increased parallelism in order to utilise these architectures efficiently. This leads to a situation where every application creates its desirable number of threads, based on its parallel nature and the system resources allowance. Task scheduling in such a multithreaded multiprogramming environment is a significant challenge. In task scheduling, not only the order of the execution, but also the mapping of threads to the execution resources is of a great importance. In this paper we state and discuss some fundamental rules based on results obtained from selected applications of the BOTS benchmarks on the 64-core TILEPro64 processor. We demonstrate how previously efficient mapping policies such as those of the SMP Linux scheduler become inefficient when the number of threads and cores grows. We propose a novel, low-overhead technique, a heuristic based on the amount of time spent by each CPU doing some useful work, to fairly distribute the workloads amongst the cores in a multiprogramming environment. Our novel approach could be implemented as a pragma similar to those in the new task-based OpenMP versions, or can be incorporated as a distributed thread mapping mechanism in future manycore programming frameworks. We show that our thread mapping scheme can outperform the native GNU/Linux thread scheduler in both single-programming and multiprogramming environments.
연구 동기 및 목표
- 다중프로그래밍 환경에서 코어 수가 많아질수록 전통적인 SMP 리눅스 스케줄러의 성능 저하 문제를 해결한다.
- 스레드 수가 코어 수를 초과하거나 워크로드 크기가 다양할 경우, 라운드로빈(BLL)과 같은 기존 스레드 매핑 정책의 비효율성을 규명한다.
- 낮은 오버헤드를 가진 히우리스틱 기반 스레드 매핑 기법을 개발하여, 다중스레드 다중프로그래밍 워크로드에서 로드 밸런싱을 향상시키고 전환 시간을 단축한다.
- 스레드 매핑이 비선형적으로 스케일링되는 애플리케이션에서 특히 성능에 큰 영향을 미친다는 것을 입증한다.
- 미래의 멀티코어 프로그래밍 프레임워크에 적합하고 확장 가능한, 오픈MP 태스크 모델과 호환되는 실용적인 솔루션을 제공한다.
제안 방법
- 각 코어의 실시간 CPU 활용도(유용한 작업을 수행하는 데 소요된 시간)를 측정하여 현재 로드를 추정한다.
- 새로운 스레드를 현재 로드가 가장 낮은 코어에 할당하며, 이미 바쁜 코어에 과도하게 할당되는 것을 방지하는 히우리스틱을 사용한다.
- XLL 알고리즘을 경량 런타임 메커니즘으로 구현하여 pragma 또는 분산 스레드 매핑기로의 통합에 적합하도록 한다.
- 64코어 TILEPro64 프로세서에서 BOTS 벤치마크(NQueens, Strassen, Sort, Health)를 사용해 기술을 평가한다.
- 단일 및 다중프로그래밍 워크로드에서 XLL을 원래 리눅스 스케줄러, 정적 매핑, BLL(라운드로빈)과 비교한다.
- 여러 실험 시나리오에서 스레드 수와 입력 크기가 다양할 때 전환 시간을 주요 성능 메트릭으로 사용한다.
실험 결과
연구 질문
- RQ1멀티코어 시스템에서 코어 수와 스레드 수가 증가함에 따라 원래 리눅스 스레드 스케줄러의 성능은 어떻게 저하되는가?
- RQ2실시간 CPU 로드 기반의 동적 스레드 매핑이 다중프로그래밍 환경에서 로드 밸런싱을 얼마나 향상시키고 전환 시간을 얼마나 줄일 수 있는가?
- RQ3왜 라운드로빈(BLL) 매핑은 이질적인 워크로드와 다양한 스레드 수를 가진 다중프로그래밍 시나리오에서 실패하는가?
- RQ4CPU 활용도 기반의 낮은 오버헤드 히우리스틱이 단일 및 다중프로그래밍 워크로드에서 기존 스케줄러를 능가할 수 있는가?
- RQ5스레드 수가 응용 프로그램의 스케일링에 어떤 영향을 미치며, 최적의 매핑은 비선형적으로 스케일링되는 애플리케이션에서의 성능 저하를 어떻게 완화할 수 있는가?
주요 결과
- 모든 벤치마크와 워크로드에서 XLL 매핑 전략은 원래 리눅스 스케줄러보다 전환 시간을 크게 단축시켰다.
- 첫 번째 다중프로그래밍 시나리오(세 개인 Health 프로그램)에서 XLL은 이미 해제된 코어를 효율적으로 재사용함으로써 바쁜 코어에 스레드를 강제로 할당하는 BLL보다 뛰어난 성능을 보였다.
- 두 번째 시나리오(네 개의 서로 다른 프로그램이 동시에 실행됨)에서 XLL은 리눅스 및 BLL보다 네 프로그램 모두에서 더 낮은 전환 시간을 달성하여 일관된 로드 밸런싱을 입증했다.
- 세 번째 시나리오(10개의 동일한 Sort 프로그램)에서 XLL은 특히 각 프로그램당 16개의 스레드를 사용할 경우 63개의 스레드를 사용할 때보다 뛰어난 성능을 보였으며, 더 많은 스레드가 항상 성능 향상에 기여하지는 않는다는 점을 확인했다.
- 짧은 실행 시간(몇 초 내외)의 프로그램에도 불구하고 XLL 기술의 오버헤드는 극히 미미하여 실시간 및 고처리량 환경에 적합하다.
- 본 연구는 스레드 매핑이 성능에 결정적인 영향을 미치며, 정적 또는 라운드로빈 정책이 멀티코어 시스템에서 다이나믹하고 이질적인 워크로드에 효과적으로 대응하지 못한다는 점을 확인했다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.