JP2013140593A5 - - Google Patents

Download PDF

Info

Publication number
JP2013140593A5
JP2013140593A5 JP2013000082A JP2013000082A JP2013140593A5 JP 2013140593 A5 JP2013140593 A5 JP 2013140593A5 JP 2013000082 A JP2013000082 A JP 2013000082A JP 2013000082 A JP2013000082 A JP 2013000082A JP 2013140593 A5 JP2013140593 A5 JP 2013140593A5
Authority
JP
Japan
Prior art keywords
task
subtasks
manager
threads
queue
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
JP2013000082A
Other languages
English (en)
Other versions
JP5718378B2 (ja
JP2013140593A (ja
Filing date
Publication date
Priority claimed from US13/344,474 external-priority patent/US8621479B2/en
Application filed filed Critical
Publication of JP2013140593A publication Critical patent/JP2013140593A/ja
Publication of JP2013140593A5 publication Critical patent/JP2013140593A5/ja
Application granted granted Critical
Publication of JP5718378B2 publication Critical patent/JP5718378B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Description

本明細書では、ベストモードを含む様々な実施形態を開示する実施例を使用しているため、当業者は任意の装置やシステムの作成ならびに使用、及び組込まれた任意の方法の実行を含め、実施形態を実行することができる。特許性を有する範囲は、特許請求の範囲によって規定され、当業者であれば想起できる他の実施例を含みうる。このような他の実施例は、それらが特許請求の範囲の文字言語から逸脱しない構造要素を有する場合、あるいは、それらが特許請求の範囲の文字言語との有意でない相違を有する等価な構造要素を含んでいる場合は、特許請求の範囲の範囲内にあることを意図している。
また、本願は以下に記載する態様を含む。
(態様1)
少なくとも一つの処理エンジン(24)によってタスクを実行するために使用するコンピュータによって実行される方法であって、
少なくとも一つの処理エンジン(24)を有する少なくとも一つのプロセッサ(14)に関連するタスク配分メトリックを決定するステップであって、前記少なくとも一つの処理エンジン(24)が一又は複数のスレッド(31)を有する、決定するステップと、
前記タスクを前記一又は複数のスレッド(31)のうちの一つに割り当てるステップと、
前記タスク配分メトリックが、前記少なくとも一つのプロセッサ(14)に関連する負荷バランスが第1閾値を下回ることを示す場合、前記少なくとも一つの処理エンジン(24)によって、前記タスクが前記少なくとも一つの処理エンジン(24)に関連する前記一又は複数のスレッド(31)のうちの任意の一つに以前割り当てられた再入可能タスクであるか否かを決定するステップと、
前記タスクが再入可能タスクである場合、前記少なくとも一つの処理エンジン(24)によって、停止基準が満たされたか否かを決定するステップと、
前記停止基準が満たされておらず、前記タスクが再入可能タスクである場合に、前記少なくとも一つの処理エンジン(24)に関連するタスクのキュー(26)に前記タスクを再入させるステップと、
前記タスク配分メトリックが、前記少なくとも一つのプロセッサ(14)に関連するコア(29)アフィニティが第2閾値を下回ることを示す場合、前記少なくとも一つの処理エンジン(24)によって、前記タスクがメインタスクであるか否かを決定するステップと、
前記タスクがメインタスクでない場合、前記少なくとも一つの処理エンジン(24)によって停止基準が満たされたか否かを決定するステップと、
前記停止基準が満たされており、前記タスクがメインタスクでない場合、前記タスクに関連する親タスクを前記一又は複数のスレッド(31)の前記一つにプルするステップ
を含む方法。
(態様2)
前記タスクが再入可能タスクである場合に前記停止基準が満たされたか否かを決定するステップが、前記タスクに従属するマルチプルサブタスクのうちの少なくとも一つが完了したか否かを決定し、前記タスクをタスクのキュー(26)に再入させた後で、前記一又は複数のスレッド(31)のうちの前記一つを解放することを含む、態様1に記載の方法。
(態様3)
前記タスクが再入可能タスクでない場合に、前記タスクは複数のサブタスクに分解可能であるか否かを決定し、前記タスクが分解可能である場合に、前記少なくとも一つの処理エンジン(24)によって前記タスクの複数のサブタスクを前記キュー(26)に挿入することをさらに含む、態様1又は2に記載の方法。
(態様4)
前記停止基準が満たされた場合に、前記少なくとも一つの処理エンジン(24)によって少なくとも一つの蓄積タスクを実行し、前記親タスクを前記一又は複数のスレッド(31)のうちの前記一つにプルした後で、前記親タスクに関連する少なくとも一つの蓄積タスクを実行することをさらに含む、態様1乃至3のいずれか1項に記載の方法。
(態様5)
前記タスクがメインタスクでない場合に前記停止基準が満たされたか否かを決定するステップが、前記タスクに従属するマルチプルサブタスクのそれぞれが完了したか否かを決定することを含み、前記停止基準が満たされておらず、前記タスクがメインタスクでない場合、前記タスクをタスクのキュー(26)に再入させた後で、前記タスクの状態を完了に設定し、前記一又は複数のスレッド(31)のうちの前記一つを解放することをさらに含む、態様1乃至4のいずれか1項に記載の方法。
(態様6)
前記タスクがメインタスクか否かを決定する前に、前記タスクが複数のサブタスクに分割可能であるか否かを決定し、前記タスクが分割可能である場合、前記タスクの前記複数のサブタスクをタスクのキュー(26)に挿入することをさらに含む、態様5に記載の方法。
(態様7)
タスクの実行において使用するコンピューティング装置であって、前記コンピューティング装置は、
タスクのキュー(26)を記憶するメモリ(12)装置と、
前記メモリ(12)装置に結合し、一又は複数のスレッドを有する少なくとも一つの処理エンジン(24)を含むプロセッサ(14)であって、前記少なくとも一つの処理エンジン(24)はタスクマネージャ(27)とキューマネージャ(25)を含み、前記キューマネージャ(25)はタスクの前記キュー(26)を管理するように構成されており、前記タスクマネージャ(27)は前記プロセッサ(14)に関連するタスク配分メトリックを決定し、前記タスクを前記一又は複数のスレッド(31)のうちの前記一つに割り当てるように構成されている前記プロセッサ(14)を含み、
前記タスクマネージャ(27)は、前記タスク配分メトリックが、前記プロセッサ(14)に関連する負荷バランスが第1閾値を下回ることを示す場合に、前記タスクが、前記一又は複数のスレッド(31)のうちの任意の一つに以前割り当てられた再入可能タスクであるか否かを決定し、前記タスクが再入可能タスクである場合、停止基準が満たされたか否かを決定し、停止基準が満たされておらず、前記タスクが再入可能タスクである場合に、前記タスクをタスクのキュー(26)に前記キューマネージャ(25)を介して再入させるように構成されており、
前記タスクマネージャ(27)は、タスク配分メトリックが、前記プロセッサ(14)に関連するコア(29)アフィニティが第2閾値を下回ることを示す場合に、前記タスクがメインタスクであるか否かを決定し、前記タスクがメインタスクでない場合に、停止基準が満たされたか否かを決定し、停止基準が満たされており、前記タスクがメインタスクではない場合に、前記タスクに関連する親タスクを一又は複数のスレッド(31)のうちの前記一つにプルするように構成されている、コンピューティング装置。
(態様8)
前記タスクマネージャ(27)がさらに、前記タスクが再入可能タスクでない場合に、前記タスクが複数のサブタスクに分解可能であるか否かを決定するようにさらに構成されており、前記タスクマネージャ(27)がさらに、前記タスクが分解可能である場合に、前記キューマネージャ(25)を介して、前記タスクの前記複数のサブタスクを前記キュー(26)に挿入するように構成されている、態様7に記載のコンピューティング装置。
(態様9)
前記タスクマネージャ(27)がさらに、前記複数のサブタスクのうちの一つを前記一又は複数のスレッド(31)のうちの2番目のスレッドに割り当てて、前記複数のサブタスクのうちの前記一つが再入可能タスクであるか否かを決定するように構成されており、
前記タスクマネージャ(27)がさらに、前記停止基準が満たされた時に、少なくとも一つの蓄積タスクを実行するように構成されている、態様7又は8に記載のコンピューティング装置。
(態様10)
前記タスクマネージャ(27)がさらに、前記タスクがメインタスクであるか否かを決定する前に、前記タスクが複数のサブタスクに分解可能であるか否かを決定するように構成されており、前記タスクマネージャ(27)がさらに、前記タスクが分解可能である場合に、前記キューマネージャ(25)を介して前記タスクの前記複数のサブタスクを前記キュー(26)に挿入するように構成されており、前記タスクマネージャ(27)がさらに、前記親タスクを前記一又は複数のスレッド(31)のうちの前記一つにプルした後で、前記親タスクに関連する少なくとも一つの蓄積タスクを実行するように構成されている、態様7に記載のコンピューティング装置。

Claims (9)

  1. 少なくとも一つの処理エンジン(24)によってタスクを実行するために使用するコンピュータによって実行される方法であって、
    少なくとも一つの処理エンジン(24)を有する少なくとも一つプロセッサ(14)に関連するタスク配分メトリックを決定するステップであって、前記少なくとも一つの処理エンジン(24)が各々が一又は複数のスレッド(31)を有する複数の処理コアを有し、該タスクが複数のサブタスクを含む、決定するステップと、
    前記タスクを前記一又は複数のスレッド(31)のうちの一つに割り当て、
    タスクが(a)負荷バランス方法か(b)コアアフィニティ方法のいずれかを用いて実行されるべきであるかを表示するタスク配分メトリックに従ってタスク割当を実行するステップと、
    前記タスク配分メトリックが、前記少なくとも一つのプロセッサ(14)に関連する負荷バランスが第1閾値を下回ることを示す場合、負荷バランス方法を実行するステップであって、該負荷バランス方法は、
    前記少なくとも一つの処理エンジン(24)によって、前記タスクが再入可能タスクであるか否かを決定するステップであって、前記タスクが前記少なくとも一つの処理エンジン(24)に関連する前記一又は複数のスレッド(31)のうちの任意の一つに以前割り当てられた場合に前記タスクが再投入可能タスクである、ステップを含むステップと、
    前記タスクが再入可能タスクである場合、前記少なくとも一つの処理エンジン(24)によって、停止基準が満たされたか否かを決定するステップであって、該停止基準は該タスクに従属するいくつかまたはすべてのサブタスクが完了したかどうかを含むステップと、を含み、
    前記停止基準が満たされておらず、前記タスクが再入可能タスクである場合に、前記少なくとも一つの処理エンジン(24)に関連するタスクのキュー(26)に前記タスクを再入させた後に前記一または複数のスレッドのうつの一つを解放するステップと、
    前記タスク配分メトリックが、前記少なくとも一つのプロセッサ(14)に関連するコア(29)アフィニティが第2閾値を下回ることを示す場合、コアアフィニティ方法を実行するステップであって、該コアアフィニティ方法は、
    前記少なくとも一つの処理エンジン(24)によって、前記タスクがメインタスクであるか否かを決定するステップであって、メインタスクとは少なくとも一つのサブタスクを有するが他のタスクのサブタスクでないステップと、
    前記タスクがメインタスクでない場合、前記少なくとも一つの処理エンジン(24)によって前記停止基準が満たされたか否かを決定するステップと、
    前記停止基準が満たされており、前記タスクがメインタスクでない場合、前記タスク親タスクを前記一又は複数のスレッド(31)の前記同じ一つに割り当てるステップとを含む、
    を含む方法。
  2. 前記タスクが再入可能タスクでない場合に、前記タスクは複数のサブタスクに分解可能であるか否かを決定し、前記タスクが分解可能である場合に、前記少なくとも一つの処理エンジン(24)によって前記タスクの複数のサブタスクを前記キュー(26)に挿入することをさらに含む、請求項に記載の方法。
  3. 前記停止基準が満たされた場合に、前記少なくとも一つの処理エンジン(24)によって少なくとも一つの蓄積タスクを実行し、前記親タスクを前記一又は複数のスレッド(31)のうちの前記一つに割り当てられた後で、前記親タスクに関連する少なくとも一つの蓄積タスクを実行することをさらに含む、請求項1または2に記載の方法。
  4. 前記タスクがメインタスクでない場合に前記停止基準が満たされたか否かを決定するステップが、前記タスクに従属するマルチプルサブタスクのそれぞれが完了したか否かを決定することを含み、前記停止基準が満たされておらず、前記タスクがメインタスクでない場合、前記タスクをタスクのキュー(26)に再入させた後で、前記タスクの状態を完了に設定し、前記一又は複数のスレッド(31)のうちの前記一つを解放することをさらに含む、請求項1乃至のいずれか1項に記載の方法。
  5. 前記タスクがメインタスクか否かを決定する前に、前記タスクが複数のサブタスクに分割可能であるか否かを決定し、前記タスクが分割可能である場合、前記タスクの前記複数のサブタスクをタスクのキュー(26)に挿入することをさらに含む、請求項に記載の方法。
  6. タスクの実行において使用するコンピューティング装置であって、前記コンピューティング装置は、
    タスクのキュー(26)を記憶するメモリ(12)装置であって、該タスクが複数のサブタスクを含む装置と、
    前記メモリ(12)装置に結合し、それぞれが一又は複数のスレッドを有する複数の処理コアを有する少なくとも一つの処理エンジン(24)を含むプロセッサ(14)であって、前記少なくとも一つの処理エンジン(24)はタスクマネージャ(27)とキューマネージャ(25)を含み、前記キューマネージャ(25)はタスクの前記キュー(26)を管理するように構成されており、前記タスクマネージャ(27)は前記プロセッサ(14)に関連するタスク配分メトリックを決定し、前記タスクを前記一又は複数のスレッド(31)のうちの前記一つに割り当て、タスクが(a)負荷バランス方法か(b)コアアフィニティ方法のいずれかを用いて実行されるべきであるかを表示するタスク配分メトリックに従ってタスク割当を実行するように構成されている前記プロセッサ(14)を含み、
    前記タスクマネージャ(27)は、前記タスク配分メトリックが、前記プロセッサ(14)に関連する負荷バランスが第1閾値を下回ることを示す場合に、負荷バランス方法を実行し、
    該負荷バランスは該タスクが再入可能タスクであるか否かを決定し、ここで、前記タスクが前記少なくとも一又は複数のスレッド(31)のうちの任意の一つに以前割り当てられた場合に前記タスクが再投入可能タスクであり、前記タスクが再入可能タスクである場合、停止基準が満たされたか否かを決定し、該停止基準は該タスクに従属したいくつかまたはすべての該サブタスク完了したか否かの決定を含み、該停止基準が満たされておらず、前記タスクが再入可能タスクである場合に、前記タスクをタスクのキュー(26)に前記キューマネージャ(25)を介して再入させた後に前記一または複数のスレッドのうつの一つを解放し
    前記タスクマネージャ(27)は、タスク配分メトリックが、前記プロセッサ(14)に関連するコア(29)アフィニティが第2閾値を下回ることを示す場合、コアアフィニティ方法を実行し、該コアアフィニティ方法は、前記タスクがメインタスクであるか否かを決定し、メインタスクとは少なくとも一つのサブタスクを有するが他のタスクのサブタスクでない場合であり、前記タスクがメインタスクでない場合に、前記停止基準が満たされたか否かを決定し、前記停止基準が満たされており、前記タスクがメインタスクでない場合に、前記タスクに関連する親タスクを前記一又は複数のスレッド(31)の前記同じ一つに割り当てる、コンピューティング装置。
  7. 前記タスクマネージャ(27)がさらに、前記タスクが再入可能タスクでない場合に、前記タスクが複数のサブタスクに分解可能であるか否かを決定するようにさらに構成されており、前記タスクマネージャ(27)がさらに、前記タスクが分解可能である場合に、前記キューマネージャ(25)を介して、前記タスクの前記複数のサブタスクを前記キュー(26)に挿入するように構成されている、請求項に記載のコンピューティング装置。
  8. 前記タスクマネージャ(27)がさらに、前記複数のサブタスクのうちの一つを前記一又は複数のスレッド(31)のうちの2番目のスレッドに割り当てて、前記複数のサブタスクのうちの前記一つが再入可能タスクであるか否かを決定するように構成されており、
    前記タスクマネージャ(27)がさらに、前記停止基準が満たされた時に、少なくとも一つの蓄積タスクを実行するように構成されている、請求項6又は7に記載のコンピューティング装置。
  9. 前記タスクマネージャ(27)がさらに、前記タスクがメインタスクであるか否かを決定する前に、前記タスクが複数のサブタスクに分解可能であるか否かを決定するように構成されており、前記タスクマネージャ(27)がさらに、前記タスクが分解可能である場合に、前記キューマネージャ(25)を介して前記タスクの前記複数のサブタスクを前記キュー(26)に挿入するように構成されており、前記タスクマネージャ(27)がさらに、前記親タスクを前記同じ一又は複数のスレッド(31)のうちの前記一つに割り当てられた後で、前記親タスクに関連する少なくとも一つの蓄積タスクを実行するように構成されている、請求項に記載のコンピューティング装置。
JP2013000082A 2012-01-05 2013-01-04 一又は複数のタスクを実行するために使用するシステム及び方法 Active JP5718378B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/344,474 2012-01-05
US13/344,474 US8621479B2 (en) 2012-01-05 2012-01-05 System and method for selecting task allocation method based on load balancing and core affinity metrics

Publications (3)

Publication Number Publication Date
JP2013140593A JP2013140593A (ja) 2013-07-18
JP2013140593A5 true JP2013140593A5 (ja) 2013-12-19
JP5718378B2 JP5718378B2 (ja) 2015-05-13

Family

ID=47754263

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013000082A Active JP5718378B2 (ja) 2012-01-05 2013-01-04 一又は複数のタスクを実行するために使用するシステム及び方法

Country Status (4)

Country Link
US (1) US8621479B2 (ja)
EP (1) EP2613257B1 (ja)
JP (1) JP5718378B2 (ja)
CN (1) CN103279388B (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130332910A1 (en) * 2012-05-22 2013-12-12 Nec Laboratories America, Inc. Dynamic livelock analysis of multi-threaded programs
CN103593240B (zh) * 2013-11-08 2016-11-23 华为技术有限公司 一种优化的调度方法及管理设备
JP6532385B2 (ja) * 2015-11-02 2019-06-19 キヤノン株式会社 情報処理システムおよびその制御方法、並びにプログラム
CN105893147A (zh) * 2016-03-29 2016-08-24 乐视控股(北京)有限公司 多任务队列管理方法、设备及系统
DE102016222375A1 (de) * 2016-11-15 2018-05-17 Robert Bosch Gmbh Vorrichtung und Verfahren zum Bearbeiten von Aufträgen
US20190102274A1 (en) * 2017-09-29 2019-04-04 Intel Corporation Utilization Metrics for Processing Engines
CN108920258A (zh) * 2018-06-26 2018-11-30 北京中电普华信息技术有限公司 一种事务处理方法及应用服务中间件
JP7197794B2 (ja) * 2019-03-28 2022-12-28 富士通株式会社 情報処理装置および実行制御プログラム

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5872972A (en) 1996-07-05 1999-02-16 Ncr Corporation Method for load balancing a per processor affinity scheduler wherein processes are strictly affinitized to processors and the migration of a process from an affinitized processor to another available processor is limited
US20020099759A1 (en) 2001-01-24 2002-07-25 Gootherts Paul David Load balancer with starvation avoidance
US20030037091A1 (en) * 2001-08-09 2003-02-20 Kozo Nishimura Task scheduling device
US7167916B2 (en) 2002-08-30 2007-01-23 Unisys Corporation Computer OS dispatcher operation with virtual switching queue and IP queues
US7441101B1 (en) 2003-12-10 2008-10-21 Cisco Technology, Inc. Thread-aware instruction fetching in a multithreaded embedded processor
US7793299B2 (en) * 2005-08-30 2010-09-07 International Business Machines Corporation System and method for scheduling tasks for execution
US8296727B2 (en) * 2005-10-14 2012-10-23 Oracle Corporation Sub-task mechanism for development of task-based user interfaces
US7941805B2 (en) 2006-08-15 2011-05-10 International Business Machines Corporation Affinity dispatching load balancer with precise CPU consumption data
US8356284B2 (en) 2006-12-28 2013-01-15 International Business Machines Corporation Threading model analysis system and method
US7895415B2 (en) 2007-02-14 2011-02-22 Intel Corporation Cache sharing based thread control
US8156495B2 (en) 2008-01-17 2012-04-10 Oracle America, Inc. Scheduling threads on processors
US8407674B2 (en) 2008-02-08 2013-03-26 International Business Machines Corporation Detecting thread starvation
US8239699B2 (en) * 2009-06-26 2012-08-07 Intel Corporation Method and apparatus for performing energy-efficient network packet processing in a multi processor core system
US8381216B2 (en) 2010-03-05 2013-02-19 Microsoft Corporation Dynamic thread pool management
CN101923491A (zh) * 2010-08-11 2010-12-22 上海交通大学 多核环境下线程组地址空间调度和切换线程的方法
CN102184125B (zh) * 2011-06-02 2013-11-13 首都师范大学 异构多核环境下基于程序行为在线分析的负载均衡方法

Similar Documents

Publication Publication Date Title
JP2013140593A5 (ja)
CN109582455B (zh) 多线程任务处理方法、装置及存储介质
JP2017519308A5 (ja)
US11010199B2 (en) Efficient critical thread scheduling for non-privileged thread requests
US8713571B2 (en) Asynchronous task execution
Ghumman et al. Dynamic combination of improved max-min and ant colony algorithm for load balancing in cloud system
US20170024251A1 (en) Scheduling method and apparatus for distributed computing system
JP2015534674A5 (ja)
JP2011076604A5 (ja)
US10554575B2 (en) Equitable sharing of system resources in workflow execution
JP5718378B2 (ja) 一又は複数のタスクを実行するために使用するシステム及び方法
JP2017532678A5 (ja)
JP2017524202A5 (ja)
JP2017530453A5 (ja)
CN103677999A (zh) 计算环境内的资源的管理
JP2017528845A5 (ja)
JP2011118900A5 (ja)
JP2015507279A5 (ja)
KR101640848B1 (ko) 멀티코어 시스템 상에서 단위 작업을 할당하는 방법 및 그 장치
US9092272B2 (en) Preparing parallel tasks to use a synchronization register
RU2010149255A (ru) Экземпляры планировщика в процессе
JP2012522320A5 (ja)
US10108463B2 (en) System, method of controlling to execute a job, and apparatus
CN107562528B (zh) 支持多种计算框架的单元化按需计算方法及相关装置
US20120096462A1 (en) Dynamic virtualization technique for multicore processor system