[論文レビュー] A Flexible Thread Scheduler for Hierarchical Multiprocessor Machines
本論文では、『バブル』と呼ばれる、共有データアフィニティを持つスレッドの論理的グループ(論理的集合)を用いて、複雑なマルチレベルマルチプロセッサアーキテクチャ上でパフォーマンスを最適化する、ポータブルで階層的なスレッドスケジューリング機構を提示する。アプリケーションが動的にタスク関係を表現できるようにすることで、従来の機会的スケジューラーよりも最大30%高いパフォーマンスを達成し、16プロセッサのccNUMAシステム上では手動で最適化された非ポータブルな解決策とほぼ同等の結果を得た。
With the current trend of multiprocessor machines towards more and more hierarchical architectures, exploiting the full computational power requires careful distribution of execution threads and data so as to limit expensive remote memory accesses. Existing multi-threaded libraries provide only limited facilities to let applications express distribution indications, so that programmers end up with explicitly distributing tasks according to the underlying architecture, which is difficult and not portable. In this article, we present: (1) a model for dynamically expressing the structure of the computation; (2) a scheduler interpreting this model so as to make judicious hierarchical distribution decisions; (3) an implementation within the Marcel user-level thread library. We experimented our proposal on a scientific application running on a ccNUMA Bull NovaScale with 16 Intel Itanium II processors; results show a 30% gain compared to a classical scheduler, and are similar to what a handmade scheduler achieves in a non-portable way.
研究の動機と目的
- NUMA、マルチコア、SMTシステムを含む、ますます複雑化する階層的マルチプロセッサアーキテクチャ上でスレッドを効率的にスケジューリングする課題に対処すること。
- アプリケーションがアーキテクチャ固有のスケジューリングロジックをハードコードすることなく、タスクおよびデータアフィニティを表現できるポータブルなソリューションを提供すること。
- リモートメモリアクセスを最小限に抑え、キャッシュ局所性を向上させる、自動的かつアーキテクチャに適応したスレッド配分を可能にすること。
- ポータブルで動的なスケジューリングと、手動最適化された非ポータブルスケジューラの高パフォーマンスの間の溝を埋めること。
- 異なる配分戦略の実行時評価を可能にする、柔軟なスケジューリング実験プラットフォームの開発
提案手法
- 強いデータアフィニティを持つスレッドの論理的グループを表現するための『バブル』モデルを導入し、階層的スケジューリング意思決定を可能にする。
- アプリケーションが提供するバブル構造を解釈し、下位のハードウェアトポロジー(例:NUMAノード、プロセッサセット)にマッピングするスケジューラを設計する。
- ランタイム制御と実験を可能にするために、Marcelユーザーレベルスレッドライブラリ内にスケジューラを実装する。
- アプリケーションがハードウェアトポロジー(例:NUMAノード数、ノードあたりのプロセッサ数)を照会できるようにし、バブル作成の支援を行う。
- バブルバーストレベルを用いた動的スケジューリングにより、ワークロード配分の柔軟性を保ちつつ局所性を維持する。
- 低レベルのシステムバインディングやプロセスピン留めを必要としない、ポータブルなスケジューリングヒントをサポートする。
実験結果
リサーチクエスチョン
- RQ1ポータブルでアプリケーションレベルのメカニズムは、階層的マルチプロセッサ上で効率的かつアーキテクチャに適応したスレッドスケジューリングを可能にする方法で、タスクアフィニティを表現できるか?
- RQ2高レベルのヒント(例:バブル)を用いた動的スケジューラは、手動最適化された非ポータブルスケジューラのパフォーマンスにどの程度近づけるか?
- RQ3本スケジューラは、NUMAおよび階層的アーキテクチャ上で機会的スケジューラと比較して、パフォーマンス面でどの程度優れているか?
- RQ4バブルモデルは、さまざまな度合いのデータおよびタスクアフィニティを、ポータブルかつ拡張可能に表現できるか?
- RQ5メモリアクセス局所性制約を伴う実際の科学的ワークロードにおいて、階層的スケジューリングヒントがパフォーマンスに与える影響は何か?
主な発見
- バブルベースのスケジューラは、16プロセッサのccNUMA Bull NovaScaleシステム上で、古典的な機会的スケジューラーよりも30%高いパフォーマンスを達成した。
- バブルモデルを用いたパフォーマンスは、手動で最適化された非ポータブルなスレッドバインディング戦略とほぼ同一であり、高い効率性を示した。
- 同じccNUMAシステム上では、スケジューラがスレッドとそのデータを同じNUMAノードに保つことで、コストの高いリモートメモリアクセスを回避し、メモリアクセス遅延を低減した。
- 本アプローチはIntel PC SMPおよびItanium IIベースのNUMAシステムを含む複数のアーキテクチャで有効であったことから、ポータビリティと適応性を示した。
- アプリケーションレベルでのスレッドバインディングやメモリ割り当ての変更なしに、自動的かつアーキテクチャに適応したスケジューリングが可能になった。
- 結果から、スマートなスケジューラと組み合わせたポータブルなスケジューリングヒントは、ポータビリティを損なわずにほぼ最適なパフォーマンスを達成できることが示唆された。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。