JP2013526754A - マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム - Google Patents

マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム Download PDF

Info

Publication number
JP2013526754A
JP2013526754A JP2013512102A JP2013512102A JP2013526754A JP 2013526754 A JP2013526754 A JP 2013526754A JP 2013512102 A JP2013512102 A JP 2013512102A JP 2013512102 A JP2013512102 A JP 2013512102A JP 2013526754 A JP2013526754 A JP 2013526754A
Authority
JP
Japan
Prior art keywords
parallel
state
thread
global
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013512102A
Other languages
English (en)
Other versions
JP2013526754A5 (ja
JP5745038B2 (ja
Inventor
ペグシン,アントン
クリレフ,アレクサンドル
Original Assignee
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2013526754A publication Critical patent/JP2013526754A/ja
Publication of JP2013526754A5 publication Critical patent/JP2013526754A5/ja
Application granted granted Critical
Publication of JP5745038B2 publication Critical patent/JP5745038B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3404Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for parallel or distributed programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/86Event-based monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/88Monitoring involving counting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/885Monitoring specific for caches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

マルチスレッドアプリケーションの具体的な問題を決定する解析モデルを提供する方法及びシステム。本発明の一実施例では、マルチスレッドアプリケーションは、実行用の複数のスレッドを利用し、各スレッドの現在状態に基づき、各スレッドが複数の状態のそれぞれに割り当てられる。こうすることによって、マルチスレッドアプリケーションの具体的な問題が、各スレッドの複数の状態間の遷移の回数に基づき決定される。本発明の一実施例では、解析モデルは、マルチスレッドアプリケーションの各パラレル領域又はアルゴリズムについて、ワーカスレッド遷移カウンタ又はイベントを用いて、何れの問題が起こったか、またそれがパラレル領域又はアルゴリズムのスケーラビリティにどの程度影響を与えたかを決定する。

Description

本発明は、マルチスレッドアプリケーションに関し、限定することなくより詳細には、マルチスレッド処理フレームワークを利用するマルチスレッドアプリケーションの具体的問題を決定する解析モデルに関する。
Open Multi−Processing(OpenMP)、Intel(登録商標) Threading Building Blocks(TBB)、Intel(登録商標) Cilk++、Intel(登録商標) C++ for Throughput Computing(Ct)、及びMicrosoft(登録商標) Parallel Patterns Library(PPL)などのマルチスレッド処理フレームワークは、マルチスレッドアプリケーションのパフォーマンスを向上させるためパラレル化を可能にする。マルチスレッドアプリケーションの効果は、マルチスレッドアプリケーションの各スレッドが同時実行のためCPU/コアの1つを利用するとき、複数の中央処理ユニット(CPU)を有するコンピュータシステム、又は複数のコアを有するCPU上で観察できる。
しかしながら、マルチスレッド化されたフレームワークがマルチスレッドアプリケーションを実行するのに誤って利用された場合、パラレル化の効果は危うくなるかもしれない。図1Aは、パラレルforループの従来のコード100を示す。ファンクションfoo()の粒度は1として設定される。ファンクションfoo()が実行するのにかかる時間に依存して、パラレル化の効果は、1の粒度が詳細すぎるため危うくなるかもしれない。
図1Bは、ダイナミックスケジューリングによるパラレルforループの従来のコード130を示す。ファンクションfoo()の粒度は、3として設定される。ダイナミックスケジューリングは、分散オーバヘッドを要求し、ファンクションfoo()が実行するのにかかる時間に依存して、パラレル化の効果は、3の粒度が詳細すぎるため危うくなるかもしれない。
図1Cは、作業タスクが1つのみのスレッドから生じる又は生成される従来のコード150を示す。どの程度の大きさ変数Nが設定されるかに依存して、従来のコード150は、有意なアクティブスチーリングオーバヘッド(active stealing overhead)による線形スポーニング(linear spawning)問題を有することが可能である。例えば、変数Nが100より大きく設定されるとき、当該実行は、再帰的なスポーニングによる他の実行よりはるかに悪くスケーリングする。
従来のコード100,130,150は、マルチスレッドアプリケーションが不適切に又は非効果的に利用可能である可能なシナリオを示す。
本発明の実施例の特徴及び効果は、主題の以下の詳細な説明から明らかになるであろう。
図1Aはパラレルforループの従来のコードを示し、図1Bはダイナミックスケジューリングによるパラレルforループの従来のコードを示し、図1Cは1つのみのスレッドから生じる又は生成される作業タスクの従来のコードを示す。 図2は、本発明の一実施例によるプラットフォームのモジュールを示す。 図3は、本発明の一実施例によるワーカスレッドライフサイクル状態マシーンに基づく解析モデルを示す。 図4は、本発明の一実施例によるマルチスレッドアプリケーションのパフォーマンスを解析するためのステップのフローチャートを示す。 図5Aは、本発明の一実施例によるマルチスレッドアプリケーションの各パラレル領域のパラレルオーバヘッドの理由を決定するためのステップのフローチャートを示す。 図5Bは、本発明の一実施例によるマルチスレッドアプリケーションの各パラレル領域のパラレルオーバヘッドの理由を決定するためのステップのフローチャートを示す。 図6は、本発明の一実施例によるここに開示される方法を実現するシステムを示す。
ここに記載される発明の実施例は、単なる具体例として示され、添付した図面に限定されるものでない。説明の簡単化のため、図示された要素は必ずしもスケーリングして示されていない。例えば、一部の要素の大きさは、明確化のため他の要素に対して誇張されてもよい。さらに、適切であると考えられるとき、参照番号は、対応する又は類似する要素を示すため図面間で繰り返されている。本発明の“一実施例”又は“実施例”という明細書の用語は、当該実施例に関して説明される特定の特徴、構成又は特性が本発明の少なくとも1つの実施例に含まれることを意味する。従って、明細書を通じて各所における“一実施例では”というフレーズの出現は、必ずしもすべてが同一の実施例を参照しているとは限らない。
本発明の実施例は、マルチスレッド処理フレームワークを利用するマルチスレッドアプリケーションの具体的な問題を決定するための解析モデルを提供する。本発明の一実施例では、マルチスレッドアプリケーションは、実行用の複数のスレッドを利用し、各スレッドは、各スレッドの現在状態に基づき複数の状態の各状態に割り当てられる。こうすることによって、マルチスレッドアプリケーションの具体的問題は、各スレッドの複数の状態間の遷移の頻度に基づき決定される。本発明の一実施例では、解析モデルは、ワーカスレッド遷移カウンタ又はイベントを利用して、マルチスレッドアプリケーションの各パラレル領域又はアルゴリズムに対して、何れの問題が生じたか、またパラレル領域又はアルゴリズムのスケーラビリティにそれがどの程度影響したかを決定する。
本発明の一実施例では、マルチスレッドアプリケーションを実行するためのマルチスレッド処理フレームワーク又はパラレルスレッド処理ライブラリの利用は、マルチスレッドアプリケーションのパラレル実行からのパフォーマンスの利益がユーザの観点から重要でない又は許容できない場合、非効果的又は問題である。パフォーマンスの利益は、限定することなく、より迅速な実行時間、CPUチック回数の低減などを含む。例えば、本発明の一実施例では、マルチスレッドアプリケーションを実行するためのマルチスレッド処理フレームワークの利用は、マルチスレッドアプリケーションを実行するためのパラレルオーバヘッドがマルチスレッドアプリケーションのパラレル実行からのパフォーマンス利益と同等又はより大きいときには効果的でない。
図2は、本発明の一実施例によるプラットフォーム200のモジュールを示す。プラットフォーム又はシステム200は、複数のプロセッサ及び/又はマルチコアプロセッサを有し、オペレーティングシステム(OS)250は、複数のプロセッサの少なくとも1つ又はマルチコアプロセッサのコアの1つの上で実行される。OS250は、プラットフォーム200上でマルチスレッドアプリケーション210を実行するのに利用可能なネイティブスレッド255のプールを有する。
リソースマネージャ240は、ネイティブスレッド255のプールを管理し、実行用のスレッドの利用性を制御する。タスクスケジューラ230は、ネイティブスレッド255のプールから利用可能なスレッドによって実行されるべきタスクをスケジューリングする。パラレルスレッド処理ライブラリ220は、ネイティブスレッド255を用いたパラレル実行のため、マルチスレッドアプリケーション210により参照又は利用可能なファンクションを含む。
本発明の一実施例では、マルチスレッドアプリケーション210は、限定することなく、Open Multi−Processing(OpenMP)、Intel(登録商標) Threading Building Blocks(TBB)、Intel(登録商標) Cilk++、Intel(登録商標) C++ for Throughput Computing(Ct)、Microsoft(登録商標) Parallel Patterns Library(PPL)及び他の何れかのマルチスレッド処理フレームワークを含むパラレルスレッド処理ライブラリ220又はマルチスレッド処理フレームワークを利用する。
本発明の一実施例では、パラレルスレッド処理ライブラリ220は、マルチスレッドアプリケーション210がサブ最適なパラレルアルゴリズムを有していることを決定し、解析モデルを用いてサブ最適なパラレルアルゴリズムの1以上のパフォーマンス問題を決定するためのロジックを有する。本発明の他の実施例では、当該ロジックは、Intel(登録商標) Parallel Amplifierソフトウェアの一部である。本発明のさらなる他の実施例では、当該ロジックは、プラットフォーム200の何れかのモジュールの一部とすることができる。
プラットフォーム200のモジュールは別々のブロックとして示されているが、1つのモジュールの処理は、他のモジュールにより実行されてもよい。例えば、一実施例では、OS250は、リソースマネージャ240のファンクションを実行可能である。他の実施例では、パラレルスレッド処理ライブラリ220はまた、OS250に統合されてもよい。当業者は、モジュール又はファンクションの異なる組み合わせが本発明の動作に影響を与えることなく実行可能であることを容易に理解するであろう。
図3は、本発明の一実施例によるワーカスレッドライフサイクル状態マシーンに基づく解析モデル300を示す。マルチスレッドアプリケーションが実行されると、パラレルオーバヘッドが、マルチスレッドアプリケーションのパラレルな実行を実行するため生じる又は必要とされる。パラレルオーバヘッドは、限定することなく、スレッドメンテナンス、ワーカスレッド間のジョブ分散などを含む。本発明の一実施例では、パラレルオーバヘッドは、アクティ及び非アクティブなパラレルオーバヘッドに分類される。
本発明の一実施例では、過剰なアクティブパラレルオーバヘッドがマルチスレッドアプリケーションのパラレル実行に影響を与えうる2つのシナリオがある。アクティブパラレルオーバヘッドの第1シナリオは、1以上のワーカスレッドが自らのローカルキューからジョブユニット又はタスクを取得するライフタイムの多すぎる時間を消費するときに生じる。第1シナリオは、詳細すぎ又は小さすぎなレベルとして設定されるマルチスレッドアプリケーションのパラレル領域の粒度によるものである。アクティブパラレルオーバヘッドの第2シナリオは、1以上のワーカスレッドが他のタスクキュー又はグローバルジョブマネージャキューのタスクを検索するのにライフタイムの多すぎる時間を消費するときに生じ、すなわち、ワーカスレッドは、自らのローカルキュー以外の他のソースからタスクをスチールしている。
同様に、本発明の一実施例では、過剰な非アクティブパラレルオーバヘッドがマルチスレッドアプリケーションのパラレルな実行に影響を与えうる2つのシナリオがある。非アクティブパラレルオーバヘッドの第1シナリオは、1以上のワーカスレッドがアイドル状態になると発生する。これは、それらが自らのタスクを終了したが、依然として自らのタスクを実行しているワーカスレッドの残りを支援することができないためである。1以上のワーカスレッドの過剰な待機は、非アクティブパラレルオーバヘッドを生じさせる。
非アクティブパラレルオーバヘッドの第2シナリオは、利用可能なワーカスレッドのすべてを飽和又は利用するのに十分なジョブ又はタスク生成がないときに生じる。ワーカスレッドは、1つのタスクの実行から他のタスクの検索に連続的に遷移し、利用可能なタスクがなくなると、アイドル状態に入る。新たなタスクが利用可能なとき、利用可能なすべてのスレッドは再びアクティブ状態になる。新たなタスクに割り当てられない利用可能なスレッドは、他のタスクの検索への連続的な遷移を繰り返し、利用可能なタスクがなくなると、アイドル状態に入る。
本発明の一実施例では、アクティブ及び非アクティブパラレルオーバヘッドの4つのシナリオは、解析モデル300を用いたマルチスレッドアプリケーションのパラレル領域の実行中に特定される。アクティブ及び非アクティブパラレルオーバヘッドの4つのシナリオの1以上が、マルチスレッドアプリケーションのパラレル領域内で発生可能である。解析モデル300は、ワーカスレッドの現在状態を記述する4つの状態を有するワーカスレッドライフサイクル状態マシーンを有する。各ワーカスレッドは、それのライフタイム中に4つの状態の1つに割り当てられる。
第1状態は、各スレッドがマルチスレッドアプリケーションのパラレル領域の一部を実行するため現在状態にあるとき、各スレッドがユーザコード実行状態310に割り当てられるユーザコード実行状態310である。スケジューラバイパス316が実行されるとき、ワーカスレッドはユーザコード実行状態310に留まる。理想的には、各ワーカスレッドは、アクティブ及び非アクティブパラレルオーバヘッドを再訪化するため、ユーザコード実行状態310に留まるべきである。
第2状態は、各スレッドがそれのローカルキューのジョブ又はタスクを検索するため現在状態にあるとき、ローカルキュールックアップ状態320に割り当てられるローカルキュールックアップ状態320である。各スレッドは、それが自らの現在タスクを終了し、それのタスクのローカルキューの新たなタスクを求めた後、ローカルキュールックアップ状態320に入る。
第3状態は、各スレッドが他のタスクキュー又はグローバルキューのタスクを検索する現在状態にあるとき、各スレッドがグローバルタスク検索状態330に割り当てられるグローバルタスク検索状態330である。各スレッドは、ローカルキュールックアップ状態320中にそれのローカルキューのタスクを検出することができないとき、グローバルタスク検索状態330に入る。
第4状態は、各スレッドが非アクティブ又はアイドル状態の現在状態にあるとき、各スレッドが待機状態340に割り当てられる待機状態340である。各スレッドは、グローバルタスク検索状態330中はタスクを検出することができないため、待機状態340に入る。新たなタスクが利用可能になると、待機状態340の各スレッドは、新たなタスクを検索するため、グローバルタスク検索状態330に戻る。状態遷移パス312,314,316,322,332,334,336,338は、解析モデル300の4つの状態間で各スレッドの状態遷移を示す。
本発明の一実施例では、各スレッドの解析モデル300の4つの状態間の状態遷移の回数は、マルチスレッドアプリケーションのパラレル領域の実行中に測定又は計算される。本発明の一実施例では、マルチスレッドアプリケーション全体が、各スレッドの解析モデル300の4つの状態の間の状態遷移の回数を決定するため実行される。本発明の他の実施例では、マルチスレッドアプリケーションの一部しか、各スレッドの解析モデル300の4つの状態間の状態遷移の回数を決定するのに実行されない。実行されるマルチスレッドアプリケーションの一部は、限定することなく、測定期間、マルチスレッドアプリケーションの合計の実行時間のパーセンテージなどに基づく。
本発明の一実施例では、アクティブ及び非アクティブパラレルオーバヘッドの4つのシナリオの何れがマルチスレッドアプリケーションのパラレル領域の実行中に存在するか特定するため、各スレッドの解析モデル300の4つの状態間の状態遷移の測定された回数が利用される。本発明の他の実施例では、解析モデル300の4つの状態間の状態遷移の頻度が利用される。例えば、本発明の一実施例では、当該頻度は、測定期間の長さと状態遷移の測定された回数とのレシオから決定される。
本発明の一実施例では、アクティブパラレルオーバヘッドの第1シナリオは、各スレッドのタスク又はジョブの実行の頻度が閾値を超えたときに特定又は決定される。本発明の一実施例では、各ワーカスレッドにより実行されるタスクの個数が決定される。各ワーカスレッドにより実行されるタスクの個数は、それのローカルキューから取得されたタスクの個数と、他のタスクキュー又はグローバルキューから取得されたタスクの個数とを加えることによって決定される。各スレッドのタスク又はジョブ実行の頻度は、各ワーカスレッドにより実行されるタスクの個数と測定期間の長さとのレシオによって決定される。
各スレッドについてそれのローカルキューから取得されたタスクの個数は、解析モデル300に示されるように、ユーザコード実行状態310からローカルキュールックアップ状態320への状態遷移パス312の生起回数から決定される。各スレッドについて他のタスクキュー又はグローバルキューから取得されるタスクの個数は、ローカルキュールックアップ状態320からグローバルタスク検索状態330への状態遷移と、グローバルタスク検索状態330を繰り返す生起回数から決定される。
アクティブパラレルオーバヘッドの第1シナリオが特定されると、アクティブパラレルオーバヘッドの理由が、各ワーカスレッドがローカルキューからタスクを取得するのにそれのライフタイムの多すぎる時間を費やすことによるものである、すなわち、マルチスレッドアプリケーションのパラレル領域のタスクの粒度が詳細すぎるというレポートがユーザに送信される。
アクティブパラレルオーバヘッドの第2シナリオは、他のタスクキュー又はグローバルキューから取得されるタスクの個数と、各スレッドについてそれのローカルキューから取得されるタスクの個数とのレシオが閾値を超えると特定又は決定される。本発明の一実施例では、当該閾値は1に設定される。すなわち、各スレッドがそれのローカルキューから取得されるタスク以外のタスクからスチールされるより多くのタスクを実行しているとき、第2シナリオが発生する。
アクティブパラレルオーバヘッドの第2シナリオが特定されると、アクティブパラレルオーバヘッドの理由が、各ワーカスレッドが他のキュー又はグローバルキューのタスクを検索するのに多すぎる時間を費やす、すなわち、マルチスレッドアプリケーションのパラレル領域がリニアスポーニング問題を有するというレポートが、ユーザに送信される。
本発明の一実施例では、グローバルタスク検索状態330からグローバルタスク検索状態330及び待機状態340への状態遷移の頻度がある閾値を超えると、非アクティブパラレルオーバヘッドの第2シナリオが特定又は決定される。これは、グローバルタスク検索状態330を繰り返す状態遷移パス336と、グローバルタスク検索状態330から待機状態340への状態遷移パス332とによって、解析モデル300において示される。
非アクティブパラレルオーバヘッドの第2シナリオが特定されると、非アクティブパラレルオーバヘッドの理由が、パラレル領域のタスクの個数が利用可能な又はフリーのワーカスレッドの個数より少ないため、すなわち、マルチスレッドアプリケーションのパラレル領域の不十分なジョブ又はタスク生成のためであるというレポートが、ユーザに送信される。
本発明の一実施例では、グローバルタスク検索状態330からグローバルタスク検索状態330及び待機状態340までの状態遷移の頻度が当該閾値を超えず、非アクティブパラレルオーバヘッドが閾値を超えると、非アクティブパラレルオーバヘッドの第1シナリオが特定又は決定される。非アクティブパラレルオーバヘッドの第1シナリオが特定されると、アクティブパラレルオーバヘッドの理由が、1以上のワーカスレッドが自らのタスクを終了したが、ワーカスレッドの残りを支援することができない、すなわち、スレッドの過剰な待機時間のためであるというレポートが、ユーザに送信される。
非アクティブパラレルオーバヘッドの第1シナリオが特定されると、非アクティブパラレルオーバヘッドの理由がパラレル化の粒度が粗すぎたというレポートが、ユーザに送信される。これは、作業が多すぎるチャンクに分割され、生成されるチャンクの個数を制限し、その後にパラレル化を制限することを意味する。
本発明の一実施例では、アクティブ及び非アクティブパラレルオーバヘッドの1以上のシナリオが特定されると、それは、生成された具体的なレポートに基づき、マルチスレッドアプリケーションの特定のパラレル領域の訂正を可能にする。これは、マルチスレッドアプリケーションのパラレルな実行の向上を可能にする。本発明の実施例は、ユーザがレポート又は結論に基づきマルチスレッドアプリケーションにおけるエラーを修正するため、解析モデル300の結果を解釈することを可能にする。本発明の一実施例では、特定の問題又はシナリオを決定するためのポインタ又は示唆が、各シナリオのレポートに加えて提供される。
解析モデル300は、タスクでなくワーカスレッドライフサイクル状態に基づく。これは、同様のアプローチを用いてアクティブ及び/又は非アクティブパラレルオーバヘッドの原因を決定するため、タスクベースマルチスレッドフレームワークと非タスクベースマルチスレッドフレームワークとの双方が解析されることを可能にする。本発明の一実施例では、解析モデルは、Intel(登録商標) Parallel Amplifierソフトウェアに一体化できる。
アクティブ及び非アクティブパラレルオーバヘッドの4つのシナリオの説明は、限定的であることは意図されない。当業者は、他のシナリオが本発明の作業に影響を与えることなく特定可能であることを容易に理解するであろう。同様に、解析モデル300の4つの状態は、限定的であることとは意図されない。当業者は、他の状態が本発明の作業に影響を与えることなく追加可能であることを容易に理解するであろう。
図4は、本発明の一実施例によるマルチスレッドアプリケーションのパフォーマンスを解析するためのステップのフローチャート400を示す。ステップ410において、フローは、マルチスレッドコード又はアプリケーションのパラレル領域を特定する。ステップ415において、フロー400は、パラレル領域が検出されたか確認する。検出された場合、フロー400はステップ420に移行し、特定された各パラレル領域についてアクティブ及び非アクティブパラレルオーバヘッドを決定する。検出されなかった場合、フロー400は終了する。
ステップ425において、フロー400は、アクティブ及び非アクティブパラレルオーバヘッドが閾値を超えたか確認する。本発明の一実施例では、単一の閾値がアクティブパラレルオーバヘッドと非アクティブパラレルオーバヘッドとの双方と比較される。本発明の他の実施例では、別の閾値がそれぞれアクティブ及び非アクティブパラレルオーバヘッドと比較される。閾値を超えた場合、フロー400はステップ430に移行し、マルチスレッドコード又はアプリケーションの各パラレル領域についてパラレルオーバヘッドの理由を決定する。閾値を超えない場合、フロー400は終了する。
図5Aは、本発明の一実施例によるマルチスレッドアプリケーションの各パラレル領域についてパラレルオーバヘッドの理由を決定するためのステップのフローチャート500を示す。説明の簡単化のため、図5Aは、図3を参照して説明される。
ステップ510において、フローは、モニタリング期間を設定し、すべての状態遷移パスカウンタをリセットする。本発明の一実施例では、状態遷移パス312,314,316,322,332,334,336,338のそれぞれについてカウンタが維持される。ステップ515において、フロー500は、設定されたモニタリング期間のマルチスレッドアプリケーションの各パラレル領域を実行する。実行中、マルチスレッドアプリケーションの各パラレル領域の各スレッドが解析モデル300の4つの状態310,320,330,340の間で遷移するとき、各状態遷移パスカウンタはインクリメントされる。
ステップ520において、フロー500は、各ワーカスレッドについてタスク又はジョブの実行の頻度を決定する。ステップ525において、フロー500は、各ワークのタスクの実行の頻度が閾値を超えたか判断する。例えば、本発明の一実施例では、マルチスレッドアプリケーションの実行と比較してTBBパラレルオーバヘッドが有意でないものにするため、タスクは、5000以上のCPUチックである必要があるかもしれない。マルチスレッドアプリケーションが2ギガヘルツ(GHz)のクロック速度で実行されるCPU上で実行されると仮定すると、400,000個のタスクが毎秒各スレッドによって実行されるべきである。本発明の一実施例では、この閾値は、毎秒400,000タスクに設定される。
ステップ525において閾値を超える場合、フロー500は、ステップ530に移行し、パラレル領域と共に特定の問題を報告する。本発明の一実施例では、ステップ530は、アクティブパラレルオーバヘッドが、各ワーカスレッドがローカルキューからタスクを取得するのにそれのライフタイムの多すぎる時間を消費するためであることを報告する。ステップ525において閾値を超過しない場合、フロー500はステップ535に移行する。
ステップ535において、フロー500は、他のタスクキュー又はグローバルキューから取得されるタスク、すなわち、スチールされたタスクの個数と、各スレッドについてそれのローカルキューから取得されたタスクの個数とのレシオを決定する。ステップ540において、フロー500は、当該レシオが閾値を超えたか判断する。閾値を超えている場合、フロー500は、ステップ545に移行し、パラレル領域と共に特定の問題を報告する。本発明の一実施例では、ステップ545は、アクティブパラレルオーバヘッドの理由が、各ワーカスレッドが他のタスクキュー又はグローバルキューのタスクを検出するのに多すぎる時間を費やしたことによるものであることを報告する。閾値を超えていない場合、フロー500は、図5Bにおいてステップ5Bに移行する。
図5Bは、本発明の一実施例によるマルチスレッドアプリケーションの各パラレル領域のパラレルオーバヘッドの理由を決定するためのステップのフローチャート550を示す。フロー550は、ステップ5Bからステップ560に移行する。ステップ560において、フロー550は、非アクティブパラレルオーバヘッドが閾値を超えたか判断する。閾値を超えていない場合、フロー550は終了する。閾値を超えた場合、フロー550はステップ565に移行し、グローバルタスク検索状態330からグローバルタスク検索状態330及び待機状態340への状態遷移の頻度を決定する。例えば、本発明の一実施例では、フロー550は、状態遷移パス336,332の状態遷移パスカウンタの合計と、設定されたモニタリング期間の長さとのレシオを決定する。当該レシオから、各スレッドについてグローバルタスク検索状態330からグローバルタスク検索状態330及び待機状態340までの状態遷移の頻度が取得される。
ステップ570において、フロー550は、各ワーカスレッドに対するグローバルタスク検索状態330からグローバルタスク検索状態330及び待機状態340までの状態遷移の頻度が閾値を超えたか判断する。閾値を超えた場合、フロー550はステップ575に移行し、パラレル領域と共に特定の問題を報告し、フロー550は終了する。本発明の一実施例では、ステップ575は、非アクティブパラレルオーバヘッドの理由が、パラレル領域のタスクの個数が利用可能な又はフリーのワーカスレッドの個数より少ないためであることを報告する。
閾値を超えない場合、フロー550はステップ580に移行し、パラレル領域と共に特定の問題を報告し、フロー550は終了する。本発明の一実施例では、ステップ580は、非アクティブパラレルオーバヘッドの理由が、1以上のワーカスレッドが自らのタスクを終了したが、ワーカスレッドの残りを支援することができないためであることを報告する。
図4、5A及び5Bに示されるステップは、限定的であることは意図されない。当業者は、図4、5A及び5Bに示されるステップの他のシーケンスが本発明の動作に影響を与えることなく利用可能であることを容易に理解するであろう。例えば、本発明の一実施例では、図4、5A及び5Bに示されるステップの一部はパラレルに実行される。本発明の一実施例では、ステップ425、525、540、565及び575について要求される閾値は、特定のパラレルスレッド処理ライブラリ又はマルチスレッド処理フレームワークの開発者からの推奨に基づき決定可能である。本発明の他の実施例では、ステップ425、525、540、565、575について要求される閾値は、解析モデル300の4つの状態310、320、330、340のそれぞれを実行するコストに基づき決定される。
図6は、本発明の一実施例によるここに開示される方法を実現するシステムを示す。システム600は、限定することなく、デスクトップコンピュータ、ラップトップコンピュータ、ノートブック、ノートブックコンピュータ、PDA(Personal Digital Assistant)、サーバ、ワークステーション、携帯電話、モバイル計算装置、インターネット装置又は他の何れかのタイプの計算装置を含む。他の実施例では、ここに開示される方法を実現するのに用いられるシステム600は、SOC(System On Chip)システムであってもよい。
プロセッサ610は、システム600の命令を実行する処理コア612を有する。処理コア612は、限定することなく、命令をフェッチするプリフェッチロジック、命令を復号化する復号化ロジック、命令を実行する実行ロジックなどを含む。プロセッサ610は、システム600の命令及び/又はデータをキャッシュするキャッシュメモリ616を有する。本発明の他の実施例では、キャッシュメモリ616は、限定することなく、レベル1、レベル2及びレベル3キャッシュメモリ又はプロセッサ610内のキャッシュメモリの他の何れかの構成を含む。
メモリコントロールハブ(MCH)614は、プロセッサ610が揮発性メモリ632及び/又は不揮発性メモリ634を含むメモリ630にアクセス及び通信することを可能にするファンクションを実行する。揮発性メモリ632は、限定することなく、SDRAM(Synchronous Dynamic Random Access Memory)、DRAM(Dynamic Random Access Memory)、RDRAM(RAMBUS Dynamic Random Access Memory)及び/又は他の何れかのタイプのランダムアクセスメモリ装置を含む。不揮発性メモリ634は、限定することなく、NANDフラッシュメモリ、相変化メモリ(PCM)、ROM(Read Only Memory)、EEPROM(Electrically Erasable Programmable ROM)又は他の何れかのタイプの不揮発性メモリ装置を含む。
メモリ630は、プロセッサにより実行される命令及び情報を格納する。メモリ630はまた、プロセッサ610が命令を実行している間、一時的な変数又は他の中間情報を格納してもよい。チップセット620は、ポイント・ツー・ポイント(PtP)インタフェース617,622を介しプロセッサ610と接続する。チップセット620は、プロセッサ610がシステム600の他のモジュールと接続することを可能にする。本発明の一実施例では、インタフェース617,622は、Intel(登録商標) QuickPath Interconnect(QPI)などのPtP通信プロトコルに従って動作する。
チップセット620は、限定することなく、LCD(Liquid Crystal Display)、CRT(Cathode Ray Tube)ディスプレイ、又は他の何れかの形態のビジュアルディスプレイ装置を含む表示装置640に接続する。本発明の一実施例では、プロセッサ610とチップセット620とはSOCにマージされる。さらに、チップセット620は、各種モジュール674、660、662、664、666を相互接続する1以上のバス650,655に接続する。バス650,655は、バススピード又は通信プロトコルにミスマッチがある場合、バスブリッジ672を介し相互接続されてもよい。チップセット620は、限定することなく、不揮発性メモリ660、記憶装置662、キーボード/マウス664及びネットワークインタフェース666に接続する。本発明の一実施例では、ソリッドステートドライブ102は記憶装置662である。
記憶装置662は、限定することなく、ソリッドステートドライブ、ハードディスクドライブ、USB(Universal Serial Bus)フラッシュメモリドライブ又は他の携帯のコンピュータデータ記憶媒体を含む。ネットワークインタフェース666は、限定することなく、イーサネット(登録商標)インタフェース、USBインタフェース、PCI(Peripheral Compoent Interconnect) Expressインタフェース、無線インタフェース及び/又は他の何れか適切なタイプのインタフェースを含む何れかのタイプの周知なネットワークインタフェース規格を用いて実現される。無線インタフェースは、限定することなく、IEEE802.11規格及びそれの関連ファミリに従って動作する。Home Plug AV(HPAV)、Ultra Wide Band(UWB)、Bluetooth(登録商標)、WiMax又は他の形態の無線通信プロトコルに従って動作する。
図6に示されるモジュールはシステム600内で別々のブロックとして示されるが、これらのブロックの一部によって実行されるファンクションは、単一の半導体内に一体化されてもよいし、又は2以上の別々の集積回路を用いて実現されてもよい。例えば、キャッシュメモリ616はプロセッサ610内で別々のブロックとして示されるが、キャッシュメモリ616はそれぞれプロセッサコア612に搭載可能である。本発明の他の実施例では、システム600は、複数のプロセッサ/処理コアを含むものであってもよい。
ここに開示される方法は、ハードウェア、ソフトウェア、ファームウェア又はこれらの他の何れかの組み合わせにより実現可能である。開示される主題の実施例の具体例が説明されたが、当業者は、開示された主題を実現する他の多数の方法が代替的に利用されてもよいことを容易に理解するであろう。上述した説明では、開示された主題の各種態様が説明された。説明の目的のため、具体的な数字、システム及び構成が、主題の完全な理解を提供するため与えられた。しかしながら、主題が具体的な詳細なしに実現可能であることは、本開示の利益を有する当業者に明らかであろう。他の例では、開示された主題を不明りょうにしないように、周知の特徴、コンポーネント又はモジュールは、省略、簡単化、合成又は分割された。
ここで用いられる“動作可能である”という用語は、装置、システム、プロトコルなどが動作可能であるか、又は装置又はシステムが電力オフ状態にあるとき、それの所望の機能のため動作するよう構成されることを意味する。開示された主題の各種実施例は、ハードウェア、ファームウェア、ソフトウェア又はこれらの組み合わせにより実現されてもよく、マシーンによりアクセスされると、マシーンがタスクを実行し、抽象的なデータタイプ又は低レベルハードウェアコンテクストを規定し、又は結果を生成する命令、ファンクション、プロシージャ、データ構造、ロジック、アプリケーションプログラム、シミュレーションのための設計表現又はフォーマット、エミュレーション及び設計製造など、プログラムコードを参照して又は関連して説明されてもよい。
図示される技術は、格納されているコード及びデータを用いて実現可能であり、汎用コンピュータ又は計算装置などの1以上の計算装置上で実行可能である。このような計算装置は、マシーン可読記憶媒体(例えば、磁気ディスク、光ディスク、RAM、ROM、フラッシュメモリ装置、相変化メモリなど)及びマシーン可読通信媒体(例えば、搬送波、赤外線信号、デジタル信号などの電気、光、音響又は他の形態の伝搬信号など)を用いて、コード及びデータを内部的に及びネットワークを介し他の計算装置と)通信及び格納する。
開示された主題は例示的な実施例を参照して説明されたが、本開示は、限定的に解釈されることを意図するものでない。例示的な実施例の各種改良は、開示された主題が属する当業者に明らかな主題の他の実施例と共に、開示された主題の範囲内にあるとみなされる。

Claims (23)

  1. マルチスレッド処理フレームワーク上で実行されるマルチスレッドアプリケーションのパフォーマンスを解析する方法であって、
    前記マルチスレッドアプリケーションのパラレル領域のパラレルオーバヘッドが閾値を超えているか判断するステップと、
    前記マルチスレッドアプリケーションのパラレル領域のパラレルオーバヘッドが閾値を超えているという判断に応答して、前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップと、
    を有する方法。
  2. 前記パラレルオーバヘッドは、アクティブパラレルオーバヘッドと非アクティブパラレルオーバヘッドとを有し、
    前記マルチスレッドアプリケーションのパラレル領域のパラレルオーバヘッドが閾値を超えているか判断するステップは、前記マルチスレッドアプリケーションのパラレル領域の前記アクティブパラレルオーバヘッド及び/又は前記非アクティブパラレルオーバヘッドが前記閾値を超えているか判断することを含む、請求項1記載の方法。
  3. 前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップは、設定されたモニタリング期間に基づき前記パラレル領域を実行することを含む、請求項2記載の方法。
  4. 前記パラレル領域の実行は、1以上のワーカスレッドを利用し、
    前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップはさらに、
    各スレッドが前記パラレル領域の1以上のタスクの1つを実行することに応答して、前記1以上のワーカスレッドのそれぞれをユーザコード実行状態に割り当てるステップと、
    各スレッドがローカルキューにおいてタスクを検索することに応答して、前記1以上のワーカスレッドのそれぞれをローカルキュールックアップ状態に割り当てるステップであって、前記タスクは前記パラレル領域の1以上のタスクの一部である、前記ローカルキュールックアップ状態に割り当てるステップと、
    各スレッドが他のキュー又はグローバルキューにおいて他のタスクを検索することに応答して、前記1以上のワーカスレッドのそれぞれをグローバルタスク検索状態に割り当てるステップであって、前記他のタスクは前記パラレル領域の1以上のタスクの一部である、前記グローバルタスク検索状態に割り当てるステップと、
    各スレッドがアイドル状態にあることに応答して、前記1以上のワーカスレッドのそれぞれを待機状態に割り当てるステップと、
    を有する、請求項3記載の方法。
  5. 前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップはさらに、
    前記1以上のワーカスレッドのそれぞれについて、前記ローカルキュー、前記他のキュー及び前記グローバルキューにおける前記タスクの実行の頻度が他の閾値を超えているか判断するステップと、
    前記タスクの実行の頻度が前記他の閾値を超えたという判断に応答して、前記パラレル領域のパラレルオーバヘッドの1以上の原因の1つとして、各ワーカスレッドが前記ローカルキューから前記タスクを取得するのにそれのライフタイムの多すぎる時間を費やしていることを報告するステップと、
    を有する、請求項4記載の方法。
  6. 前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップはさらに、
    前記ローカルキューにおける前記タスクの実行と前記他のキュー及び前記グローバルキューにおける前記タスクの実行とのレシオが他の閾値を超えているか判断するステップと、
    前記ローカルキューにおける前記タスクの実行と前記他のキュー及び前記グローバルキューにおける前記タスクの実行とのレシオが他の閾値を超えているという判断に応答して、前記パラレル領域のパラレルオーバヘッドの1以上の原因の1つとして、各ワーカスレッドが前記他のローカルキューにおける前記他のタスクを検索するか、又は前記グローバルキューにおける前記他のタスクを検索するのに多すぎる時間を費やしていることを報告するステップと、
    を有する、請求項4記載の方法。
  7. 前記パラレル領域のパラレルオーバヘッドの1以上の原因を決定するステップはさらに、
    前記1以上のワーカスレッドのそれぞれについて、前記グローバルタスク検索状態から前記グローバルタスク検索状態及び前記待機状態への状態遷移の頻度が他の閾値を超えているか判断するステップと、
    前記1以上のワーカスレッドのそれぞれについて、前記グローバルタスク検索状態から前記グローバルタスク検索状態及び前記待機状態への状態遷移の頻度が他の閾値を超えているという判断と、前記マルチスレッドアプリケーションのパラレル領域の前記非アクティブパラレルオーバヘッドが前記閾値を超えているという判断とに応答して、前記パラレル領域のパラレルオーバヘッドの1以上の原因の1つとして、前記1以上のワーカスレッドの少なくとも1つが自らのタスクを終了したが、前記1以上のワーカスレッドの残りを支援することができないことを報告するステップと、
    を有する、請求項4記載の方法。
  8. 前記マルチスレッド処理フレームワークは、Open Multi−Processing(OpenMP)、Intel(登録商標) Threading Building Blocks(TBB)、Intel(登録商標) Cilk++、Intel(登録商標) C++ for Throughput Computing(Ct)、及びMicrosoft(登録商標) Parallel Patterns Library(PPL)の1つに少なくとも部分的に準拠する、請求項1記載の方法。
  9. パラレルスレッド処理ライブラリと、
    前記パラレルスレッド処理ライブラリを用いてマルチスレッドアプリケーションを実行するオペレーティングシステムと、
    前記マルチスレッドアプリケーションはサブ最適パラレルアルゴリズムを有すると判断し、スレッドライフサイクル状態マシーンを用いて前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題を決定するロジックと、
    を有する装置。
  10. 前記マルチスレッドアプリケーションが前記サブ最適パラレルアルゴリズムを有することを判断するロジックは、前記サブ最適アルゴリズムのパラレルオーバヘッドが前記マルチスレッドアプリケーションのパフォーマンスゲインと同等又はそれ以上であると判断する、請求項9記載の装置。
  11. 前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題は、サブ最適な粒度、不十分なパラレルスラックネス及び過剰なタスクのスチールの1以上を有する、請求項9記載の装置。
  12. 前記スレッドライフサイクル状態マシーンは、
    第1の複数のスレッドを有する実行状態であって、前記第1の複数のスレッドのそれぞれは、前記サブ最適パラレルアルゴリズムの複数のジョブの1つを実行する状態にある、前記実行状態と、
    第2の複数のスレッドを有するローカルキュールックアップ状態であって、前記第2の複数のスレッドのそれぞれは、ローカルキューにおいて前記サブ最適パラレルアルゴリズムの複数のジョブの一部であるジョブを検索する状態にある、前記ローカルキュールックアップ状態と、
    第3の複数のスレッドを有するグローバルジョブ検索状態であって、前記第3の複数のスレッドのそれぞれは、他のキュー又はグローバルキューにおいて前記サブ最適パラレルアルゴリズムの複数のジョブの一部である他のジョブを検索する状態にある、前記グローバルジョブ検索状態と、
    第4の複数のスレッドを有する待機状態であって、前記第4の複数のスレッドのそれぞれは、アイドル状態にある、前記待機状態と、
    を有する、請求項9記載の装置。
  13. 前記スレッドライフサイクル状態マシーンを用いて前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題を決定するロジックは、
    決定された期間に前記サブ最適パラレルアルゴリズムを実行し、
    前記ローカルキュールックアップ状態への前記実行状態の遷移の回数と、前記グローバルジョブ検索状態に前記ローカルキュールックアップ状態が遷移し、前記グローバルジョブ検索状態を繰り返した回数との和を決定し、
    前記和と前記決定された期間の長さとのレシオが第1閾値を超えていると判断し、
    前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第1パフォーマンス問題として、前記サブ最適パラレルアルゴリズムの粒度が詳細すぎると特定する、請求項9記載の装置。
  14. 前記スレッドライフサイクル状態マシーンを用いて前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題を決定するロジックはさらに、
    前記グローバルジョブ検索状態に前記ローカルキュールックアップ状態が遷移し、前記グローバルジョブ検索状態を繰り返す回数と、前記ローカルキュールックアップ状態への前記実行状態の遷移の回数とのレシオが第2閾値を超えていると判断し、
    前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第2パフォーマンス問題として、前記サブ最適パラレルアルゴリズムのリニアスポーニングを特定する、請求項13記載の装置。
  15. 前記スレッドライフサイクル状態マシーンを用いて前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題を決定するロジックはさらに、
    前記グローバルジョブ検索状態及び前記待機状態への前記グローバルジョブ検索状態の遷移の回数が第3閾値を超えているか判断し、
    前記グローバルジョブ検索状態及び前記待機状態への前記グローバルジョブ検索状態の遷移の回数が第3閾値を超えているという判断に応答して、前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第3パフォーマンス問題として、前記サブ最適パラレルアルゴリズムの過剰な待機を特定し、
    前記グローバルジョブ検索状態及び前記待機状態への前記グローバルジョブ検索状態の遷移の回数が第3閾値を超えているという判断と、前記サブ最適パラレルアルゴリズムの非アクティブパラレルオーバヘッドが第4閾値を超えているという判断とに応答して、前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第4パフォーマンス問題として、前記サブ最適パラレルアルゴリズムの不十分なジョブ生成を特定する、請求項14記載の装置。
  16. 前記パラレルスレッド処理ライブラリは、Open Multi−Processing(OpenMP)、Intel(登録商標) Threading Building Blocks(TBB)、Intel(登録商標) Cilk++、Intel(登録商標) C++ for Throughput Computing(Ct)、及びMicrosoft(登録商標) Parallel Patterns Library(PPL)の1つに少なくとも部分的に準拠する、請求項9記載の方法。
  17. 前記ロジックは、前記パラレルスレッド処理ライブラリの一部である、請求項9記載の装置。
  18. 実行されるとプロセッサに、
    各スレッドの現在状態に基づき、複数のスレッドのそれぞれを複数の状態の1つに割り当てるステップと、
    各スレッドの前記複数の状態間の遷移の回数に少なくとも部分的に基づき、マルチスレッドアプリケーションのパラレル領域による1以上の問題を決定するステップと、
    の方法を実行させる命令を格納したマシーン可読記憶媒体。
  19. 前記複数の状態は、
    各スレッドが前記マルチスレッドアプリケーションのパラレル領域の一部を実行する前記現在状態にあることに応答して、各スレッドが割り当てられる実行状態と、
    各スレッドがローカルキューにおいて前記マルチスレッドアプリケーションのパラレル領域の複数のジョブの一部であるジョブを検索する前記現在状態にあることに応答して、各スレッドが割り当てられるローカルキュールックアップ状態と、
    各スレッドが他のキュー又はグローバルキューにおいて前記マルチスレッドアプリケーションの前記複数のジョブの一部である他のジョブを検索する前記現在状態にあることに応答して、各スレッドが割り当てられるグローバルジョブ検索状態と、
    各スレッドが非アクティブの前記現在状態にあることに応答して、各スレッドが割り当てられる待機状態と、
    を有する、請求項18記載のマシーン可読記憶媒体。
  20. 前記各スレッドの前記複数の状態間の遷移の回数に少なくとも部分的に基づき、マルチスレッドアプリケーションのパラレル領域による1以上の問題を決定するステップは、
    決定された期間に前記マルチスレッドアプリケーションのパラレル領域を実行するステップと、
    前記ローカルキュールックアップ状態への前記実行状態の遷移の回数と、前記グローバルジョブ検索状態へ前記ローカルキュールックアップ状態が遷移し、前記グローバルジョブ検索状態を繰り返す回数との和を決定するステップと、
    前記和と前記決定された期間の長さとのレシオが第1閾値を超えていると判断するステップと、
    前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第1パフォーマンス問題として、前記サブ最適パラレルアルゴリズムの粒度が詳細すぎると特定するステップと、
    を有する、請求項18記載のマシーン可読記憶媒体。
  21. 前記各スレッドの前記複数の状態間の遷移の回数に少なくとも部分的に基づき、マルチスレッドアプリケーションのパラレル領域による1以上の問題を決定するステップは、
    前記グローバルジョブ検索状態に前記ローカルキュールックアップ状態が遷移し、前記グローバルジョブ検索状態を繰り返す回数と、前記ローカルキュールックアップ状態への前記実行状態の遷移の回数とのレシオが第2閾値を超えていると判断するステップと、
    前記サブ最適パラレルアルゴリズムの1以上のパフォーマンス問題の第2パフォーマンス問題として、前記サブ最適パラレルアルゴリズムのリニアスポーニングを特定するステップと、
    を有する、請求項20記載のマシーン可読記憶媒体。
  22. 前記各スレッドの前記複数の状態間の遷移の回数に少なくとも部分的に基づき、マルチスレッドアプリケーションのパラレル領域による1以上の問題を決定するステップは、
    前記グローバルジョブ検索状態及び前記待機状態への前記グローバルジョブ検索状態の遷移の回数が第3閾値を超えているか判断するステップと、
    前記グローバルジョブ検索状態及び前記待機状態への前記グローバルジョブ検索状態の遷移の回数が第3閾値を超えているという判断に応答して、前記マルチスレッドアプリケーションのパラレル領域の1以上のパフォーマンス問題の第3パフォーマンス問題として、前記マルチスレッドアプリケーションのパラレル領域の過剰な待機を特定するステップと、
    を有する、請求項21記載のマシーン可読記憶媒体。
  23. 前記各スレッドの前記複数の状態間の遷移の回数に少なくとも部分的に基づき、マルチスレッドアプリケーションのパラレル領域による1以上の問題を決定するステップは、
    前記1以上のワーカスレッドのそれぞれについて前記グローバルタスク検索状態及び前記待機状態への前記グローバルタスク検索状態の遷移の回数が他の閾値を超えているか判断するステップと、
    前記グローバルタスク検索状態及び前記待機状態への前記グローバルタスク検索状態の遷移の回数が前記第3閾値を超えているという判断に応答して、前記マルチスレッドアプリケーションのパラレル領域の1以上のパフォーマンス問題の第3パフォーマンス問題として、前記マルチスレッドアプリケーションのパラレル領域の過剰な待機を特定するステップと、
    前記グローバルタスク検索状態及び前記待機状態への前記グローバルタスク検索状態の遷移の回数が前記第3閾値を超えていないという判断と、前記マルチスレッドアプリケーションのパラレル領域の非アクティブパラレルオーバヘッドが第5閾値を超えているという判断とに応答して、前記マルチスレッドアプリケーションのパラレル領域の1以上のパフォーマンス問題の第4パフォーマンス問題として、前記マルチスレッドアプリケーションのパラレル領域の不十分なジョブ生成を特定するステップと、
    を有する、請求項22記載のマシーン可読記憶媒体。
JP2013512102A 2010-05-25 2011-05-20 マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム Expired - Fee Related JP5745038B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/787,240 2010-05-25
US12/787,240 US9183109B2 (en) 2010-05-25 2010-05-25 Method and system for analyzing the performance of multi-threaded applications
PCT/US2011/037403 WO2011149784A2 (en) 2010-05-25 2011-05-20 Method and system for analyzing the performance of multi-threaded applications

Publications (3)

Publication Number Publication Date
JP2013526754A true JP2013526754A (ja) 2013-06-24
JP2013526754A5 JP2013526754A5 (ja) 2013-08-08
JP5745038B2 JP5745038B2 (ja) 2015-07-08

Family

ID=45004683

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013512102A Expired - Fee Related JP5745038B2 (ja) 2010-05-25 2011-05-20 マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム

Country Status (7)

Country Link
US (1) US9183109B2 (ja)
EP (1) EP2577457A4 (ja)
JP (1) JP5745038B2 (ja)
KR (1) KR101475746B1 (ja)
CN (1) CN102918501B (ja)
AU (1) AU2011258570B2 (ja)
WO (1) WO2011149784A2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9183109B2 (en) 2010-05-25 2015-11-10 Intel Corporation Method and system for analyzing the performance of multi-threaded applications
US9135586B2 (en) * 2010-10-28 2015-09-15 Sap Se System for dynamic parallel looping of repetitive tasks during execution of process-flows in process runtime
KR101867960B1 (ko) * 2012-01-05 2018-06-18 삼성전자주식회사 매니 코어 시스템을 위한 운영체제 동적 재구성 장치 및 방법
WO2014014944A2 (en) * 2012-07-16 2014-01-23 Sony Corporation Managing multi-threaded operations in a multimedia authoring environment
US9317415B2 (en) 2013-06-03 2016-04-19 Google Inc. Application analytics reporting
CN103457997A (zh) * 2013-07-01 2013-12-18 曙光信息产业(北京)有限公司 数据传输方法以及数据传输系统
US9652027B2 (en) * 2015-04-01 2017-05-16 Microsoft Technology Licensing, Llc Thread scheduling based on performance state and idle state of processing units
CN106649067B (zh) * 2016-12-28 2019-07-02 深圳先进技术研究院 一种性能和能耗预测方法及装置
US20180232304A1 (en) * 2017-02-16 2018-08-16 Futurewei Technologies, Inc. System and method to reduce overhead of reference counting
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
JP7091203B2 (ja) * 2018-09-19 2022-06-27 キオクシア株式会社 メモリシステムおよび制御方法
CN111176806B (zh) * 2019-12-05 2024-02-23 中国银联股份有限公司 一种业务处理方法、装置及计算机可读存储介质
US11698816B2 (en) * 2020-08-31 2023-07-11 Hewlett Packard Enterprise Development Lp Lock-free work-stealing thread scheduler
CN113286174B (zh) * 2021-05-21 2022-11-08 浙江商汤科技开发有限公司 视频抽帧方法、装置、电子设备、计算机可读存储介质
CN113360266B (zh) * 2021-06-23 2022-09-13 北京百度网讯科技有限公司 任务处理方法和装置
CN115904644A (zh) * 2021-09-30 2023-04-04 伊姆西Ip控股有限责任公司 任务调度方法、电子设备和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0540742A (ja) * 1991-08-07 1993-02-19 Hitachi Ltd 並列処理方法
JPH0588948A (ja) * 1991-04-15 1993-04-09 Internatl Business Mach Corp <Ibm> サンプリング性能分析方法及び装置
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2010009395A (ja) * 2008-06-27 2010-01-14 Toshiba Corp 情報処理装置、粒度調整方法およびプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5177688A (en) * 1989-12-01 1993-01-05 Texas Instruments Incorporated Assembly line balancer
US5692174A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Query parallelism in a shared data DBMS system
US5777882A (en) * 1996-09-26 1998-07-07 Xerox Corporation Control system for mailboxing arrangement
US20020059544A1 (en) 1999-02-04 2002-05-16 Boucher Michael L. Methods and systems for determining and displaying activities of concurrent processes
US6658449B1 (en) * 2000-02-17 2003-12-02 International Business Machines Corporation Apparatus and method for periodic load balancing in a multiple run queue system
JP2004054680A (ja) * 2002-07-22 2004-02-19 Fujitsu Ltd 並列効率計算方法
US7370326B2 (en) * 2004-04-02 2008-05-06 Emulex Design & Manufacturing Corporation Prerequisite-based scheduler
US7818723B2 (en) 2004-09-07 2010-10-19 Sap Ag Antipattern detection processing for a multithreaded application
US7703094B2 (en) 2004-12-30 2010-04-20 Intel Corporation Adaptive and dynamic filtering of threaded programs
US7945911B1 (en) * 2005-06-03 2011-05-17 Oracle America, Inc. Barrier synchronization method and apparatus for work-stealing threads
US7558271B2 (en) * 2005-10-21 2009-07-07 International Business Machines Corporation Method and apparatus for adaptive bandwidth control with defined priorities for different networks
US7739662B2 (en) 2005-12-30 2010-06-15 Intel Corporation Methods and apparatus to analyze processor systems
US8161234B2 (en) * 2008-12-30 2012-04-17 Intel Corporation Dynamically switching command types to a mass storage drive
US8875143B2 (en) * 2009-12-31 2014-10-28 Bmc Software, Inc. Utility-optimized scheduling of time-sensitive tasks in a resource-constrained environment
US9183109B2 (en) 2010-05-25 2015-11-10 Intel Corporation Method and system for analyzing the performance of multi-threaded applications

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0588948A (ja) * 1991-04-15 1993-04-09 Internatl Business Mach Corp <Ibm> サンプリング性能分析方法及び装置
JPH0540742A (ja) * 1991-08-07 1993-02-19 Hitachi Ltd 並列処理方法
JP2009080583A (ja) * 2007-09-25 2009-04-16 Toshiba Corp 情報処理装置、並列処理最適化方法およびプログラム
JP2010009395A (ja) * 2008-06-27 2010-01-14 Toshiba Corp 情報処理装置、粒度調整方法およびプログラム

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
CSNB200000266001; クライマン スティーブ Steve Kleiman/岩本 信一: 実践マルチスレッドプログラミング 第1版, 19980331, pp.305-309, 株式会社アスキー *
CSND200000266001; 田浦 健次朗: '細粒度マルチスレッディングのための言語処理系技術(1)' コンピュータソフトウェア 第16巻,第2号, 19990315, pp.1-18, 日本ソフトウェア科学会 *
CSND201000241026; エクセルソフト(株): 'マルチコアプロセッサー向けのソフトウェア開発' SoftwareDesign 2010年5月号,発刊235号, 20100420, pp.200-206, (株)技術評論社 *
JPN6013064897; エクセルソフト(株): 'マルチコアプロセッサー向けのソフトウェア開発' SoftwareDesign 2010年5月号,発刊235号, 20100420, pp.200-206, (株)技術評論社 *
JPN6013064898; クライマン スティーブ Steve Kleiman/岩本 信一: 実践マルチスレッドプログラミング 第1版, 19980331, pp.305-309, 株式会社アスキー *
JPN6013064899; 田浦 健次朗: '細粒度マルチスレッディングのための言語処理系技術(1)' コンピュータソフトウェア 第16巻,第2号, 19990315, pp.1-18, 日本ソフトウェア科学会 *

Also Published As

Publication number Publication date
KR101475746B1 (ko) 2014-12-30
KR20130018901A (ko) 2013-02-25
US9183109B2 (en) 2015-11-10
CN102918501A (zh) 2013-02-06
AU2011258570A1 (en) 2012-12-06
US20110296420A1 (en) 2011-12-01
JP5745038B2 (ja) 2015-07-08
EP2577457A2 (en) 2013-04-10
CN102918501B (zh) 2016-05-11
WO2011149784A3 (en) 2012-04-19
EP2577457A4 (en) 2016-01-06
AU2011258570B2 (en) 2014-06-12
WO2011149784A2 (en) 2011-12-01

Similar Documents

Publication Publication Date Title
JP5745038B2 (ja) マルチスレッドアプリケーションのパフォーマンスを解析する方法及びシステム
US10642944B2 (en) System and method for energy usage accounting in software applications
US10551896B2 (en) Method and apparatus for dynamic clock and voltage scaling in a computer processor based on program phase
TWI550518B (zh) 用於包括執行緒合併之能源效率及能源節約的方法、裝置及系統
TWI575370B (zh) 在多核心處理器中執行電源管理
US8190863B2 (en) Apparatus and method for heterogeneous chip multiprocessors via resource allocation and restriction
US8489904B2 (en) Allocating computing system power levels responsive to service level agreements
US20180101461A1 (en) Tracking core-level instruction set capabilities in a chip multiprocessor
Gholkar et al. Uncore power scavenger: A runtime for uncore power conservation on hpc systems
US9760411B2 (en) Switching a locking mode of an object in a multi-thread program
US20220405186A1 (en) Mitigating slow instances in large-scale streaming pipelines
KR20120066189A (ko) 매니코어 시스템에서 응용 프로그램의 상태를 동적으로 재구성하는 장치 및 방법
Iordan et al. Tuning the victim selection policy of Intel TBB
Colmant et al. Improving the energy efficiency of software systems for multi-core architectures
US20220326999A1 (en) Dynamic resource allocation based on quality-of-service prediction
Iordan et al. Victim selection policies for Intel TBB: overheads and energy footprint
Iordan et al. Paper C. 2 Victim Selection Policies for Intel TBB: Overheads and Energy Footprint
Alishzadeh et al. Energy management of fault-tolerant real-time embedded systems through switching-activity-based techniques
Zhu et al. A Graph based approach for Co-scheduling jobs on Multi-core computers
Iordan et al. Paper C. 3 Tuning the Victim Selection Policy of Intel TBB
Werling Saving Power Without Sacrificing Performance on Asymmetric Multicore Processors
Dai et al. A light lock management mechanism for optimizing real-time and non-real-Time performance in embedded linux
Dey ReSense: A Unified Framework for Improving Performance and Reliability in Multicore Architectures
TRENDS Is Process Scheduling a Dead Subject?
van der Put Time-predictability of a computer system

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130624

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20131216

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140114

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140414

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140421

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140514

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20141111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150212

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150331

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150430

R150 Certificate of patent or registration of utility model

Ref document number: 5745038

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees