IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 上▲海▼商▲湯▼智能科技有限公司の特許一覧

特表2022-539955タスクスケジューリング方法及び装置
<>
  • 特表-タスクスケジューリング方法及び装置 図1
  • 特表-タスクスケジューリング方法及び装置 図2
  • 特表-タスクスケジューリング方法及び装置 図3A
  • 特表-タスクスケジューリング方法及び装置 図3B
  • 特表-タスクスケジューリング方法及び装置 図4
  • 特表-タスクスケジューリング方法及び装置 図5
  • 特表-タスクスケジューリング方法及び装置 図6
  • 特表-タスクスケジューリング方法及び装置 図7
  • 特表-タスクスケジューリング方法及び装置 図8
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-09-14
(54)【発明の名称】タスクスケジューリング方法及び装置
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220907BHJP
【FI】
G06F9/50 150C
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2021570920
(86)(22)【出願日】2021-03-09
(85)【翻訳文提出日】2022-01-25
(86)【国際出願番号】 CN2021079810
(87)【国際公開番号】W WO2021180092
(87)【国際公開日】2021-09-16
(31)【優先権主張番号】202010165543.4
(32)【優先日】2020-03-11
(33)【優先権主張国・地域又は機関】CN
(31)【優先権主張番号】202010165763.7
(32)【優先日】2020-03-11
(33)【優先権主張国・地域又は機関】CN
(81)【指定国・地域】
(71)【出願人】
【識別番号】520180323
【氏名又は名称】上▲海▼商▲湯▼智能科技有限公司
【氏名又は名称原語表記】SHANGHAI SENSETIME INTELLIGENT TECHNOLOGY CO., LTD.
【住所又は居所原語表記】Room 1605A, Building 3, 391 Guiping Road, Xuhui District, Shanghai 200233 China
(74)【代理人】
【識別番号】110000729
【氏名又は名称】特許業務法人 ユニアス国際特許事務所
(72)【発明者】
【氏名】叶 志晟
(72)【発明者】
【氏名】▲陳▼ ▲遜▼
(72)【発明者】
【氏名】▲呉▼ 保▲東▼
(72)【発明者】
【氏名】▲孫▼ ▲鵬▼
(72)【発明者】
【氏名】▲顏▼ 深根
(57)【要約】
本開示の実施例はタスクスケジューリング方法及び装置を提供する。当該方法では、タスク情報を取得し、前記タスク情報は前記タスクのタスクタイプ及びリソース要求情報のうちの少なくとも一方を含み、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクにそれぞれターゲットノードを割り当てる。
【選択図】図2
【特許請求の範囲】
【請求項1】
タスク情報を取得するステップであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含むステップと、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップと、を含む
ことを特徴とするタスクスケジューリング方法。
【請求項2】
前記タスクのリソース要求情報は前記タスクに含まれる複数のサブタスクのリソース要求情報であり、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップを含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップをさらに含み、
前記分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップを含む
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップは、
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを順次決定するステップと、
1つのサブタスクのターゲットノードが決定するたびに、前記1つのサブタスクのリソース要求情報に基づいて、前記分散システムの現在リソース状態情報を更新するステップと、を含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記複数のサブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求するリソースを満たさないと決定する
ことを特徴とする請求項3又は4に記載の方法。
【請求項6】
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップは、
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップと、
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップと、を含む
ことを特徴とする請求項3から5のいずれか1項に記載の方法。
【請求項7】
前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップは、
前記複数のサブタスクの各サブタスクの事前選択ノード集合を特定の順序に従って順次決定するステップであって、前記複数のサブタスクの第1サブタスクの事前選択ノード集合の事前選択ノードは前記複数のサブタスクの第2サブタスクの事前選択ノード集合から選択され、前記第2サブタスクの順序は前記第1サブタスクの前に位置するステップを含む
ことを特徴とする請求項6に記載の方法。
【請求項8】
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを特定の順序に従って順次選択するステップであって、前記複数のサブタスクの第2サブタスクのターゲットノードを前記複数のサブタスクの第1サブタスクのターゲットノードとして優先的に選択し、前記第2サブタスクの順序は前記第1サブタスクの前に位置するステップを含む
ことを特徴とする請求項6又は7に記載の方法。
【請求項9】
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、
前記タスクのタスクタイプに基づいて、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアを決定するステップと、
前記各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアに基づいて、前記各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップと、を含む
ことを特徴とする請求項6から8のいずれか1項に記載の方法。
【請求項10】
前記複数のサブタスクにターゲットノードを順次決定する順序は、サブタスクの優先度とサブタスク間の依存関係とのうちの少なくとも1つに基づいて決定される
ことを特徴とする請求項3から9のいずれか1項に記載の方法。
【請求項11】
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクのタスクタイプを決定するステップと、
前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップと、を含む
ことを特徴とする請求項1から10のいずれか1項に記載の方法。
【請求項12】
前記タスクの複数に含まれるサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップであって、各グループは前記複数のサブタスクの少なくとも1つのサブタスクを含むステップと、
前記少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当てるステップであって、同じグループの各サブタスクは同じターゲットノードに割り当てられるステップと、を含む
ことを特徴とする請求項1から11のいずれか1項に記載の方法。
【請求項13】
前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、
前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップを含む
ことを特徴とする請求項12に記載の方法。
【請求項14】
前記タスクのタスクタイプは、計算集約型又は通信集約型であることを特徴とする請求項11から13のいずれか1項に記載の方法。
【請求項15】
前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、
前記タスクのタスクタイプが通信集約型である場合に、前記タスクの複数のサブタスクのリソース要求情報に基づいて、前記複数のサブタスクの要求する総ノード数量を決定し、前記総ノード数量に基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップ、
及び/又は、
前記タスクのタスクタイプが計算集約型である場合に、前記複数のサブタスクの各サブタスクを1つのグループとするステップ、を含む
ことを特徴とする請求項12から14のいずれか1項に記載の方法。
【請求項16】
前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクにターゲットノードを決定するステップと、
前記タスクの複数のサブタスクのそれぞれについて対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクにターゲットノードを割り当てるステップと、を含む
ことを特徴とする請求項11から15のいずれか1項に記載の方法。
【請求項17】
前記サブタスクの少なくとも1つのサブタスクについて対応するターゲットノードを決定することに成功しなかった場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行うステップをさらに含む
ことを特徴とする請求項16に記載の方法。
【請求項18】
分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たさない場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行うステップをさらに含む
ことを特徴とする請求項2から17のいずれか1項に記載の方法。
【請求項19】
前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てた後、前記タスクの複数のサブタスクを同期的にスケジューリングするステップをさらに含む
ことを特徴とする請求項1から18のいずれか1項に記載の方法。
【請求項20】
タスクスケジューリングシステムに適用されることを特徴とする請求項1から19のいずれか1項に記載の方法。
【請求項21】
タスク情報を取得するための取得モジュールであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含む取得モジュールと、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるための第1割り当てモジュールと、を含む
ことを特徴とするタスクスケジューリング装置。
【請求項22】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると請求項1から20のいずれか1項に記載の方法が実施される
ことを特徴とするコンピュータ可読記憶媒体。
【請求項23】
メモリと、プロセッサと、前記メモリに記憶され前記プロセッサにおいて動作可能なコンピュータプログラムとを含むコンピュータデバイスであって、前記プロセッサが前記プログラムを実行すると請求項1から20のいずれか1項に記載の方法を実施する
ことを特徴とするコンピュータデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は分散システムの技術分野に関し、特に、分散システムにおけるタスクスケジューリングに関する。
【0002】
<関連出願の相互参照>
本願は2020年3月11日に提出された、出願番号が202010165543.4であり、発明の名称が「タスクスケジューリング方法及び装置」である中国特許出願、及び2020年3月11日に提出された、出願番号が202010165763.7であり、発明の名称が「タスクスケジューリング方法及び装置」である中国特許出願の優先権を主張し、前記中国特許出願の全体が援用で本明細書に組み込まれる。
【背景技術】
【0003】
現在、リソースの割り当て及び計算のために分散システムを利用し始めるタスクがますます多くなる。複数のサブタスクの内容は全く同じであったり、異なっていたり、複数のサブタスクが必要とするリソースは全く同じであったり、異なっていたりすることがある。従来の分散システムのタスクスケジューリングは一般にサブタスク単位でリソースノードの割り当てを行うため、クラスタのリソース利用率もタスクの実行効率も低かった。
【発明の概要】
【発明が解決しようとする課題】
【0004】
本開示はタスクスケジューリング方法を提供する。
【課題を解決するための手段】
【0005】
本開示の実施例の第1態様では、タスク情報を取得するステップであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含むステップと、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップとを含む、タスクスケジューリング方法が提供される。
【0006】
いくつかの実施例において、前記タスクのリソース要求情報は前記タスクに含まれる複数のサブタスクのリソース要求情報であり、前記方法は、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップをさらに含む。
【0007】
いくつかの実施例において、前記方法は、前記複数のサブタスクのリソース要求情報に基づいて、前記タスクの複数のサブタスクにターゲットノードを決定するステップをさらに含み、前記分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップを含む。
【0008】
いくつかの実施例において、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、複数のサブタスクに対応するターゲットノードを特定の順序に従って順次決定する。
【0009】
オプションとして一例において、前記複数のサブタスクのリソース要求情報は前記複数のサブタスクの各サブタスクのリソース要求情報を含み、ただし、前記リソース要求情報は要求するリソースタイプ及び各タイプのリソースの数量を含み、又はさらに他の情報を含む。
【0010】
オプションとして一例において、前記分散システムの現在リソース状態情報は前記分散システムの複数のノードの現在状態情報を含み、ただし、現在状態情報はリソースが利用可能かどうか、利用可能なリソースのタイプと数量、負荷状況、トポロジ接続情報のうちの少なくとも1種を示すために用いられ、又はさらに他の情報を含む。
【0011】
いくつかの実施例において、1つのサブタスクに割り当てるターゲットノードが決定するたびに、分散システムの現在リソース状態情報を更新し、更新された現在リソース状態情報に基づいて次のサブタスクに対応するターゲットノードを決定する。
【0012】
いくつかの実施例において、前記複数のサブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求するリソースを満たさないと決定する。
【0013】
いくつかの実施例において、前記複数のサブタスクのターゲットノードを順次決定する順序は、サブタスクの優先度とサブタスク間の依存関係とのうちの少なくとも1つから得る。
【0014】
いくつかの実施例において、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップは、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップと、複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップとを含む。
【0015】
ただし、異なるサブタスクの事前選択ノード集合は同じであってもよいし、異なってもよい。いくつかの例において、複数のサブタスクは同じ事前選択ノード集合を有する。
【0016】
いくつかの実施例において、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップは、前記分散システムの現在リソース状態情報と各サブタスクのリソース要求情報とに基づいて、前記各サブタスクの事前選択ノード集合を決定するステップを含む。
【0017】
複数のサブタスクの事前選択ノード集合の決定は独立的で、互いに依存関係のないものであってもよく、例えば、並行して実行し又は任意の順番で実行する。例えば、複数のサブタスクの事前選択ノード集合は同じ分散システムの現在リソース状態情報に基づいて決定され、つまり、分散システムの現在リソース状態情報は事前選択の過程で更新されない。例えば、各サブタスクの事前選択ノード集合の決定は自らのリソース要求情報にしか関係がなく、他のサブタスクのリソース要求情報とは無関係である。
【0018】
いくつかの実施例において、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップは、前記複数のサブタスクの各サブタスクの事前選択ノード集合を特定の順序に従って順次決定するステップを含む。
【0019】
一例において、前記複数のサブタスクの第1サブタスクの事前選択ノード集合の事前選択ノードは前記複数のサブタスクの第2サブタスクの事前選択ノード集合から選択され、ただし、前記第2サブタスクの順序は前記第1サブタスクの前に位置する。
【0020】
別の例において、前記複数のサブタスクのリソース要求情報に基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定する。
【0021】
いくつかの実施例において、前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、前記複数のサブタスクの各サブタスクの事前選択ノードから前記各サブタスクのターゲットノードを特定の順序に従って順次選択するステップを含む。
【0022】
オプションとして一例において、前記複数のサブタスクの第2サブタスクのターゲットノードを前記複数のサブタスクの第1サブタスクのターゲットノードとして優先的に選択し、ただし、前記第2サブタスクの順序は前記第1サブタスクの前に位置する。
【0023】
いくつかの実施例において、前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、前記分散システムの現在リソース状態情報に基づいて、前記複数のサブタスクの第1サブタスクの事前選択ノード集合から前記第1サブタスクのターゲットノードを決定するステップと、前記第1サブタスクのリソース要求情報に基づいて、前記分散システムの現在リソース状態情報を更新し、前記分散システムの更新された現在リソース状態情報に基づいて、前記複数のサブタスクの第2サブタスクの事前選択ノード集合から前記第2サブタスクのターゲットノードを決定するステップとを含む。
【0024】
オプションとして一例において、第1サブタスクの事前選択ノード集合の各事前選択ノードの現在状態情報に基づいて、前記第1サブタスクの事前選択ノード集合から前記第1サブタスクのターゲットノードを決定し、前記第1サブタスクのリソース要求情報に基づいて、前記第1サブタスクのターゲットノードの現在状態情報を更新する。
【0025】
いくつかの実施例において、前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、前記タスクのタスクタイプに基づいて、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアを決定するステップと、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアに基づいて、前記各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップとを含む。
【0026】
オプションとして一例において、前記タスクのタスクタイプに基づいて、前記事前選択ノード集合の各事前選択ノードのスコア決定方式を決定する。
【0027】
いくつかの実施例において、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、前記タスクのタスクタイプを決定するステップと、前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップとを含む。
【0028】
いくつかの実施例において、前記タスクのタスクタイプは計算集約型又は通信集約型である。
【0029】
いくつかの実施例において、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップであって、各グループは前記複数のサブタスクの少なくとも1つのサブタスクを含むステップと、前記少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当てるステップであって、同じグループの各サブタスクは同じターゲットノードに割り当てられるステップを含む。
【0030】
いくつかの実施例において、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップを含む。
【0031】
いくつかの実施例において、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、前記タスクのタスクタイプが通信集約型である場合に、前記タスクの複数のサブタスクのリソース要求情報に基づいて、前記複数のサブタスクの要求する総ノード数量を決定し、前記総ノード数量に基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップを含む。
【0032】
いくつかの実施例において、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、前記タスクのタスクタイプが計算集約型である場合に、前記複数のサブタスクの各サブタスクを1つのグループとするステップを含む。
【0033】
いくつかの実施例において、前記少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当てるステップは、前記少なくとも1つのグループの各グループにそれぞれ事前選択ノード集合を決定し、前記少なくとも1つのグループの各グループの事前選択ノード集合から前記グループのターゲットノードを順次選択するステップを含む。
【0034】
いくつかの実施例において、前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクにターゲットノードを決定するステップと、前記タスクの複数のサブタスクのそれぞれについて対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクにターゲットノードを割り当てるステップとを含む。
【0035】
いくつかの実施例において、前記方法は、前記サブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記タスクの複数のサブタスクの全てに対して遅延割り当てを行うステップをさらに含む。
【0036】
いくつかの実施例において、前記方法は、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たさない場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行うステップをさらに含む。
【0037】
いくつかの実施例において、前記方法は、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てた後、前記タスクの複数のサブタスクを同期的にスケジューリングするステップをさらに含む。
【0038】
いくつかの実施例において、前記方法はタスクスケジューリングシステムに適用される。
【0039】
本開示の実施例の第2態様では、タスク情報を取得するための取得モジュールであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含む取得モジュールと、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるための第1割り当てモジュールとを含むタスクスケジューリング装置が提供される。
【0040】
本開示の実施例の第3態様では、コンピュータプログラムが記憶されており、当該プログラムがプロセッサによって実行されるといずれの実施例に記載の方法が実施されるコンピュータ可読記憶媒体が提供される。
【0041】
本開示の実施例の第4態様では、メモリと、プロセッサと、前記メモリに記憶され前記プロセッサにおいて動作可能なコンピュータプログラムとを含み、前記プロセッサが前記プログラムを実行するといずれの実施例に記載の方法を実施するコンピュータデバイスが提供される。
【発明の効果】
【0042】
本開示の実施例では、タスク情報を取得し、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含み、前記タスクのリソース要求情報は前記タスクに含まれる複数のサブタスクのリソース要求情報である。タスクタイプ又はタスクのリソース要求情報に基づいてターゲットノードの割り当てを行う。例えば、分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てる。このようにして、タスク全体のリソース要求状況を把握して、タスク全体を粒度としたリソースの割り当てを実現し、クラスタのリソース利用率を向上させることができる。
【0043】
なお、上記の概略的な説明と次の詳細な説明は例示及び解釈のためのもので、本開示への限定ではない。
【図面の簡単な説明】
【0044】
ここに示す図面は本明細書の一部として組み込まれ、これらの図面は本開示に合致する実施例を示しており、本明細書と共に本開示の技術的解決手段への説明に供する。
図1】本開示の実施例の分散システムの模式図である。
図2】本開示の実施例のタスクスケジューリング方法のフローチャートである。
図3A】本開示の実施例のノードのシミュレーション割り当てのプロセスにおけるリソースの変化の模式図である。
図3B】本開示の実施例のノードのシミュレーション割り当てのプロセスのフローチャートである。
図4】従来のタスクスケジューリングのプロセスの模式図である。
図5】本開示の実施例のタスクスケジューリングのプロセスの模式図である。
図6】本開示の実施例のスケジューリングのロジックの模式図である。
図7】本開示の実施例のタスクスケジューリング装置の構造模式図である。
図8】本開示の実施例のコンピュータデバイスの構造模式図である。
【発明を実施するための形態】
【0045】
以下、例示的な実施例を詳細に説明し、その例を図面に示す。以下の説明で図面が関係する場合に、特段の説明がある場合を除き、異なる図面では同じ数字が同じ又は類似の要素を表す。以下の例示的な実施例で説明する実施形態は本開示に合致する全ての実施形態を表すものではない。むしろ、それらは特許請求の範囲に詳しく記載された本開示のいくつかの態様に合致する装置及び方法の例に過ぎない。
【0046】
本開示で使用する用語は特定の実施例を説明するためのもので、本開示への限定ではない。本開示及び特許請求の範囲で使用する単数形の「1種」、「前記」及び「当該」には複数形を含み、ただし文脈の中で他の意味を明確に記載する場合は除く。なお、本明細書で使用する用語「及び/又は」とは1つ又は複数の関連の項目として示すものの任意の又は全ての可能な組み合わせを含むことである。また、本明細書で用語「少なくとも1種」は複数種のうちの任意の1種又は複数種のうちの少なくとも2種の任意の組み合わせを表す。
【0047】
なお、本開示で各種の要素を説明するために第1、第2、第3などの用語が使用されるが、当該要素はこれらの用語に限定されない。当該用語は同じタイプの要素を互いに区別するためのものに過ぎない。例えば、本開示の範囲から逸脱しない限りは、第1要素は第2要素と呼んでもよい。同様に、第2要素は第1要素と呼んでもよい。文脈に応じて、ここに使用する用語「もし」は「…の時」又は「…の場合」又は「決定に応じて」のように解釈することが可能である。
【0048】
現在、分散システムを用いて処理を行うタスクがますます多くなり、このようなタスクは分散タスクと呼ばれる。このような分散タスクはグラフィックスプロセッシングユニット(Graphics Processing Unit、GPU)、デジタルシグナルプロセッサ(Digital Signal Processor、DSP)、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA)などの高性能の処理リソースを特に要求するタスクを含み、例えば、深層学習タスクである。図1はいくつかの実施例の分散システムを示し、当該分散システムは1つ又は複数のクラスタを含み、各クラスタは1つ又は複数のサーバーを含み、各サーバーを1つのノードと見なしてもよい(図における各黒い点で示される)。各ノードは中央処理装置(Central Processing Unit、CPU)、GPU、メモリ、ディスク、ネットワークポートなどのリソースのうちの少なくとも一方を含む。サブタスクがノードに割り当てられた後、当該ノード上のリソースによってサブタスクを実行することができ、各ノードでは1つ又は複数のサブタスクを実行できる。同じクラスタ内の各ノードに実行されるサブタスクは同じであってもよいし、異なってもよい。分散システムでは、タスクそのものもタスクのリソース要求も、従来のタスクと全く異なるため、分散システムのタスクスケジューリング方法について適宜調整を行って、分散システムのクラスタリソースの使用上の合理性を向上させて、タスク実行のパフォーマンスとクラスタのリソース利用率を高める必要がある。
【0049】
分散システムのタスクにリソースを割り当てる場合、割り当て方法によってタスクの実行効率に影響がもたらされる。例えば、場合によっては、タスクの複数のサブタスクの間で頻繁な通信を行う必要があるため、当該タスクの複数のサブタスクを通信コストの低いノードに割り当てるのが好ましい。場合によっては、タスクの複数のサブタスクの実行の過程で大きな計算量が伴うため、当該タスクの複数のサブタスクをコンピューティングリソースの多いノードに割り当てるのが好ましい。
【0050】
さらに、従来の分散システムのタスクは殆ど次の特徴を有する。1つのタスクは一般に複数のサブタスクを含み、各サブタスクの内容と要求するリソースは全く同じである場合があり異なる場合もあり、サブタスクの間に頻繁な通信を必要とする可能性がある。また、場合によっては、タスクの複数のサブタスクをまとめてスケジューリングして実行する必要があり、そうでなければ、タスクの正常な実行ができない。場合によっては、各サブタスクの実行順番がタスク全体の実行状況にある程度の影響をもたらす。例えば、スレーブ(slave)サブタスクは、それが属するマスター(master)サブタスクの実行が完了しないと実行できない。
【0051】
現在、次の方式で分散システムのタスクにバッチスケジューリングを行うスケジューラ(例えば、kube-batch)は以下である。スケジューラが順番どおりにタスクの各サブタスクに対して1つずつスケジューリングを試み、当該タスクの各サブタスクのスケジューリングを試みることを完了した後に、タスク全体がユーザーの予想の実行状態に合致するかどうかを判断する。このようなスケジューリング方式をギャングスケジューリング(gang scheduling)と呼ぶ。
【0052】
しかし、現在のギャングスケジューリング(gang scheduling)の実現形態としては、実質的にはサブタスクを粒度としたスケジューリングを行うことで、スケジューラがタスク全体のリソース要求状況を取得していないため、サブタスクに割り当てるノードは最適な選択でない可能性があり、タスクの実行効率もクラスタのリソース利用率も低かった。そのため、クラスタリソースが不十分で又はタスクタイプが複雑である場合には、スケジューリングの失敗が多発する。
【0053】
これに基づき、本開示の実施例では、タスクスケジューリング方法が提供される。図2に示すように、前記方法はステップ201と202とを含んでもよい。
【0054】
ステップ201で、タスク情報を取得し、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含む。
【0055】
ステップ202で、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てる。
【0056】
本開示の実施例の方法は、端末機器又はクラウドサーバーなどの任意の電子機器によって実行されてもよい。いくつかの実施例において、当該方法はプロセッサ又はスケジューラによって実行される。オプションとして、前記プロセッサ又はスケジューラはクバネティス(Kubernetes)のようなクラウドプラットフォームにおいて実行し、具体的にはコンテナオーケストレーションエンジンに設定することができ、ただし本開示の実施例はそれに限定されない。ステップ201で、1つ又は複数のタスクの情報を取得する。
【0057】
前記タスクに含まれる複数のサブタスクは前記タスクの全てのサブタスクであってもよいし、前記タスクの一部のサブタスク、例えば、リソースの需要量の大きいサブタスク、優先度の高いサブタスク、又は互いに依存関係のあるサブタスク、要求するリソースタイプもしくは数量が近いサブタスクなどであってもよい。ただし、互いに依存関係のあるサブタスクとは互いに依存関係又はマスタースレーブ関係がある複数のサブタスクを指し、例えば、サブタスクAはサブタスクBの実行が完了しないと実行できない。別の例として、同じタイプを有する、又は少なくとも1つの特定のタイプを有する複数のサブタスク等を指す。前記タスクはニューラルネットワークのトレーニングタスク、推論タスクであってもよいし、他のタイプの深層学習タスクなどであってもよい。オプションとしていくつかの実施例において、同じタスクの各サブタスクは、分散システムの同じクラスタの同じ又は異なるノードによって実行される。分散システムが複数のクラスタを含む場合に、同じタスクの各サブタスクは、同じ又は異なるクラスタのノードによって実行される。オプションとして、タスクを1つのクラスタに割り当て、その後、当該クラスタから前記タスクの複数のサブタスクのためのターゲットノードを決定する。このようにして、タスクの複数のサブタスクを同じクラスタに割り当て実行させることで、通信オーバーヘッドを低減し、タスクの実行効率を向上させることに役立つ。
【0058】
前記タスク情報は、ユーザーの入力又は設定に基づいて得てもよいし、又はタスクの分析などに基づいて得てもよい。前記タスク情報はタスクのタスクタイプ及び/又はリソース要求情報を含んでもよい。前記タスクのリソース要求情報は、具体的には、前記タスクに含まれる複数のサブタスクのリソース要求情報である。いくつかの実施例において、前記タスク情報は、タスクタイプ及びリソース要求情報に加えて、前記タスクの優先度情報、前記タスクに含まれる複数のサブタスクの優先度情報、サブタスク間の依存情報、ユーザー提供の情報、履歴情報、計算量情報、通信量情報などのうちの1種又は複数種をさらに含んでもよい。
【0059】
前記サブタスクのリソース要求情報は、当該サブタスクの実行に必要なリソースタイプ及び/又はリソース数量を含んでもよく、前記リソースタイプは、CPU、GPU、DSP、FPGA、メモリ、ディスク、ネットワークポートなどのリソースのうちの少なくとも一方を含むが、それらに限定されない。
【0060】
前記タスクの優先度情報は、前記タスクがスケジューリングされるまでの待ち時間及び/又は前記タスクの前記複数のサブタスクが要求する総リソースを含むが、それらに限定されない。スケジューリングされるまでの待ち時間とは、スケジューラがタスクを受信した時間から当該タスクがスケジューリングされる時間までの期間を指し、スケジューリングされるまでの待ち時間が長い方のタスクと総リソースを多く要求するタスクとの優先度を高く設定することで、タスクが長時間スケジューリング待ちの状態になることを避ける。
【0061】
前記タスクに含まれる複数のサブタスクの優先度情報は、前記タスクに含まれる複数のサブタスクの優先度を決定するために用いられる。いくつかの実施例において、1つのスケジューリング周期又はリソース割り当てプロセスで、少なくとも各サブタスクの優先度情報に基づいて、サブタスクのスケジューリングを行うことができる。
【0062】
前記サブタスク間の依存情報は、前記タスクに含まれる複数のサブタスク間の依存関係又はマスタースレーブ関係を決定するために用いられ、サブタスクBは、サブタスクAの実行が完了しないと実行できない場合、サブタスクBは、サブタスクAに依存し、又は、サブタスクAは、マスタータスクであり、サブタスクBは、サブタスクAのスレーブタスクである。
【0063】
前記ユーザー提供の情報は前記タスクの複数のサブタスクの計算量及び通信量を決定するために用いられる。
【0064】
前記履歴情報は過去のスケジューリング情報及び/又は過去の実行状況などを含んでもよい。前記履歴情報に基づいて過去のスケジューリングにおける前記タスクのタスクタイプを決定することができる。
【0065】
上記の情報に加えて、実際の適用シナリオによって、前記タスク情報は他の情報を含んでもよいが、ここでは繰り返さない。
【0066】
いくつかの実施例において、前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップ202は、分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップを含む。前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースとは、前記タスクの複数のサブタスクの要求する総リソースであってもよく、オプションとして、複数のサブタスクがタスクの全てのサブタスクである場合に、当該総リソースは、前記タスクが要求する総リソースである。オプションとして、分散システムの現在利用可能なリソースが、前記複数のサブタスク又は前記タスクの要求する総リソースを満たす場合、分散システムの現在利用可能なリソースは、複数のサブタスクの実行をサポートするために十分であることを示す。オプションとして、分散システムの現在利用可能なリソースが、複数のサブタスク又はタスクの要求する総リソースを満たさない場合、分散システムの現在利用可能なリソースは、せいぜい複数のサブタスクの一部のタスクの実行しかサポートできず、全てのサブタスクの実行をサポートすることはできないことを示す。
【0067】
本開示の実施例では、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たす場合に限って、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てる。これにより、タスクをリソース割り当ての単位として、タスクに含まれる複数のサブタスクをまとめてノードの割り当てを行う。したがって、分散システムの現在利用可能なリソースが不十分である場合に、タスクの一部のサブタスクにリソースを割り当てることに成功できないため、当該タスクの一部のサブタスクのみが分散システム内のリソース全体を占用するという状況を回避し、リソースの合理的な利用に役立つ。
【0068】
いくつかの実施例において、分散システムの現在リソース状態情報と複数のサブタスクのリソース要求情報とに基づいて、複数のサブタスクにターゲットノードを割り当てる。各サブタスクに、そのリソース要求を満たすターゲットノードを割り当ててもよく、異なるサブタスクのターゲットノードは、同じであってもよいし異なってもよい。
【0069】
いくつかの実施例において、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定し、前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てる。前記複数のサブタスクにターゲットノードを決定する上記のプロセスはシミュレーション割り当てのプロセスであり、シミュレーション割り当ては実際に実行するリソース割り当てプロセスではなく、仮想のリソース割り当てプロセスである。前記シミュレーション割り当てのプロセスは、現在、複数のサブタスクを分散システムのノードに割り当てるかどうかを計算して決定するものである。前記タスクの複数のサブタスクについてノードのシミュレーション割り当てを行うことで、分散システムが現在、当該複数のサブタスクの要求するリソースを満たすかどうかを決定することが可能である。
【0070】
分散システムの現在リソース状態情報は、分散システムの現在利用可能なリソースを表示するために用いられ、分散システムの現在利用可能なリソースの数量、タイプ及び分布のうちの少なくとも一方を含んでもよいし、又は、分散システムの複数のノードの現在状態を含んでもよく、例えば、利用可能かどうか、利用可能なリソースがあるかどうか、利用可能なリソースのタイプと数量などである。複数のサブタスクのリソース要求情報は、複数のサブタスクの各サブタスクのリソース要求情報を含んでもよく、例えば、要求するリソースタイプ及びあるリソースタイプのリソースの数量のうちの少なくとも1種であり、例えば、要求するGPU、DSP、CPUなどの1種又は複数種であり、本開示の実施例はそれらに限定されない。
【0071】
いくつかの実施例において、複数のサブタスクのリソース要求情報と分散システムの現在リソース状態情報とに基づいて、分散システムには複数のサブタスクの要求を満たすターゲットノードがあるかどうかを決定し、又は、複数のサブタスクの各サブタスクのターゲットノードを特定の順序に従って順次決定する。例えば、複数のサブタスクの各サブタスクが分散システムにその要求を満たすターゲットノードが見つかると、分散システムの現在利用可能なリソースが複数のサブタスクの要求する総リソースを満たすと決定する。一例として、複数のサブタスクの少なくとも1つのサブタスクが分散システムにその要求を満たすターゲットノードが見つからないと、分散システムの現在利用可能なリソースが複数のサブタスクの要求する総リソースを満たさないと決定する。
【0072】
従来の単一のサブタスクのノード決定とは異なり、本開示の実施例では、複数のサブタスクのターゲットノードは特定の順序に従って順次決定され、しかも次のサブタスクのターゲットノードの決定は、前のサブタスクについて決定されたターゲットノードの影響を受ける場合がある。いくつかの実施例において、毎回1つのサブタスクに対応するターゲットノードが決定された後、分散システムの現在リソース状態情報を更新し、例えば、決定された当該ターゲットノードの現在状態情報を更新し、その後、更新された現在リソース状態情報に基づいて次のサブタスクに対応するターゲットノードを決定することで、リソース競合の問題を避ける。
【0073】
なお、ここで前記現在リソース状態情報を更新するとは、上記のシミュレーション割り当て又はターゲットノードの決定のプロセスに用いられるものであり、実際の更新ではなく仮想の更新であり、サブタスクのノードのシミュレーション割り当て又はターゲットノードの決定を1回実行した後の、分散システムの現在利用可能なリソースの仮想の変化状況であってもよい。サブタスクの実際の割り当てはまだ行われていないため、分散システムの現在利用可能なリソースが実際に変化していない。例えば、1つのサブタスクのターゲットノードが決定した後、当該ターゲットノードが仮想的に当該サブタスクに割り当てられ、ターゲットノード上の当該サブタスクの要求するリソースに対応する一部のリソースを当該サブタスクと仮想的にバインドすると考えてもよい。このように、当該仮想的にバインドされたリソースは、他のサブタスクに割り当てられることはできない。
【0074】
上記の特定の順序は事前に設定された順番であってもよい。又は、いくつかの例において、前記特定の順序は、前記複数のサブタスクの優先度に基づいて決定され、例えば、優先度の高いサブタスクに対応するターゲットノードを決定し、次に、優先度の低いサブタスクに対応するターゲットノードを決定する。当該優先度は、サブタスクのタイプ、サブタスクと他のサブタスクとの間の依存関係などの1種又は複数種の要因に基づいて決定されてもよく、例えば、依存関係又はマスタースレーブ関係のある2つのサブタスクについて、マスター(master)サブタスクの優先度はスレーブ(slave)サブタスクの優先度より高いが、本開示の実施例はそれに限定されない。又は、別のいくつかの例において、前記特定の順序は、前記サブタスクの依存関係又はマスタースレーブ関係に基づいて決定される。スレーブサブタスクはマスターサブタスクがなければ実行できないため、対応するターゲットノードをマスターサブタスクに優先的に割り当てることにより、タスク全体の実行効率の向上に役立つ。又は、前記特定の順序は、他の要因に基づいて決定されてもよいが、本開示の実施例はこれについて限定しない。
【0075】
いくつかの実施例において、分散システムには前記複数のサブタスクの各サブタスクの要求するリソースを満たすターゲットノードがある場合に、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たすと決定し、そうでなければ、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たさないと決定する。
【0076】
図3A及び図3Bに示す例では、タスクが優先度の高い順にサブタスク1、サブタスク2及びサブタスク3を含むと仮定し、まず分散システムの現在利用可能なリソース情報とサブタスク1のリソース要求情報とに基づいて、サブタスク1にノードを割り当てるシミュレーションを行い、サブタスク1のターゲットノードを得、その後、分散システムの現在リソース状態情報を更新し、次に、更新された分散システムの現在利用可能なリソース情報とサブタスク2のリソース要求情報とに基づいて、サブタスク2にノードを割り当てるシミュレーションを行い、サブタスク2のターゲットノードを得、その後、分散システムの現在リソース状態情報を更新し、さらに、再度更新された分散システムの現在利用可能なリソース情報とサブタスク3のリソース要求情報とに基づいて、サブタスク3にノードを割り当てるシミュレーションを行い、サブタスク3のターゲットノードを得る。
【0077】
サブタスク1、サブタスク2及びサブタスク3へのノードのシミュレーション割り当てがいずれも成功した場合、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求を満たす、即ち、複数のサブタスクの要求する総リソースを満たすと決定する。サブタスク1、サブタスク2又はサブタスク3へのノードのシミュレーション割り当てが失敗すると、例えば、分散システムにはその要求するリソースを満たすターゲットノードが見つからないと、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの要求する総リソースを満たさないと決定する。
【0078】
前記シミュレーション割り当てにより、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求するリソースを満たすと決定した場合に、前記シミュレーション割り当てで決定された各サブタスクに対応するターゲットノードを、前記各サブタスクに割り当ててもよい。
【0079】
いくつかの実施例において、分散システムの各ノードの現在状態情報に基づいて、各サブタスクにターゲットノードを決定してもよく、例えば、各ノードの現在状態情報に基づいて、各ノードをソート又はスコアリングされ、複数のサブタスクに、順序又はスコアの高いノードを特定の順序に従って順次割り当てる。
【0080】
いくつかの実施例において、前記タスクの複数のサブタスクにターゲットノードを決定するとき、事前選択及び最適選択の2つのプロセスを介して複数のサブタスクのそれぞれに対応するターゲットノードを決定する。
【0081】
事前選択プロセスでは、複数のサブタスクのリソース要求情報に基づいて、複数のサブタスクの各サブタスクについて、それぞれ分散システムからその要求を満たす少なくとも1つの事前選択ノードを初歩的に選択し、又は分散システムからその要求を満たさないノードを排除する。例えば、前記分散システムの複数のノードの現在状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定し、各サブタスクの事前選択ノード集合は、少なくとも1つの事前選択ノードを含む。異なるサブタスクの事前選択ノード集合は、同じノードまたは異なるノードを含んでもよい。
【0082】
最適選択プロセスでは、各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択する。例えば、サブタスクの事前選択ノード集合から最適な1つのノードを当該サブタスクのターゲットノードとして選択する。オプションとしていくつかの例において、サブタスクの事前選択ノード集合に含まれる各事前選択ノードの現在状態情報に基づいて、例えば、現在負荷状況、利用可能なリソースのタイプ、利用可能なリソースの数量、利用可能なリソースの分布及びノード同士のトポロジ接続関係、及び他のノードとのトポロジ接続関係のうちの少なくとも一方に基づいて、ターゲットノードを決定する。前記利用可能なリソースのタイプは、通信ポート、ディスクの記憶スペース、メモリ、CPU、GPUなどのうちの少なくとも1つを含むが、それらに限定されない。前記利用可能なリソースの数量はCPUの数量、ディスクの残り容量、メモリの残り容量などであってもよい。前記利用可能なリソースの分布は、リソース断片化(fragmentation)状況とも呼ばれ、即ち現在利用可能なリソースの分布位置であり、例えば、ディスクの残り容量がいくつのディスクに分布するかということである。分散システムの各ノードのトポロジ構造は、例えば、バストポロジ、スタートポロジ、リングトポロジ、ツリートポロジなどである。
【0083】
いくつかの実施例において、事前選択プロセスで、前記分散システムの現在リソース状態情報と各サブタスクのリソース要求情報とに基づいて、前記各サブタスクの事前選択ノード集合を決定し、即ち、前記タスクの複数のサブタスクの各サブタスクの事前選択プロセスは互いに干渉せず、各サブタスクの事前選択ノード集合の選択は、他のサブタスクのリソース要求情報に依存せず、当該サブタスクのリソース要求情報にのみ関連する。これに応じて、複数のサブタスクの事前選択ノード集合の決定は、並行して実行してもよいし、又は任意の順番で実行してもよい。このようにして、迅速に事前選択ノードを決定して、シミュレーション割り当ての全体的な効率を向上させることができる。
【0084】
例えば、タスクが優先度の高い順にサブタスク1、サブタスク2及びサブタスク3を含むと仮定し、事前選択プロセスでは、次の動作を並行して実行してもよい。サブタスク1のリソース要求情報と分散システムの現在リソース状態情報とに基づいてサブタスク1の事前選択ノード集合を決定し、サブタスク2のリソース要求情報と分散システムの現在リソース状態情報とに基づいてサブタスク2の事前選択ノード集合を決定し、サブタスク3のリソース要求情報と分散システムの現在リソース状態情報とに基づいてサブタスク3の事前選択ノード集合を決定する。例えば、サブタスク1に対応する事前選択ノード集合は、{ノード1,ノード2,ノード3}を含み、サブタスク2に対応する事前選択ノード集合は、{ノード2,ノード5,ノード6,ノード7}を含み、サブタスク3に対応する事前選択ノード集合は、{ノード6,ノード7}を含む。
【0085】
いくつかの実施例において、事前選択プロセスでは、複数のサブタスクの事前選択ノード集合を特定の順序に従って順次選択する。オプションの例において、前のサブタスクの事前選択ノード集合に基づいて、次のサブタスクの事前選択ノード集合を決定する。例えば、次のサブタスクの事前選択ノードは、前のサブタスクの事前選択ノード集合から選択される。当該前のサブタスクの数量は1つ又は2つ以上であってもよく、例えば、当該前のサブタスクは、当該次のサブタスクの前の全てのサブタスクであり、当該前のサブタスクと次のサブタスクは、隣接してもよく、少なくとも1つのサブタスクを隔ててもよいが、本開示の実施例はそれに限定されない。
【0086】
いくつかの実施例において、複数のサブタスクのリソース要求情報を総合的に考慮して、複数のサブタスクの事前選択ノード集合を決定し、例えば、前記複数のサブタスクに共通の事前選択ノード集合を選択し、当該共通の事前選択ノード集合に含まれる事前選択ノードは複数のサブタスクの少なくとも2つのサブタスクのリソース要求を満たす。
【0087】
いくつかの実施例において、最適選択プロセスでは、複数のサブタスクのターゲットノードを並行して決定し、又は複数のサブタスクの事前選択ノード集合と結び付けて、複数のサブタスクのターゲットノードを総合的に決定する。例えば、複数のサブタスクの少なくとも一部のサブタスクの事前選択ノード集合について共通部分を求めることにより、当該少なくとも一部のサブタスクのターゲットノードを決定するが、本開示の実施例はそれに限定されない。
【0088】
いくつかの実施例において、特定の順序に従って、例えば、複数のサブタスクの優先度に基づいて、前記複数のサブタスクの事前選択ノード集合から前記複数のサブタスクに対応するターゲットノードを順次決定する。オプションの一例において、サブタスクに対応するターゲットノードが決定するたびに、当該ターゲットノードの現在状態情報を更新する。例えば、当該サブタスクに対応するリソース要求情報に基づいて、当該ターゲットノードの現在状態情報を更新する。このようにして、後続のサブタスクのターゲットノードを決定する過程で、当該ターゲットノード上の当該サブタスクの要求するリソースに対応する部分が利用できなく、複数のサブタスクの順調な実行が保証される。オプションとして別の例において、前のサブタスクによって選択されたターゲットノードに基づいて、次のサブタスクのターゲットノードを選択する。例えば、次のサブタスクの事前選択ノード集合がターゲットノードを含まないか、又は当該ターゲットノードの他の重要な要素が次のサブタスクの要求を満たさない限り、次のサブタスクは、前のサブタスクのターゲットノードを自身のターゲットノードとして優先的に選択するが、本開示の実施例はそれに限定されない。
【0089】
複数のサブタスクにリソースを同期的に割り当てる場合には、前記事前選択及び最適選択プロセスは、シミュレーション割り当てのプロセスであってもよい。複数のサブタスクにリソースを非同期的に割り当てる場合には、前記事前選択及び最適選択プロセスは、実際のノード割り当てプロセスであってもよい。同様に、前記過程に関わる現在リソース状態情報の更新は、1回のサブタスクへのノード割り当ての実行が完了した後、分散システムの現在利用可能なリソースの変化により実行された実際の更新プロセスであってもよい。
【0090】
本開示の実施例では、所定の方式により事前選択ノード集合からターゲットノードを選択してもよい。例えば、分散システムの現在リソース状態情報又は各事前選択ノードの現在状態情報と複数のサブタスクのリソース要求情報とに基づいてターゲットノードを選択する。いくつかの実施例において、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアを決定し、例えば、サブタスクの事前選択ノード集合の各事前選択ノードの現在状態情報と当該サブタスクのリソース要求情報とに基づいて、各事前選択ノードのスコアを決定し、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアに基づいて、前記各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択する。例えば、事前選択ノード集合に含まれる少なくとも1つの事前選択ノードからスコアの最高の事前選択ノードをターゲットノードとして選択する。又は、スコアと他の要素の両方に基づいてターゲットノードを選択する。
【0091】
前例の続きで、タスクの優先度に基づいて複数のサブタスクのターゲットノードを順次決定するのを例として、まずサブタスク1の事前選択ノード集合の各事前選択ノードのスコアを決定し、ノード1のスコアが80、ノード2のスコアが90、ノード3のスコアが70であると仮定すると、ノード2をサブタスク1のターゲットノードとして決定し、ノード2の現在状態情報を更新する。その後、サブタスク2の事前選択ノード集合の各事前選択ノードのスコアを決定し、ここで、ノード2のスコアは、ノード2の更新された現在状態情報に基づいて決定されるものである。ノード2のスコアが60、ノード5のスコアが80、ノード6のスコアが75、ノード7のスコアが70であると仮定すると、ノード5をサブタスク2のターゲットノードとして決定し、ノード5の現在状態情報を更新する。最後に、サブタスク3の事前選択ノード集合の各事前選択ノードのスコアを決定し、ノード6のスコアが70、ノード7のスコアが60であると仮定すると、ノード6をサブタスク3のターゲットノードとして決定する。
【0092】
いくつかの実施例において、ステップ201で取得したタスク情報に基づいてタスクのタスクタイプを決定し、タスクのタスクタイプに基づいて、複数のサブタスクにターゲットノードを割り当てる。タスクのタスクタイプについては実際の状況に応じて設定することができる。ニューラルネットワークなどの深層学習モデルのトレーニング、推論などの深層学習タスクの場合は、オプションとして、タスクを通信集約型タスク及び計算集約型タスクの2つのタイプに分ける。通信集約型タスクとはタスクの処理過程で各サブタスク間の通信が頻繁なタスクであり、計算集約型タスクとはタスクの処理過程で計算量が大きいタスクである。
【0093】
具体的には、タスクの複数のサブタスクの全体的な状況に基づいてタスクのタスクタイプを決定することができる。オプションとして一例において、前記タスクの複数のサブタスクの計算量及び通信量に基づいて、タスクのタスクタイプを決定する。例えば、計算量が事前に設定された計算量閾値より大きい場合に、当該タスクを計算集約型タスクと見なす。別の例として、通信量が事前に設定された通信量閾値より大きい場合に、当該タスクを通信集約型タスクと見なす。別の例として、計算量と通信量の両方が事前に設定された対応の閾値を超える場合、通信集約型タスクとして決定してもよい。オプションとして別の例において、過去のスケジューリング経験に基づいてタスクタイプを決定する。ある特定のタスクについて、過去のスケジューリングでスケジューラが当該タスクを計算集約型タスクとして決定したことがあると、当該タスクを計算集約型タスクとして決定し、過去のスケジューリングでスケジューラが当該タスクを通信集約型タスクとして決定したことがあると、当該タスクを通信集約型タスクとして決定する。オプションとして、前記タスクの少なくとも1回の過去の実行の状況に基づいて、前記タスクのタスクタイプを決定し、例えば、直近の1回又は複数回の過去の実行過程で、前記タスクの計算に使用する時間又はコンピューティングリソースが多いと、当該タスクを計算集約型タスクとして決定し、別の例として、直近の1回又は複数回の過去の実行過程で、前記タスクの通信に使用する時間又は通信リソースが多いと、当該タスクを通信集約型タスクとして決定する。又は、他の方式によりタスクのタスクタイプを決定してもよい。又は、ユーザー提供の情報、例えば、ユーザーが提供するタスクタイプ情報、あるいはユーザーが提供するタスクの計算量及び/又は通信量情報などに基づいて、タスクのタスクタイプを決定する。本開示の実施例ではタスクタイプの決定の実現について具体的に限定しない。
【0094】
本開示の実施例では、タスクタイプに基づいて複数のサブタスクのターゲットノードを決定することにより、タスク全体を効率的に実行できる。例えば、通信集約型タスクについて、当該タスクの複数のサブタスクを、なるべく数の少ないターゲットノードに割り当てて、通信オーバーヘッドを減らすことができる。別の例として、計算集約型タスクについて、オプションとして、ターゲットノード上のリソースが前記タスクの複数のサブタスクの要求を満たすだけでよく、又は計算性能の優れたノードを優先的に選択し、又はノードの断片化リソースを優先して利用し、又はなるべくコンピューティングリソースがユーザーの要求を満たすことを前提として、通信オーバーヘッドを最適化する、などである。
【0095】
オプションとしていくつかの例において、前記タスクのタスクタイプに基づいて、上記の事前選択及び/又は最適選択プロセスを行う。
【0096】
いくつかの実施例において、タスクのタスクタイプに基づいて、上記の事前選択プロセスを行い、例えば、通信集約型タスクの場合は、利用可能なリソースのタイプ及び/又は利用可能なリソースの数量が少ないなどのような、明らかに複数のサブタスクの多くのサブタスクの要求を満たさないノードを排除し、別の例として、事前選択ノード集合に含まれるノードの数量を特定の範囲に制限し、ここで、リソースタイプの多い及び/又は数量の多いノード、又はリソースタイプが複数のサブタスク全体の要求するリソースに合致するノードを事前選択ノードとして優先的に選択する。オプションとしていくつかの例において、通信集約型タスクの各サブタスクに個別の事前選択ノード集合を決定する代わりに、複数のサブタスクの一部又は全てのサブタスクに1つの事前選択ノード集合を決定してもよいが、本開示の実施例はそれに限定されない。
【0097】
別のいくつかの実施例において、タスクタイプに基づいて、上記の最適選択プロセスを行う。例えば、タスクタイプに基づいて、ターゲットノードの選択方式を決定する。例えば、1つのサブタスクのターゲットノードを決定する過程で、その前のサブタスクによって決定されたターゲットノードを優先的に選択する。例えば、タスクがサブタスク1及びサブタスク2を含み、サブタスク1のターゲットノードがノード1及びノード2を含む場合に、サブタスク2にノード1及びノード2をターゲットノードとして最適選択してもよい。オプションとしていくつかの例において、サブタスクの事前選択ノード集合に含まれる各ノードの現在状態情報とタスクのタスクタイプとに基づいて、当該サブタスクの事前選択ノード集合に含まれる各事前選択ノードのスコアを決定する。別のいくつかの実施例において、他の方式によりサブタスクの事前選択ノード集合に含まれる各事前選択ノードのスコアを決定してもよく、説明が重複するためここで省略する。
【0098】
一例において、通信集約型タスクの場合は、ターゲットノードの数量をなるべく減らしてサブタスク間の通信コストを低減することが望ましいため、通信集約型タスクのサブタスクの場合は、一般に、リソースが集中して分布するノードは、リソースが分散して分布するノードよりスコアが高い。例えば、サブタスクの事前選択ノード1の利用可能なディスク容量が2つのディスクに分布し、事前選択ノード2の利用可能なディスク容量が1つのディスクに分布すると、当該サブタスクの事前選択ノード2は事前選択ノード1よりスコアが高い。別の例において、計算集約型タスクの場合は、一般に、計算性能の高いノードのスコアは、計算性能の弱いノードのスコアより高い。例えば、サブタスクの事前選択ノード1のプロセッサが1つのプロセッサコアを含み、当該サブタスクの事前選択ノード2のプロセッサが2つのプロセッサコアを含むと、当該サブタスクの事前選択ノード2は事前選択ノード1よりスコアが高い。
【0099】
上記のプロセスではサブタスクをリソース割り当ての対象とする例で説明している。いくつかの実施例において、前記タスクの複数のサブタスクを少なくとも1つのグループに分割してもよく、ただし、各グループは前記複数のサブタスクの少なくとも1つのサブタスクを含み、前記タスクの少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当て、ただし、同じグループの各サブタスクは同じターゲットノードに割り当てられる。
【0100】
グループの数量はタスクの要求するノードの数量と同じであってもよく、即ち、タスクの複数のサブタスクをNのターゲットノードに割り当てる場合に、当該タスクの複数のサブタスクをNのグループに分割する。各グループのサブタスクの数量は同じであってよいし、異なってもよい。例えば、複数のサブタスクをランダムに割り当て、又は優先度の近いサブタスクを1つのグループに分割し、又は依存関係があるもしくはないサブタスクを1つのグループに分割し、又は要求するリソース数量の差の大きいサブタスクを1つのグループに分割し、又は要求するリソースタイプが同じサブタスクを1つのグループに分割するなどであり、本開示の実施例ではグループ分割の方式について具体的に限定しない。このようにして、グループを単位としてターゲットノードを決定すると、タスクの実行効率に大きな影響を与えることなく、リソース割り当てプロセスの効率を向上させることができる。
【0101】
いくつかの実施例において、前記タスクのタスクタイプに基づいて前記タスクの複数のサブタスクを少なくとも1つのグループに分割する。例えば、通信集約型タスクの場合は、前記タスクの複数のサブタスクを最小数のターゲットノードに割り当てることで、サブタスク間の通信コストを低減できる。例えば、複数のサブタスクの全てのサブタスクを同じグループに分割することで、全てのサブタスクは同じターゲットノードにおいて実行される。オプションとしていくつかの例において、前記タスクの複数のサブタスクのリソース要求情報に基づいて、前記タスクの複数のサブタスクの要求する総ノード数量を決定し、前記総ノード数量に基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割する。別の例として、計算集約型タスクの場合は、前記タスクの複数のサブタスクの各サブタスクを1つのグループとして、つまり、サブタスクを単位としてターゲットノードを決定する。
【0102】
例えば、1つのタスクが4つのサブタスクを含み、各サブタスクは1つのGPUを要求し、分散システムの各ノードの利用可能なGPUの数量は2つであると仮定すると、前記タスクの4つのサブタスクを実行するには少なくとも2つのノードを要求する。したがって、当該タスクが通信集約型タスクであると、当該4つのサブタスクを均等に2つのグループに分割してもよく、ただし、グループ分割をランダムに行ってもよいし、又はサブタスクのリソース要求情報などに基づいて行ってもよい。当該タスクが計算集約型タスクであると、当該4つのサブタスクを4つのグループに分割し、各サブタスクを1つのグループとしてもよい。
【0103】
グループに分割する場合に、オプションとして、上記のサブタスクのターゲットノードの決定は、グループのターゲットノードの決定にも適用され、以下、詳しく説明する。
【0104】
例えば、いくつかの実施例において、前記タスクの少なくとも1つのグループの各グループにいずれも対応するターゲットノードがある場合には、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たすと決定する。別のいくつかの実施例において、前記タスクの少なくとも1つのグループに対応するターゲットノードがない場合には、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たさないと決定する。
【0105】
別の例として、前記分散システムの現在リソース状態情報と前記少なくとも1つのグループの各グループのリソース要求情報とに基づいて、特定の順序に従って前記少なくとも1つのグループの各グループにターゲットノードを順次決定する。グループのリソース要求情報は、グループに含まれる少なくとも1つのサブタスクのリソース要求情報に基づいて決定されてもよく、例えば、グループの要求するリソースは、グループに含まれる全てのサブタスクの要求する同じタイプのリソースの和である。オプションとして、前記特定の順序は、前記複数のグループの優先度及び依存関係のうちの少なくとも1つ、又は他の要因に基づいて決定される。グループの優先度はグループに含まれる2つ以上のサブタスクの優先度に基づいて決定されてもよく、例えば、グループの優先度を2つの以上のサブタスクの最高の優先度として決定し、又はグループの優先度を2つ以上のサブタスクの優先度の平均として決定するなどである。グループ間の依存関係は異なるグループに含まれるサブタスク間の依存関係に基づいて決定されてもよく、例えば、グループ1の1つのサブタスクがグループ2の1つのサブタスクに依存すると仮定すると、グループ1がグループ2に依存すると決定する、などであるが、本開示の実施例はそれに限定されない。
【0106】
いくつかの実施例において、前記分散システムの現在リソース状態情報と各グループのリソース要求情報とに基づいて、前記各グループの事前選択ノード集合を決定し、各グループの事前選択ノード集合から前記グループのターゲットノードを所定の順序に従って順次決定する。
【0107】
本開示の実施例では、まずタスク全体に対してターゲットノードを決定し、例えば、上記の事前選択及び最適選択プロセスを実行し、最終的にタスク全体に対応するターゲットノードの情報を得、その後、タスクをサブタスクレベルに分割してバインドさせ、即ちサブタスクを単位としてターゲットノードのバインドを行う。
【0108】
いくつかの実施例において、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たさない場合に、又は、前記複数のサブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行う。前記遅延割り当ては、次の割り当て周期において前記タスクに含まれる複数のサブタスクを割り当てることであってもよい。次の割り当て周期には、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たす場合にのみ、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てる。次の割り当て周期に分散システムの現在利用可能なリソースがなおも前記タスクの複数のサブタスクの要求する総リソースを満たさない場合、引き続き遅延割り当てを行う。
【0109】
いくつかの実施例において、サブタスク又はグループに対応するターゲットノードが決定するたびに、現在のサブタスク又はグループに対応するターゲットノードへの仮想の割り当て、又は現在のサブタスク又はグループに対応するターゲットノード上のリソースへの仮想のバインドを行う。分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクの要求する総リソースを満たさないと決定する場合に、例えば、あるサブタスクに対応するターゲットノードが見つからない場合に、上記の仮想の割り当て又は仮想のバインドを無効と見なし、これによって対応するターゲットノードとそのリソースを他のタスクに割り当てることができる。
【0110】
いくつかの実施例において、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てた後、前記タスクの複数のサブタスクを同期的にスケジューリングする。
【0111】
なお、本開示の実施例では、割り当てとは、サブタスクを対応するターゲットノードに配ることであり、スケジューリングとは、サブタスクを対応するターゲットノードに配った後、対応するターゲットノードがサブタスクを実行することである。
【0112】
図4に示すように、従来のスケジューリング方法で、ギャングスケジューリング(gang scheduling)を実現するために、スケジューラが順番どおりタスクの複数のサブタスクを処理し、1つのサブタスクがスケジューリング(本開示の実施例で説明するシミュレーション割り当てではなく)できると、直ちに当該サブタスクを対応するターゲットノードに実際に割り当て、ターゲットノード上のリソースを使用して当該サブタスクのスケジューリングを行う。1つのタスクについて、当該タスクの各サブタスクを割り当てる時、現在利用可能なリソースが動的に変化し、漸次減少していくもので、このようなスケジューリング方法をタスクバイタスク(task by task)スケジューリング方法と呼ぶ。さらに、サブタスクのスケジューリングを行う時に、同じタスクの複数のサブタスクのスケジューリング状況とリソース要求を総合的に考慮していないため、各回の割り当てが独立的な挙動である。しかし実際には、同じタスク内の複数のサブタスク間に何らかの関連性があることが多く、例えば、スケジューリングすべきタスクには一般に多くの通信が要求され、1つのタスクの一部のサブタスクが通信オーバーヘッドの大きい複数のノードに割り当てられると、タスク全体の実行効率に大きな影響を与えることになる。
【0113】
本開示の実施例ではタスクを粒度としてサブタスクの割り当て及びスケジューリングを行う。図5に示すように、まずはなおも優先度で全てのタスクを取得し、各タスクについては、タスクの全体を総合的に考慮し、分散システムの現在利用可能なリソースがタスクの複数のサブタスクの要求する総リソースを満たす場合にのみ、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当て、その後、前記複数のサブタスクを同期的にスケジューリングし、即ちタスクを単位としてリソースの割り当て及びスケジューリングを行う。
【0114】
これまでのサブタスクの要求に基づくタスクバイタスク(task by task)スケジューリング方法とは異なり、本開示の実施例ではタスクにノードを選択する際にタスク全体を総合的に考慮しており、タスク全体をスケジューリングの最小単位とすることにより、タスク内の各サブタスクの相互関係及び要求状況をより適切に利用して、タスク全体に対してより適したスケジューリングノードをクラスタから選択することにより、タスクの実行効率とクラスタのリソース利用効率を向上させることができる。
【0115】
図6は、本開示のいくつかの実施例のスケジューリングのロジックの模式図を示す。スケジューリングの複雑さを低減するために、スケジューリングすべき各タスクについて以下のとおり仮定する。
(1)各タスクは、複数のサブタスクを含む。
(2)各サブタスクは、リソース要求が同質であり、即ちリソースの要求が同じである。
(3)各ユーザーが提出するタスクは、提出時に各サブタスクのリソースの要求量を指定しており、タスク全体の処理過程でサブタスクの数量と各サブタスクのリソースの要求量は変わらない。
【0116】
まず事前選択プロセスを行って、ユーザーのタスクを満たさないノードを排除する。具体的には、以下のステップを含む。
(1)タスクの各サブタスクに対して、前記分散システムの現在リソース状態情報と各サブタスクのリソース要求情報とに基づいて、当該サブタスクの事前選択ノード集合をそれぞれ決定してもよい。当該サブタスクの事前選択ノード集合以外のノードは当然のことで当該サブタスクの実行をサポートすることができない。ここで、タスクをジョブ(job)と、サブタスクをtaskと呼んでもよい。異なるサブタスクの事前選択ノード集合は同じであってもよいし、異なってもよい。
【0117】
オプションとしていくつかの例において、前のサブタスクの事前選択ノード集合から、次のサブタスクの事前選択ノードを決定し、ただし、オプションとしてサブタスクの順番はサブタスクの優先度に基づいて決定される。例えば、分散システムがノード1からノード5を含み、1つのタスクがサブタスク1、サブタスク2及びサブタスク3を含むと仮定すると、サブタスク1に事前選択ノードを決定して、例えば、ノード1、ノード2及びノード3である。その後、ノード1、ノード2及びノード3からサブタスク2の事前選択ノードを決定して、例えば、ノード2及びノード3である。次に、ノード2及びノード3からサブタスク3の事前選択ノードを決定して、例えば、ノード3である。このような事前選択ノード集合の決定方法により、一定の通信量を要求するタスク、とりわけ通信集約型タスクである場合に、事前選択ノード集合の決定効率を向上させ、タスク割り当ての効率を向上させることができる。
【0118】
(2)事前選択ノード集合の各事前選択ノードを検証して、当該事前選択ノード上の総リソースが、当該事前選択ノードに割り当てられた全てのサブタスクの総リソース要求を満たすかどうかを決定する。満たす場合に、最適選択プロセスを行い、そうでなければ、改めて事前選択プロセスを行う。
【0119】
当該ステップはオプションで、事前選択ノードの検証でタスク割り当ての全体的な信頼性を向上させることができる。事前選択プロセスを行う前に、ノード集合の分割を行い、即ち、各ノードをグループに分割してもよく、グループ分割の基準はノードの属するクラスタであってもよく、即ち、異なるクラスタ上のノードを異なるグループに分割する。ノード集合の分割を行うと、異なるタスクは特定のグループのノードに割り当てられる。
【0120】
その後、最適選択プロセスを行って、ユーザーのタスクに最適なターゲットノードを選択する。具体的には、以下のステップを含んでもよい。
(1)ユーザーのタスクにおけるユーザー提供の情報とスケジューラの過去の経験とから、タスクのトレーニング過程の計算量及び通信量を得て、計算量と通信量とに基づいてユーザーのタスクが計算集約型かそれとも通信集約型かを判断する。
【0121】
オプションとしていくつかの例において、タスクタイプの決定は上記の事前選択プロセス中に又は事前選択プロセスの前に実行されてもよく、タスクタイプに基づいてサブタスクの事前選択ノード集合を決定する。
【0122】
オプションとしていくつかの例において、タスクタイプに基づいて、最適選択プロセスで複数のサブタスクのターゲットノードを決定する。通信集約型タスクである場合、当該タスクを最小数の物理ノード(即ちターゲットノード)に配置し(割り当て)、具体的には、割り当てられる物理ノードの数量は、ノードの利用可能なリソースとタスクの要求するリソースとの両方から決定され、上記の配置要件を満たさないと、タスクの複数のサブタスクの全てに対して遅延割り当てを行う。計算集約型タスクである場合、上記の配置制約を緩和して、物理ノードが最も少ないことを満たさなくても、タスクの要求を満たす十分なリソースを持つノードが選択できれば割り当てを行い、そうでなければ遅延割り当てを行う。
【0123】
(2)クラスタノードを余剰のリソースに応じて大から小までにスコアリングしてソートし、事前選択ノード集合からタスクへのマッピングのスコアを得、事前選択ノードのスコアは分散システムのクラスタのノード負荷とノードリソース断片化状況とに基づいて決定されてもよい。ノード負荷とは、クラスタの各ノードにおける、現時点で利用可能なリソース総量とリソースの使用量である。リソース断片化状況とは、ノード上のリソースの分布である。
【0124】
(3)前記ステップで選択した全てのノードについて、配置できないか、又はジョブ内の全てのタスクが配置されるまで、スコアの高い順(高スコアから低スコアの順)にジョブのtaskを順次配置する。
【0125】
(4)タスクの状態をチェックする。ジョブには配置されていない余剰のtaskがある場合、クラスタリソースが不十分であり、割り当てに失敗することを示す。タスクが占有しているリソースを解放して、遅延割り当てを行う。ジョブ(job)に余剰のtaskがなく、しかもタスクタイプが通信集約型である場合、最小ノード数の要求を満たすかどうかを判断する。満たすと、割り当てに成功し、満たさないと、割り当てに失敗し、リソースを解放して遅延割り当てを行う。
【0126】
本開示の実施例の方法はタスクスケジューリングシステム又はクラウドプラットフォームに適用され、前記タスクスケジューリングシステムはクバネティス(Kubernetes)などのプラットフォームに基づいて実現されてもよい。
【0127】
当業者が理解できるように、前記方法の具体的な実施形態では、各ステップが特定の順序に記載されているものの、当該順番での実行が必須で実施が限定されるものではなく、各ステップの実行の順番はその機能及び内部のロジックによって決定される。
【0128】
図7に示すように、本開示の実施例では、
タスク情報を取得するための取得モジュールであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含む取得モジュール701と、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるための第1割り当てモジュール702とを含むタスクスケジューリング装置がさらに提供される。
【0129】
いくつかの実施例において、前記タスクのリソース要求情報は前記タスクに含まれる複数のサブタスクのリソース要求情報であり、当該第1割り当てモジュール702は、さらに、分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるために用いられる。
【0130】
いくつかの実施例において、前記装置は、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するための第1決定モジュールをさらに含み、前記第1割り当てモジュールは、前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるために用いられる。
【0131】
いくつかの実施例において、前記装置は、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するための第1決定モジュールをさらに含み、前記第1割り当てモジュールは、前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるために用いられる。
【0132】
いくつかの実施例において、前記第1決定モジュールは、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、複数のサブタスクに対応するターゲットノードを特定の順序に従って順次決定するために用いられる。
【0133】
オプションとして一例において、前記複数のサブタスクのリソース要求情報は前記複数のサブタスクの各サブタスクのリソース要求情報を含み、ただし、前記リソース要求情報は要求するリソースタイプ及び各タイプのリソースの数量を含み、又はさらに他の情報を含む。
【0134】
オプションとして一例において、前記分散システムの現在リソース状態情報は前記分散システムの複数のノードの現在状態情報を含み、ただし、現在状態情報はリソースが利用可能かどうか、利用可能なリソースのタイプと数量、負荷状況、トポロジ接続情報のうちの少なくとも1種を示すために用いられ、又はさらに他の情報を含む。
【0135】
いくつかの実施例において、前記装置は、1つのサブタスクに割り当てるターゲットノードが決定するたびに、分散システムの現在リソース状態情報を更新し、更新された現在リソース状態情報に基づいて次のサブタスクに対応するターゲットノードを決定するための更新モジュールをさらに含む。
【0136】
いくつかの実施例において、前記複数のサブタスクのターゲットノードを順次決定する順序は、サブタスクの優先度とサブタスク間の依存関係とのうちの少なくとも1つから得られる。
【0137】
いくつかの実施例において、前記第1決定モジュールは、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを順次決定するための第1決定ユニットと、1つのサブタスクのターゲットノードが決定するたびに、前記1つのサブタスクのリソース要求情報に基づいて、前記分散システムの現在リソース状態情報を更新するための更新ユニットとを含む。
【0138】
いくつかの実施例において、前記装置は、前記複数のサブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求するリソースを満たさないと決定するための第2決定モジュールをさらに含む。
【0139】
いくつかの実施例において、前記第1決定ユニットは、前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するための決定サブユニットと、前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するための選択サブユニットとを含む。
【0140】
異なるサブタスクの事前選択ノード集合は同じであってもよいし、異なってもよい。いくつかの例において、複数のサブタスクは同じ事前選択ノード集合を有する。
【0141】
いくつかの実施例において、前記決定サブユニットは、前記分散システムの現在リソース状態情報と各サブタスクのリソース要求情報とに基づいて、前記各サブタスクの事前選択ノード集合を決定するために用いられる。
【0142】
複数のサブタスクの事前選択ノード集合の決定は独立的で、互いに依存関係のないものであってもよく、例えば、並行して実行し又は任意の順番で実行する。例えば、複数のサブタスクの事前選択ノード集合は同じ分散システムの現在リソース状態情報に基づいて決定され、つまり、分散システムの現在リソース状態情報は事前選択の過程で更新されない。例えば、各サブタスクの事前選択ノード集合の決定は自らのリソース要求情報にしか関係がなく、他のサブタスクのリソース要求情報とは無関係である。
【0143】
いくつかの実施例において、前記決定サブユニットは、前記複数のサブタスクの各サブタスクの事前選択ノード集合を特定の順序に従って順次決定するために用いられ、ただし、前記複数のサブタスクの第1サブタスクの事前選択ノード集合の事前選択ノードは前記複数のサブタスクの第2サブタスクの事前選択ノード集合から選択され、ただし、前記第2サブタスクの順位は前記第1サブタスクの前に位置する。
【0144】
いくつかの実施例において、前記複数のサブタスクの各サブタスクの事前選択ノードから前記各サブタスクのターゲットノードを特定の順序に従って順次選択し、ただし、前記複数のサブタスクの第2サブタスクのターゲットノードを前記複数のサブタスクの第1サブタスクのターゲットノードとして優先的に選択し、ただし、前記第2サブタスクの順位は前記第1サブタスクの前に位置する。
【0145】
いくつかの実施例において、前記選択サブユニットは、前記分散システムの現在リソース状態情報に基づいて、前記複数のサブタスクの第1サブタスクの事前選択ノード集合から前記第1サブタスクのターゲットノードを決定し、前記第1サブタスクのリソース要求情報に基づいて、前記分散システムの現在リソース状態情報を更新し、前記分散システムの更新された現在リソース状態情報に基づいて、前記複数のサブタスクの第2サブタスクの事前選択ノード集合から前記第2サブタスクのターゲットノードを決定するために用いられる。
【0146】
オプションとして一例において、第1サブタスクの事前選択ノード集合の各事前選択ノードの現在状態情報に基づいて、前記第1サブタスクの事前選択ノード集合から前記第1サブタスクのターゲットノードを決定し、前記第1サブタスクのリソース要求情報に基づいて、前記第1サブタスクのターゲットノードの現在状態情報を更新する。
【0147】
いくつかの実施例において、前記選択サブユニットは、前記タスクのタスクタイプに基づいて、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアを決定し、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアに基づいて、前記各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するために用いられる。
【0148】
オプションとして一例において、前記タスクのタスクタイプに基づいて、前記事前選択ノード集合の各事前選択ノードのスコア決定方式を決定する。
【0149】
いくつかの実施例において、前記装置は、前記タスクのタスクタイプを決定するための第3決定モジュールをさらに含み、ただし、前記複数のサブタスクに対応するターゲットノードは前記タスクのタスクタイプに基づいて決定される。
【0150】
いくつかの実施例において、前記第1割り当てモジュールは、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するためのグループ分割ユニットであって、各グループは前記複数のサブタスクの少なくとも1つのサブタスクを含むグループ分割ユニットと、前記少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当てるための割り当てユニットであって、同じグループの各サブタスクは同じターゲットノードに割り当てられる割り当てユニットとを含む。
【0151】
いくつかの実施例において、前記グループ分割ユニットは、前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するために用いられる。
【0152】
いくつかの実施例において、前記タスクのタスクタイプは計算集約型又は通信集約型である。
【0153】
いくつかの実施例において、前記グループ分割ユニットは、前記タスクのタスクタイプが通信集約型である場合に、前記タスクの複数のサブタスクのリソース要求情報に基づいて、前記複数のサブタスクの要求する総ノード数量を決定し、前記総ノード数量に基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するために用いられる。
【0154】
いくつかの実施例において、前記タスクのタスクタイプが計算集約型である場合に、前記複数のサブタスクの各サブタスクを1つのグループとする。
【0155】
いくつかの実施例において、前記少なくとも1つのグループの各グループにそれぞれ事前選択ノード集合を決定し、前記少なくとも1つのグループの各グループの事前選択ノード集合から前記グループのターゲットノードを順次選択する。
【0156】
いくつかの実施例において、前記第1割り当てモジュールは、前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクにターゲットノードを決定し、前記タスクの複数のサブタスクのそれぞれについて対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクにターゲットノードを割り当てるためにも用いられる。
【0157】
いくつかの実施例において、前記装置は、前記サブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記タスクの複数のサブタスクの全てに対して遅延割り当てを行うための遅延モジュールをさらに含む。
【0158】
いくつかの実施例において、前記遅延モジュールは分散システムの現在利用可能なリソースが前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たさない場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行う。
【0159】
いくつかの実施例において、前記装置は、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てた後、前記タスクの複数のサブタスクを同期的にスケジューリングするためのスケジューリングモジュールをさらに含む。
【0160】
いくつかの実施例において、前記装置はタスクスケジューリングシステムに適用される。
【0161】
いくつかの実施例において、本開示の実施例に係る装置の備える機能又はモジュールは上記の方法実施例で説明した方法を実行するために用いることができ、その実現の詳細は上記の方法実施例の説明を参照することができ、ここで簡素化のために説明を省略する。
【0162】
上記で説明した装置実施例は例示的なもので、分離するコンポーネントとして説明される前記モジュールは物理的に分離するものであってもよいし、そうでないものでもよく、モジュールとして表示するコンポーネントは物理的なモジュールであってもよいし、そうでなくてもよく、即ち同じ場所に位置してもよいし、又は複数のネットワークモジュールに分散してもよい。実際のニーズに応じて前記モジュールの一部又は全てを選択して本明細書の技術案の目的を達成することができる。当業者は新規性のある作業をしなくても、これを理解及び実施することができる。
【0163】
本明細書の装置実施例は、例えば、サーバー又は端末機器などのコンピュータデバイスに用いることができる。装置実施例はソフトウェアによって実施することができ、ハードウェア又はソフトウェアとハードウェアの組み合わせで実施することができる。ソフトウェアによる実施を例とすると、ロジック的に成り立つ装置としては、それが位置するファイルを処理するプロセッサによって不揮発性メモリ中の対応するコンピュータプログラム命令をメモリに読み取って、メモリからプロセッサに読み取って動作させることで構成される。ハードウェアレベルからみると、図8に示すように、本明細書の装置を含むコンピュータデバイスのハードウェア構造図であり、図8に示すプロセッサ801、メモリ802、ネットワークインタフェース803、及び不揮発性メモリ804の他にも、実施例の装置の位置するサーバー又は電子機器には、一般に当該コンピュータデバイスの実際の機能によって、他のハードウェアを含んでもよく、ここでその方の説明を省略する。
【0164】
そして、本開示の実施例では、コンピュータプログラムが記憶されており、当該プログラムがプロセッサによって実行されるといずれの実施例に記載の方法が実現されるコンピュータ記憶媒体がさらに提供される。
【0165】
そして、本開示の実施例では、メモリと、プロセッサと、メモリに記憶されプロセッサにおいて動作可能なコンピュータプログラムとを含み、前記プロセッサが前記プログラムを実行するといずれの実施例に記載の方法を実施するコンピュータデバイスがさらに提供される。
【0166】
本開示は、プログラムコードを含む1つ又は複数の記憶媒体(ディスク型記憶装置、CD-ROM、光学記憶装置などを含み、ただしそれらに限定されない)において実施するコンピュータプログラム製品とすることができる。コンピュータ可読記憶媒体は、任意の方法又は技術で情報の記憶を実現できる永久の及び一時的な、移動可能な及び移動できない媒体を含む。情報はコンピュータ可読命令、データ構造、プログラムモジュール又は他のデータであってもよい。コンピュータの記憶媒体の例は、相変化メモリ(PRAM)、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、他のタイプのランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、電気的に消去可能なプログラム可能な読み取り専用メモリ(EEPROM)、フラッシュメモリ又は他のメモリ技術、光ディスク(CD-ROM)、デジタル多用途ディスク(DVD)又は他の光学記憶装置、磁気カセット、磁気テープストレージ又は他の磁気記憶機器、又は任意の他の非送信用媒体を含み、ただしそれらに限定されず、計算機器がアクセスできる情報を記憶するために用いられる。
【0167】
当業者がここに開示する明細書を読んでこれを実施すると、本開示の他の実施形態に想到しやすい。本開示にはその任意の変形、用途又は適応的な変更を含み、これらの変形、用途又は適応的な変更は本開示の趣旨に合致するもので、本開示には開示されていない本技術分野の周知の常識又は通常の技術的手段を含む。本明細書及び実施例は例示的なもので、本開示の範囲と趣旨は特許請求の範囲によって限定される。
【0168】
なお、本開示は上記で説明し図面に示す正確な構造には限定されず、その範囲を逸脱しなければ様々な補正と変更を行うことができる。本開示の範囲を限定するのは特許請求の範囲である。
【0169】
上記したのが本開示の好ましい実施例に過ぎず、本開示の限定にならない。本開示の趣旨を逸脱することなく任意の補正、同等な置き換え、改善などを行う場合は、そのいずれも本開示の保護範囲に含まれる。
図1
図2
図3A
図3B
図4
図5
図6
図7
図8
【手続補正書】
【提出日】2022-01-25
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
タスク情報を取得するステップであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含むステップと、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップと、を含む
ことを特徴とするタスクスケジューリング方法。
【請求項2】
前記タスクのリソース要求情報は前記タスクに含まれる複数のサブタスクのリソース要求情報であり、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップを含む
ことを特徴とする請求項1に記載の方法。
【請求項3】
前記分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たす場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップと、
前記複数のサブタスクの各サブタスクに対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップと、
前記複数のサブタスクの少なくとも1つのサブタスクに対応するターゲットノードを決定することに成功しなかった場合に、前記分散システムの現在利用可能なリソースが前記複数のサブタスクの各サブタスクの要求するリソースを満たさないと決定するステップと、を含む
ことを特徴とする請求項2に記載の方法。
【請求項4】
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップは、
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを順次決定するステップと、
1つのサブタスクのターゲットノードが決定するたびに、前記1つのサブタスクのリソース要求情報に基づいて、前記分散システムの現在リソース状態情報を更新するステップと、を含む
ことを特徴とする請求項3に記載の方法。
【請求項5】
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクにターゲットノードを決定するステップは、
前記分散システムの現在リソース状態情報と前記複数のサブタスクのリソース要求情報とに基づいて、前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップと、
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップと、を含む
ことを特徴とする請求項3又は4に記載の方法。
【請求項6】
前記複数のサブタスクの各サブタスクの事前選択ノード集合を決定するステップは、
前記複数のサブタスクの各サブタスクの事前選択ノード集合を特定の順序に従って順次決定するステップであって、前記複数のサブタスクの第1サブタスクの事前選択ノード集合の事前選択ノードは前記複数のサブタスクの第2サブタスクの事前選択ノード集合から選択され、前記第2サブタスクの順序は前記第1サブタスクの前に位置するステップを含む
ことを特徴とする請求項に記載の方法。
【請求項7】
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップは、
前記複数のサブタスクの各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを特定の順序に従って順次選択するステップであって、前記複数のサブタスクの第2サブタスクのターゲットノードを前記複数のサブタスクの第1サブタスクのターゲットノードとして優先的に選択し、前記第2サブタスクの順序は前記第1サブタスクの前に位置するステップ
又は、
前記タスクのタスクタイプに基づいて、各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアを決定し
前記各サブタスクの事前選択ノード集合に含まれる事前選択ノードのスコアに基づいて、前記各サブタスクの事前選択ノード集合から前記各サブタスクのターゲットノードを選択するステップと、を含む
ことを特徴とする請求項5又は6に記載の方法。
【請求項8】
前記複数のサブタスクにターゲットノードを順次決定する順序は、サブタスクの優先度とサブタスク間の依存関係とのうちの少なくとも1つに基づいて決定される
ことを特徴とする請求項3からのいずれか1項に記載の方法。
【請求項9】
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクのタスクタイプを決定するステップと、
前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップと、を含む
ことを特徴とする請求項1からのいずれか1項に記載の方法。
【請求項10】
前記タスクのタスクタイプに基づいて、前記タスクの複数に含まれるサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップであって、各グループは前記複数のサブタスクの少なくとも1つのサブタスクを含むステップと、
前記少なくとも1つのグループの各グループに、それぞれ対応するターゲットノードを割り当てるステップであって、同じグループの各サブタスクは同じターゲットノードに割り当てられるステップと、を含む
ことを特徴とする請求項に記載の方法。
【請求項11】
前記タスクのタスクタイプは、計算集約型又は通信集約型であり、
前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップは、
前記タスクのタスクタイプが通信集約型である場合に、前記タスクの複数のサブタスクのリソース要求情報に基づいて、前記複数のサブタスクの要求する総ノード数量を決定し、前記総ノード数量に基づいて、前記タスクの複数のサブタスクを少なくとも1つのグループに分割するステップ、
及び/又は、
前記タスクのタスクタイプが計算集約型である場合に、前記複数のサブタスクの各サブタスクを1つのグループとするステップ、を含む
ことを特徴とする請求項10に記載の方法。
【請求項12】
前記タスクのタスクタイプに基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるステップは、
前記タスクのタスクタイプに基づいて、前記タスクの複数のサブタスクにターゲットノードを決定するステップと、
前記タスクの複数のサブタスクのそれぞれについて対応するターゲットノードを決定することに成功した場合に、前記タスクに含まれる複数のサブタスクにターゲットノードを割り当てるステップと、
前記サブタスクの少なくとも1つのサブタスクについて対応するターゲットノードを決定することに成功しなかった場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行うステップと、を含む
ことを特徴とする請求項9から11のいずれか1項に記載の方法。
【請求項13】
分散システムの現在利用可能なリソースが、前記タスクの複数のサブタスクのリソース要求情報に対応する総リソースを満たさない場合に、前記タスクに含まれる複数のサブタスクの全てに対して遅延割り当てを行うステップをさらに含む
ことを特徴とする請求項2から12のいずれか1項に記載の方法。
【請求項14】
タスク情報を取得するための取得モジュールであって、前記タスク情報は前記タスクのタスクタイプ及び前記タスクのリソース要求情報のうちの少なくとも一方を含む取得モジュールと、
前記タスク情報に基づいて、前記タスクに含まれる複数のサブタスクに、それぞれ対応するターゲットノードを割り当てるための第1割り当てモジュールと、を含む
ことを特徴とするタスクスケジューリング装置。
【請求項15】
コンピュータプログラムが記憶されているコンピュータ可読記憶媒体であって、前記プログラムがプロセッサによって実行されると請求項1から13のいずれか1項に記載の方法が実施される
ことを特徴とするコンピュータ可読記憶媒体。
【請求項16】
メモリと、プロセッサと、前記メモリに記憶され前記プロセッサにおいて動作可能なコンピュータプログラムとを含むコンピュータデバイスであって、前記プロセッサが前記プログラムを実行すると請求項1から13のいずれか1項に記載の方法を実施する
ことを特徴とするコンピュータデバイス。
【国際調査報告】