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

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

▶ インターナショナル・ビジネス・マシーンズ・コーポレーションの特許一覧

特許7393847パイプラインにおけるタスクの並列度の動的な変更
<>
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図1
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図2
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図3A
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図3B
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図3C
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図4
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図5
  • 特許-パイプラインにおけるタスクの並列度の動的な変更 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-29
(45)【発行日】2023-12-07
(54)【発明の名称】パイプラインにおけるタスクの並列度の動的な変更
(51)【国際特許分類】
   G06F 9/50 20060101AFI20231130BHJP
【FI】
G06F9/50 120A
G06F9/50 150E
【請求項の数】 20
(21)【出願番号】P 2022523363
(86)(22)【出願日】2020-10-21
(65)【公表番号】
(43)【公表日】2023-01-04
(86)【国際出願番号】 IB2020059894
(87)【国際公開番号】W WO2021079285
(87)【国際公開日】2021-04-29
【審査請求日】2023-03-24
(31)【優先権主張番号】16/663,428
(32)【優先日】2019-10-25
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【弁理士】
【氏名又は名称】太佐 種一
(72)【発明者】
【氏名】セイレット,ヤニック
(72)【発明者】
【氏名】カブラ,ナミット
(72)【発明者】
【氏名】グプタ,リテッシュ
【審査官】田中 幸雄
(56)【参考文献】
【文献】特開2009-129447(JP,A)
【文献】特開2002-132543(JP,A)
【文献】特開2009-54003(JP,A)
【文献】特開2019-125093(JP,A)
【文献】特開2017-49685(JP,A)
【文献】米国特許出願公開第2014/0282570(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
パイプラインにおけるタスクの並列度を動的に変更するためのコンピュータ実装方法であって、
1または複数のコンピュータ・プロセッサによって、データ処理ジョブのための動的パイプラインの複数のステージの各ステージの最適実行時間を計算するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの実際の実行時間を決定するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの完了の実際の時間が閾値を超えるか否かを判定するステップと、
前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えると判定したことに応答して、1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の追加インスタンスを作成するステップであって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の追加インスタンスは、前記データ処理ジョブの前記完了の実際の時間を削減する、作成するステップと
を含む、コンピュータ実装方法。
【請求項2】
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えるか否かを判定するステップは、さらに、
機械学習モデルを用いて、前記データ処理ジョブの前記完了の実際の時間を予測するステップ
を含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
1または複数のコンピュータ・プロセッサによって、1または複数の外れ値データ点を判定するステップであって、前記1または複数の外れ値データ点は、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの前記実際の実行時間が前記最適実行時間とは相違するパイプライン・ステージを識別するステップと、
1または複数のコンピュータ・プロセッサによって、前記1または複数の外れ値データ点に基づいて、前記データ処理ジョブの前記完了の予測時間が前記閾値を超えるか否かを判定するステップと
を含む、請求項1または2に記載のコンピュータ実装方法。
【請求項4】
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するステップは、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の第1の追加インスタンスを生成するのに十分なリソースが利用可能であるか否かを判定するステップと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成するのに十分な前記リソースが利用可能であると判定したことに応答して、1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成するステップと、
1または複数のコンピュータ・プロセッサによって、パイプラインデータを、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の第1の追加インスタンスに分割するステップと
含む、請求項1~3のいずれか1項に記載のコンピュータ実装方法。
【請求項5】
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するステップは、さらに、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定するステップと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したと判定されたことに応答して、1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の1または複数の第2の追加インスタンスを生成するステップと
を含む、請求項4に記載のコンピュータ実装方法。
【請求項6】
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するステップは、さらに、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加していない判定されたことに応答して、1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスを除去するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブの前記動的パイプラインの現在の構成を格納するステップと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブの前記動的パイプラインの挙動を予測するための決定木モデルを訓練するステップと
を含む、請求項4または5に記載のコンピュータ実装方法。
【請求項7】
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するステップは、さらに、
機械学習の決定木モデルを用いて、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスの最適な構成を予測するステップ
を含む、請求項4~6のいずれか1項に記載のコンピュータ実装方法。
【請求項8】
パイプラインにおけるタスクの並列度を動的に変更するためのコンピュータ・プログラムであって、コンピュータに、
データ処理ジョブのための動的パイプラインの複数のステージの各ステージの最適実行時間を計算することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの実際の実行時間を決定することと
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの完了の実際の時間が閾値を超えるか否かを判定することと、
前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えると判定したことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の追加インスタンスを作成することであって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の追加インスタンスは、前記データ処理ジョブの前記完了の実際の時間を削減する、前記作成すること、
を実行させるためのコンピュータ・プログラム
【請求項9】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えるか否かを判定することは、さらに、
機械学習モデルを用いて、前記データ処理ジョブの前記完了の実際の時間を予測すること
を含む、請求項8に記載のコンピュータ・プログラム
【請求項10】
前記コンピュータに、
1または複数の外れ値データ点を判定することであって、前記1または複数の外れ値データ点は、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの前記実際の実行時間が前記最適実行時間とは相違するパイプライン・ステージを識別する、前記1または複数の外れ値データ点を決定することと、
前記1または複数の外れ値データ点に基づいて、前記データ処理ジョブの前記完了の予測時間が前記閾値を超えるか否かを判定すること
をさらに実行させる、請求項8または9に記載のコンピュータ・プログラム
【請求項11】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成することは、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の第1の追加インスタンスを生成するのに十分なリソースが利用可能であるか否かを判定することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成するのに十分な前記リソースが利用可能であると判定したことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成することと、
パイプラインデータを、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の第1の追加インスタンスに分割すること
を含む、請求項8~10のいずれか1項に記載のコンピュータ・プログラム
【請求項12】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成することは、さらに、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したと判定されたことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の1または複数の第2の追加インスタンスを生成することと
を含む、請求項11に記載のコンピュータ・プログラム
【請求項13】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するためのことは、さらに、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定することと、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加していない判定されたことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスを除去することと、
前記データ処理ジョブの前記動的パイプラインの現在の構成を格納することと、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブの前記動的パイプラインの挙動を予測するための決定木モデルを訓練すること
を含む、請求項11または12に記載のコンピュータ・プログラム
【請求項14】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成することは、さらに、
機械学習の決定木モデルを用いて、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスの最適な構成を予測すること
を含む、請求項11~13のいずれか1項に記載のコンピュータ・プログラム
【請求項15】
パイプラインにおけるタスクの並列度を動的に変更するためのコンピュータ・システムであって、
前記コンピュータ・システム
1または複数のコンピュータ・プロセッサと、
1または複数のコンピュータ可読ストレージ媒体と、
前記1または複数のコンピュータ可読ストレージ媒体に格納され、前記1または複数のコンピュータ・プロセッサのうちの少なくとも1つによる実行のためのプログラム命令と
を含み、格納される前記プログラム命令は、
データ処理ジョブのための動的パイプラインの複数のステージの各ステージの最適実行時間を計算するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの実際の実行時間を決定するためのプログラム命令と
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの完了の実際の時間が閾値を超えるか否かを判定するためのプログラム命令と、
前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えると判定したことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の追加インスタンスを作成するためのプログラム命令であって、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の追加インスタンスは、前記データ処理ジョブの前記完了の実際の時間を削減する、前記作成するためのプログラム命令と
を含む、コンピュータ・システム。
【請求項16】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージの各ステージの前記実際の実行時間に基づいて、前記データ処理ジョブの前記完了の実際の時間が前記閾値を超えるか否かを判定するためのプログラム命令は、さらに、
機械学習モデルを用いて、前記データ処理ジョブの前記完了の実際の時間を予測することを含む、請求項15に記載のコンピュータ・システム。
【請求項17】
1または複数の外れ値データ点を判定するためのプログラム命令であって、前記1または複数の外れ値データ点は、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの前記実際の実行時間が前記最適実行時間とは相違するパイプライン・ステージを識別する、前記1または複数の外れ値データ点を決定するためのプログラム命令と、
前記1または複数の外れ値データ点に基づいて、前記データ処理ジョブの前記完了の予測時間が前記閾値を超えるか否かを判定するためのプログラム命令と
を含む、請求項15または16に記載のコンピュータ・システム。
【請求項18】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するためのプログラム命令は、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について1または複数の第1の追加インスタンスを生成するのに十分なリソースが利用可能であるか否かを判定するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成するのに十分な前記リソースが利用可能であると判定したことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の第1の追加インスタンスを生成するためのプログラム命令と、
パイプラインデータを、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上についての前記1または複数の第1の追加インスタンスに分割するプログラム命令と
を含む、請求項15~17のいずれか1項に記載のコンピュータ・システム。
【請求項19】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するためのプログラム命令は、さらに、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したと判定されたことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の1または複数の第2の追加インスタンスを生成するためのプログラム命令と
を含む、請求項18に記載のコンピュータ・システム。
【請求項20】
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上について前記1または複数の追加インスタンスを作成するためのプログラム命令は、さらに、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスのスループットを測定するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加したか否かを判定するためのプログラム命令と、
前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスの前記スループットが増加していない判定されたことに応答して、前記データ処理ジョブのための前記動的パイプラインの前記複数のステージのうちの1以上の前記1または複数の第1の追加インスタンスを除去するためのプログラム命令と、
前記データ処理ジョブの前記動的パイプラインの現在の構成を格納するためのプログラム命令と、
1または複数のコンピュータ・プロセッサによって、前記データ処理ジョブの前記動的パイプラインの挙動を予測するための決定木モデルを訓練するためのプログラム命令と
を含む、請求項18または19に記載のコンピュータ・システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パイプライン命令を使用する技術分野に関し、より詳細には、パイプラインにおける特定のタスクの並列度を動的に識別および変更することに関する。
【背景技術】
【0002】
コンピューティングにおいて、パイプラインは、1つのステージの出力が次のステージの入力になる、直列に接続されたデータ処理要素のセットである。処理パイプラインは、概念的には、並列に実行され、1つのステージの出力ストリームが自動的に次のステージの入力ストリームとして供給される。例えば、Linux(登録商標)のシステムコールのpipeは、この概念の古典的な例である。
【0003】
パイプラインのスループットは、その最も低い要素のスループットよりも良くはなり得ないため、設計者は、各ステージがそのタスクを完了するまでの同量の時間がかかるように、各ステージの中でワークおよびリソースを分割することを試みる。あるステージが他のステージよりも長くかかる場合、設計者は、2以上の処理要素を提供し、単一の入力バッファでそのステージのすべてのインスタンスに供給し、かつ、単一の出力バッファでそのステージのすべてのインスタンスからの結果を受信しながら、そのステージを並列に実行する。パイプラインの各インスタンスがその現在のデータアイテムを処理し終えると、インスタンスは、そのステージの共通の出力バッファに結果を渡し、そのステージの共通の入力バッファから次のデータアイテムを取得する。
【0004】
現在の技術水準は、限界を有している。典型的には、タスク(またはジョブまたはラン)の分割数および並列度は、実行の開始時に決定される。重要リソースに対して、より多くのプロセスを動的に生成することについて、いくつかの研究がなされてきた。この問題は、どの程度の並列度が、コストを法外なものとすることなく性能を改善するであろうかを決定することである。例えば、ソート・オペレーションにおける並列度が、あまり有用ではない可能性がある一方で、いくつかの他のオペレーションについては、追加の並列度が助けになるであろう。多くの場合、遅延は、ワークロードに基づいており、したがって、多くの場合、ジョブの開始時に最良の構成を予測することができないことに留意されたい。現在、データパイプラインの並列度のについて良好な開始時の構成を予測または提案する先行技術は存在しない。現在の技術水準においては、並列度の使用を最適化するために機械学習を利用することは行われていない。現在の技術水準において対処されていない他の領域は、多くのサービス水準合意(SLA)が、満たすべきQoS条件を含むところ、ジョブのサービス品質(QoS)を保証することである。
【発明の概要】
【0005】
本発明の実施形態は、パイプラインにおける特定のタスクの並列度を動的に識別し、かつ、変更するための方法、コンピュータ・プログラム製品およびシステムを開示する。一実施形態においては、動的パイプラインの各ステージの最適実行時間が計算される。動的パイプラインにおける各ステージの実際の実行時間が測定される。データ処理ジョブの完了の実際の時間が閾値を超えるか否かが判定される。データ処理ジョブの完了の実際の時間が閾値を超えると判定された場合、ステージの追加のインスタンスが作成される。
【0006】
一実施形態においては、サービス品質に負の影響を与えるパイプライン・ステージの1または複数の新たなインスタンスを生成(spawn)するのに十分なリソースが利用可能であるか否かが判定される。パイプライン・ステージの1または複数の新たなインスタンスを生成するのに十分なリソースが利用可能であると判定されたことに応答して、パイプライン・ステージの新たなインスタンスが生成される。パイプラインデータは、パイプライン・ステージの1または複数の新たなインスタンスに分割される。
【0007】
一実施形態においては、1以上のパイプライン・ステージの1または複数の新たな第1のインスタンスのスループットが測定される。パイプライン・ステージの新たなインスタンスのスループットが増加したか否かが判定される。パイプライン・ステージの新たなインスタンスのスループットが増加したと判定されたことに応答して、パイプライン・ステージの追加の新たなインスタンスが生成される。
【0008】
一実施形態においては、1以上のパイプライン・ステージの1または複数の新たなインスタンスのスループットが測定される。パイプライン・ステージの新たなインスタンスのスループットが増加したか否かが判定される。パイプライン・ステージの新たなインスタンスのスループットが増加していないと判定されたことに応答して、パイプライン・ステージの新たなインスタンスが除去される。データ処理ジョブの動的パイプラインの現在の構成が格納される。データ処理ジョブの動的パイプラインの挙動を予測するための決定木モデルが訓練される。
【図面の簡単な説明】
【0009】
図1】本発明の実施形態による、分散データ処理環境を図示する機能ブロック図。
図2】本発明の実施形態による、パイプライン・データフロー・モデルの例を示す。
図3A】本発明の実施形態による、オペレーションにおける3ステージ・パイプラインの初期構成の例を示す。
図3B】本発明の実施形態による、オペレーションにおける3ステージ・パイプラインの中間構成の例を示す。
図3C】本発明の実施形態による、オペレーションにおける3ステージ・パイプラインの他の中間構成の例を示す。
図4】本発明の実施形態による、パイプラインにおける特定のタスクの並列度を動的に識別しかつ変更するための図1の分散データ処理環境内のコンピューティング・デバイス上の動的パイプライン・プログラムの動作ステップを示すフローチャート。
図5】本発明の実施形態による、パイプラインにおける特定のタスクの並列度を動的に識別しかつ変更するための図1の分散データ処理環境内のコンピューティング・デバイス上の図4のフローチャートのステップ416において追加のインスタンスをインテリジェント生成(intelligent spawning)する動作ステップを示すフローチャート。
図6】本発明の実施形態による、図1の分散データ処理環境内で動的パイプライン・プログラムを実行するコンピューティング・デバイスのコンポーネントのブロック図。
【発明を実施するための形態】
【0010】
データパイプラインまたはデータ処理パイプラインとしても知られるパイプラインは、1つのオペレーション(operation)の出力が次のオペレーションの入力になる、直列に接続されたデータ処理オペレーションのセットである。パイプラインの要素は、多くの場合、並列に実行されるかまたは時分割された様式で実行される。データ処理ワークフローは、XがステージX-1の出力を処理し、その出力をステージX+1に渡す、いくつかの処理オペレータ(operator)から構成される。入力負荷およびSLAの条項などの要因に基づいて、特定のワークフローに対する並列度の数量が事前定義される。
【0011】
現在の技術水準は、限界を有している。典型的には、タスク(またはジョブまたはラン)の分割数および並列度は、実行の開始時に決定される。重要リソースに対してより多くのプロセスを動的に生成することについていくつかの研究がなされてきた。この問題は、どれだけの並列度が、コストを法外なものとすることなく性能を改善するであろうかを決定することである。例えば、ソート・オペレーションにおける並列度があまり有用ではない可能性がある一方で、いくつかの他のオペレーションにとっては追加の並列度が助けになるであろう。現在の技術水準においては、並列度の使用を最適化するために機械学習を利用することは行われていない。
【0012】
現在の技術水準において対処されていない他の領域は、多くのサービス水準合意(SLA)が、満たされるべきQoS条件を含むところ、ジョブのサービス品質(QoS)を保証することである。例えば、SLAにおいてQoS条件が課せられる対象となる可能性のあるオペレーションの共通のタイプは、抽出(Extract)-変換(Transform)-ロード(Load)(ETL)ジョブであり、これは、通常タイム・クリティカルである。多くの場合、中間ステージのパフォーマンス遅延は、ワークロードに基づいており、そのため、ジョブの開始時に最良の構成が予測できない。サービスにかかる時間が、想定される限界を超えると、(並列度を増加または減少することによって)中間ステージのためのジョブを動的に再書き込みすることにより、SLAにおけるQoS条件を満たすようにパフォーマンスの向上がもたらされる可能性がある。
【0013】
加えて、データパイプラインの並列度のについて良好な開始構成を予測または提案する先行技術は、存在しない。例えば、データ品質(データ処理)ワークフローは、ジョブ中の重複データを発見するために、予想されるよりも多くの時間を要する。この余分な時間により、SLAにおけるQoS条件が脅かされる。ジョブ全体または特定のステージだけの並列度を増加することが有益であるかどうかは未知である。現在の技術水準においては、どれだけ多くの並列ステージを使用するかの決定は、ジョブを作成した時点でなされ、変更することができない。この解決策は、機械学習を使用することであり、これによって、増加されるパフォーマンスおよび利用可能なリソースを均衡させる各オペレータ(タスク内)の並列度の数量を予測するために過去の実行の詳細を蓄積することができる。これらのタスクの過去の実行に基づいて、機械学習モデルを使用して、特定のオペレーションが、それがアップスケールされる(より並列なインスタンスがステージに追加される)場合またはダウンスケールされる場合(並列インスタンスがステージから除去される)にどのように振る舞うかを予測してもよい。予測された挙動に基づいて、いくつかのオペレーションを、SLAのQoS条件を満たすようにアップスケールまたはダウンスケールすることができる。結果として、現在の技術水準では要求される再起動を必要とすることなく、ジョブまたはステージの並列度が最適に変更される。好ましい実施形態においては、データ処理ワークローがトリガされ、システムは、システム・リソースの利用可能性に基づいて、ワークフローにおける他のオペレータの並列度とは関係なく、個々のオペレータ毎の並列度を自動的に変更するであろう。
【0014】
図1は、本発明の少なくとも1つの実施形態による動的パイプライン・プログラム112の動作に適した、概して100で示される分散データ処理環境を示す機能ブロック図である。本明細書で使用される「分散」という用語は、単一のコンピュータ・システムとして一緒に動作する、物理的に別個の複数のデバイスを含むコンピュータ・システムを説明する。図1は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限をも暗に示すものではない。特許請求の範囲に記載された本発明の範囲から逸脱することなく、図示された環境に対する多くの変更が当業者によってなされる可能性がある。
【0015】
コンピューティング・デバイス110は、スタンド・アローンのコンピューティング・デバイス、管理サーバ、ウェブ・サーバ、モバイル・コンピューティング・デバイス、または、データを受信し、送信し、および処理することが可能な任意の他の電子デバイスまたはコンピューティング・システムであってよい。ある実施形態においては、コンピューティング・デバイス110は、ラップトップ・コンピュータ、タブレット・コンピュータ、ネットブック・コンピュータ、パーソナル・コンピュータ(PC)、デスクトップ・コンピュータ、パーソナル・デジタル・アシスタント(PDA)、スマートフォン、または、分散データ処理環境100内でネットワーク120を介して他のコンユ―ティング・デバイスと通信可能な任意のプログラマブル電子デバイスであってもよい。他の実施形態においては、コンピューティング・デバイス110は、例えば、クラウドコン・ピューティング環境におけるように、複数のコンピュータをサーバシステムとして利用するサーバ・コンピューティング・システムを表してもよい。さらに別の実施形態においては、コンピューティング・デバイス110は、分散データ処理環境100内でアクセスされる場合にシームレスなリソースの単一のプールとして機能する、クラスタ化されたコンピュータおよびコンポーネント(例えば、データベース・サーバ・コンピュータ、アプリケーション・サーバ・コンピュータなど)を利用するコンピュ-ティング・システムを表す。
【0016】
一実施形態においては、コンピューティング・デバイス110は、動的パイプライン・プログラム112を含む。ある実施形態においては、動的パイプライン・プログラム112は、分散行ベースのデータベースシステム内のパイプラインにおける特定のタスクの並列度を動的に識別および変更するためのプログラム、アプリケーションまたは、より大きなプログラムのサブプログラムである。代替実施形態においては、動的パイプライン・プログラム112は、ネットワーク120を介してコンピューティング・デバイス110によってアクセス可能な他の任意のデバイス上に位置していてもよい。
【0017】
ある実施形態においては、コンピューティング・デバイス110は、情報リポジトリ114を含む。一実施形態においては、情報リポジトリ114は、動的パイプライン・プログラム112によって管理されてもよい。代替実施形態においては、情報リポジトリ114は、単独でまたは動的パイプライン・プログラム112と共に、デバイスのオペレーティング・システムによって管理されてもよい。情報リポジトリ114は、情報を、格納し、集め、比較し、もしくは結合し、またはその組み合わせを行うことが可能なデータリポジトリである。いくつかの実施形態においては、情報リポジトリ114は、コンピューティング・デバイス110の外部に位置し、ネットワーク120のような通信ネットワークを介してアクセスされる。いくつかの実施形態においては、情報リポジトリ114は、コンピューティング・デバイス110上に格納されてもよい。いくつかの実施形態においては、情報リポジトリ114がコンピューティング・デバイス110によってアクセス可能であるという条件で、別のコンピューティング・デバイス(図示せず)上に常駐していてもよい。情報リポジトリ114は、特に限定されるものではないが、クライアント・データ、構成データ、データベースのデータ、機械学習モデル、1または複数のソースから動的パイプライン・プログラム112により受信される他のデータ、および、動的パイプライン・プログラム112により生成されるデータを含む。
【0018】
情報リポジトリ114は、当該技術分野で知られているような、情報を格納するための揮発性または不揮発性のストレージ媒体を使用して実装されてもよい。例えば、情報リポジトリ114は、テープライブラリ、光学ライブラリ、1または複数の独立したハード・ディスク・ドライブ、リダンダント・アレイ・オブ・インデペンデント・ディスクズ(RAID)内の複数のハード・ディスク・ドライブ、ソリッド・ステート・ドライブ(SSD)またはランダム・アクセス・メモリ(RAM)を用いて実装されてもよい。同様に、情報リポジトリ114は、リレーショナル・データベース、SQLデータベース、NoSQLデータベース、オブジェクト指向データベース、または1または複数のテーブルといった、当該技術分野で知られた任意の適切なストレージ・アーキテクチャで実装されてもよい。
【0019】
図2は、本発明の一実施形態による、一般に200で示されるパイプライン・データフロー・モデルの一例である。ある実施形態においては、動的パイプラインは、複数のステージを包含する。図2に示す例では、例示のみのために、動的パイプラインは、3つのステージを含む。なお、この図は、例示の目的のみのために提供されることに注意すべきである。当業者には、本発明の範囲および精神から逸脱することなく、多くの修正および変形が明らかであろう。
【0020】
図2は、パイプライン210と、スループット・モニタ220と、リソース・モニタ230と、CPU240と、RAM250と、ジョブ実行最適化モジュール260とを含む。
【0021】
図2に示す実施形態においては、パイプライン210は、3つのオペレーション・ステージを示しているパイプラインのセクションの一例である。図示の実施形態においては、オペレーション1、オペレーション2およびオペレーション3は、より長いパイプラインの3つのオペレーション・ステージである。例えば、オペレーション1は、(オペレーション1がパイプラインの最初のステージでない限り)先行するパイプライン・ステージからその入力を受信し、一方、オペレーション3は、(オペレーション3がパイプラインの最後のステージでない限り)その出力を次のパイプライン・ステージに送信するであろう。ある実施形態においては、パイプライン内には任意の数のステージが存在してもよい。
【0022】
図2に示す実施形態においては、スループット・モニタ220は、パイプラインのステージを監視して性能ボトルネックを検出する、動的パイプライン・プログラム112によって作成されるモジュールの一例である。スループット・モニタ220の動作については、以下に説明する(図5のステップ502を参照のこと)。
【0023】
図2に示す実施形態においては、リソース・モニタ230は、例えばCPU240やRAM250などの利用可能なリソースを監視する、動的パイプライン・プログラム122によって作成されるモジュールの一例である。リソース・モニタ230の動作については、以下に説明する(図5のステップ504を参照のこと)。
【0024】
図2に示す実施形態においては、CPU240は、システム内の見本のプロセッサである。ある実施形態においては、コンピューティング・デバイス110は、任意の数のプロセッサを有してもよく、パイプライン210のオペレーションに関与するこれらの各々がリソース・モニタ230によって監視される。CPU240は、リソース・モニタ230によって監視される全てのプロセッサを代表する。
【0025】
図2に示す実施形態においては、RAM250は、システム内の見本のメモリである。実施形態においては、コンピューティング・デバイス110は、任意の数のRAMまたは他の形態のメモリを有してもよく、パイプライン210のオペレーションに関与するこれらの各々がリソース・モニタ230によって監視される。RAM250は、リソース・モニタ230によって監視される全てのRAMまたは他の形態のメモリを代表する。
【0026】
図2に示す実施形態においては、ジョブ実行最適化モジュール260は、スループット・モニタ220から性能ボトルネックの出力を受け取り、リソース・モニタ230からリソース利用可能性データを受け取り、パイプラインにおける各オペレーションに対し並列なステージを追加または削減して、性能を最大化し、QoS要件を満たす、動的パイプライン・プログラム112によって作成されるモジュールの一例である。リソース・モニタ230の動作については、以下に説明する(図5すべてのステップは、ジョブ実行最適化モジュール260によって制御される)。
【0027】
図3Aから図3Cは、本発明の実施形態による、一般に300で示す、動的パイプライン・プログラム112が、性能を最大化し、かつ、QoS要件を満たすためにとるステップの例を示す。
【0028】
図3Aは、ステージ当たり一のタスクを有する3ステージ・パイプラインの初期構成の例である。
【0029】
図3Bにおいては、動的パイプライン・プログラム112は、パイプライン中のステージ2での減速を検出し、ステージ2に対し、第2のインスタンスを加え、これらは、以下、パイプライン・ステージ2aおよびパイプライン・ステージ2bと示される。ある実施形態においては、通常のデータパイプライン実行中、ジョブ実行最適化モジュール260は、スループット・モニタ220からの入力に基づいて、パイプライン・ステージ2がその処理において遅れていることを決定する。ジョブ実行最適化モジュール260は、リソース・モニタ230に確認し、パイプライン・ステージ2の追加のインスタンスをサポートするのに十分なシステム・リソースを有しているか否かを判定する。もし、そうであれば、ジョブ実行最適化モジュール260は、ステージ2の追加のインスタンス(この例ではパイプライン・ステージ2b)を作成する。
【0030】
ステージ2の新たなインスタンスは、登録されて、パイプライン・ステージ1がパイプライン・ステージ2aおよびパイプライン・ステージ2bの両方にその出力を送信することが可能となる。ある実施形態においては、動的パイプライン・プログラム112は、アルゴリズムを用いてステージ1の出力を分割し、ステージ1から入来するレコードを、ステージ2の異なるインスタンスに本質的に均等に分配する。例えば、ある実施形態においては、動的パイプライン・プログラム112は、パイプライン・ステージ1の結果をパイプライン・ステージ2aおよびパイプライン・ステージ2bの両方に分配するためにハッシュ化を使用してもよい。ハッシュ分割は、行に対してハッシュ値(整数)を計算し、計算されたハッシュ値の行数での剰余を計算し、そのレコードを取り扱うべきパーティション番号を決定する。ハッシュ値は、それがランダムに分布するように計算され、これによって、各パーティションが約同量のレコードを受信することが保証される。別の例では、動的パイプライン・プログラム112は、第1の行がパーティション1に発行され、第2の行がパーティション2に発行され、・・・第N+1の行がパーティション1に発行されるといったように、ラウンド・ロビン・アルゴリズムを使用してもよい。別の実施形態においては、動的パイプライン・プログラム112は、当業者には明らかなように、パイプライン・ステージ1からの出力をパイプライン・ステージ2の2つのインスタンス、すなわちステージ2aおよびステージ2bに分配するために任意の他の適切なアルゴリズムを使用してよい。
【0031】
新しいインスタンス(パイプライン・ステージ2b)は、パイプライン・ステージ1からのデータのスライスの取得を開始し、これにより、パイプライン・ステージ2aでの処理負荷が削減される。スループットが増加すると、これは、パイプライン・ステージ2の新しいインスタンスを追加することが正しい選択であったことを示す。より大きな性能が要求される場合、ジョブ実行最適化モジュール260は、処理負荷に性能を調整するべく、パイプライン・ステージ2の追加の新しいインスタンスを作成する。パイプラインの改良された性能に基づいて、この特定のパイプラインの次回の実行のための良好な開始点としてこの構成が格納される。
【0032】
上記図3Bで集められたデータに基づいて、動的パイプライン・プログラム112は、オペレータのタイプ、スループット、入力オペレータまたは出力オペレータ(これは上記図3Bに補足される)の任意のものに基づいて、オペレータのふるまいを予測するための決定木モデルを訓練する。動的パイプライン・プログラム112は、この訓練から、これらのパラメータに基づいて、いずれのオペレータがアップスケーリングまたはダウンスケーリングから恩恵を受けるであろうかを予測する。よって、アップスケーリングまたはダウンスケーリングの予測は、ランダムに選択されるのではなく、作成されたモデルに基づくであろう。
【0033】
図3Cは、上記図3Bの例をさらに示す。図3Cにおいては、動的パイプライン・プログラム112は、パイプライン中のステージ3で減速を検出し、よって、ステージ3に対し、第2のインスタンスを追加し、ここで、これらは、パイプライン・ステージ3aおよびパイプライン・ステージ3bとして示される。加えて、動的パイプライン・プログラム112は、パイプラインがステージ2で、パイプライン・ステージ1およびパイプライン・ステージ3のスループットを超えると判定し、よって、動的パイプライン・プログラム112は、パイプライン・ステージ2の第2のインスタンスを除去し、リソースを他のタスクに解放する。他の例では、動的パイプライン・プログラム112は、リソース・モニタ230からの入力に基づいて、システムが、他のタスクに対してより多くのリソースを必要とすると決定し、動的パイプライン・プログラム112は、よって、パイプライン・ステージ2の第2のインスタンスを除去し、他のタスクにリソースを解放する。
【0034】
図4は、本発明の少なくとも1つの実施形態による、データが、分割され、かつ、並列に処理され得る、例えばSQLやNoSQLなどの分散行ベースのデータベースシステムまたは任意の行ベースのソースにおいてデータおよびインデックスをシームレスに移行するための動的パイプライン・プログラム112のための動作ステップを示すワークフロー400のフローチャート図である。代替実施形態においては、ワークフロー400のステップは、動的パイプライン・プログラム112と共に動作しながら他の任意のプログラムによって実行されてもよい。ある実施形態においては、動的パイプライン・プログラム112は、動的パイプラインを初期化する。ある実施形態においては、動的パイプライン・プログラム112は、各中間ステージのスループットを記録する。ある実施形態においては、動的パイプライン・プログラム112は、各中間ステージの完了時間を予測するためのモデルを構築する。ある実施形態においては、動的パイプライン・プログラム112は、外れ値データ点を識別する。ある実施形態においては、動的パイプライン・プログラム112は、QoSが影響を受けるであろうか否かを決定する。ある実施形態においては、動的パイプライン・プログラム112は、決定木を作成する。ある実施形態においては、動的パイプライン・プログラム112は、追加のインスタンスを生成することにより恩恵を受けるであろうオペレータおよび並列度の組み合わせを予測する。ある実施形態においては、動的パイプライン・プログラム112は、追加のインスタンスのインテリジェント生成を使用する。ある実施形態においては、動的パイプライン・プログラム112は、追加インスタンスの最適な構成を予測するために機械学習決定木モデルを用いる。
【0035】
本発明の実施形態は、少なくともパイプラインにおける特定のタスクの並列度を動的に識別し、かつ、変更することを規定することが理解されるべきである。しかしながら、図4は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限をも暗に示すものではない。特許請求の範囲に記載された本発明の範囲から逸脱することなく、図示された環境に対する多くの変更が当業者によってなされる可能性がある。
【0036】
動的パイプライン・プログラム112は、動的パイプラインを初期化する(ステップ402)。ステップ402においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260、スループット・モニタ220およびリソース・モニタ230を生成して、動的パイプライン最適化を開始する。ジョブ実行最適化モジュール260は、スループット・モニタ220およびリソース・モニタ230からの入力に基づいて、パイプライン・ステージの実際の追加および削減を行い、スループットを最適化する。スループット・モニタ220は、パイプラインにおける各ステージのスループットを継続的に測定し、ジョブ実行最適化モジュール260にステータスを送信する。リソース・モニタ230は、パイプラインの動作に必要な各リソースのステータスを継続的に監視し、ジョブ実行最適化モジュール260にステータスを送信する。
【0037】
動的パイプライン・プログラム112は、各中間ステージのスループットを記録する(ステップ404)。ステップ404においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を使用して、スループット・モニタ220からの入力に基づいて、パイプラインにおける各オペレーション・ステージのスループットを記録する。
【0038】
動的パイプライン・プログラム112は、完了時刻を予測するためのモデルを構築する(ステップ406)。ある実施形態においては、動的パイプライン・プログラム112は、機械学習アルゴリズムを使用して、各パイプライン・ステージの完了の予想時間を予測し、所与の各ステージの実際のスループット、ステージのタイプおよびジョブが開始してからの実際のスループットの下、ジョブ全体の完了時間を計算する。ある実施形態においては、アルゴリズムは、単純な線形回帰モデルである。別の実施形態においては、アルゴリズムは、深層学習アルゴリズムである。別の実施形態においては、動的パイプライン・プログラム112は、当業者に明らかなように、任意の他の適切なモデルを使用して、各パイプライン・ステージのまたはジョブの特性に基づいて、ジョブ完了の予想時間を予測してもよい。
【0039】
動的パイプライン・プログラム112は、外れ値データ点を識別する(ステップ408)。ステップ408においては、動的パイプライン・プログラム112は、予測された実際の実行時間が、期待される実行時間または理論的に可能な最小実行時間とは異なるステージを識別する。ある実施形態においては、動的パイプライン・プログラム112は、モデルを使用して、理想的な条件(すなわち、データを提供するオペレータのスループットが無限大である場合)の下で達成することができる各ステージの最適実行時間を計算する。ある実施形態においては、これらのモデルは、機械学習モデル(例えば、他の回帰モデル)であってもよい。別の実施形態においては、これらのモデルは、より単純な統計式であってもよい。さらに別の実施形態においては、これらのモデルは、当業者には明らかなように、予測された実際の実行時間が、期待される実行時間または理論的に可能な最小実行時間とは異なるステージを識別するため、任意の他の適切なモデルであってもよい。
【0040】
ある実施形態においては、動的パイプライン・プログラム112は、計算された各ステージの完了の予測時間と、理想的な条件で実行されるステージのものとの間の計算されたギャップを使用して、外れ値データ点を識別する。ある実施形態においては、動的パイプライン・プログラム112が、ステージ(および、ひいてはジョブ)の実際の実行時間と、同一ステージ(および、ひいては同一ジョブ)の理想的な条件における期待実行時間との差が閾値を超えることを判定した場合、次いで、外れ値データ点が検出される。ある実施形態においては、閾値は、システムデフォルトである。別の実施形態においては、閾値は、動的パイプライン・プログラム112のユーザによって設定されてもよい。
【0041】
動的パイプライン・プログラム112は、QoSが影響を受けるか?を判定する(ステップ410)。ステップ410においては、動的パイプライン・プログラム112が、QoSが影響を受けると判定した場合、動的パイプライン・プログラム112は、中間オペレータのインテリジェント生成を使用してQoSを維持する。インテリジェント生成プロセスは、ステップ412で開始する。QoSが影響を受けない場合、動的パイプライン・プログラム112は、終了する。
【0042】
動的パイプライン・プログラム112は、ボトルネックを引き起こすステージを識別する(ステップ412)。ステップ412においては、動的パイプライン・プログラム112が、QoSが影響を受けると判定した場合、動的パイプライン・プログラム112は、性能を改善するためにステージにおけるいずれのオペレータまたは複数のオペレータが複数のインスタンスで生成されるべきかを決定する。
【0043】
ある実施形態においては、動的パイプライン・プログラム112は、予測された実行時間と期待される実行時間との間に有意な差を有するフロー中の第1のステージまたはその前のステージが、最もボトルネックとなる可能性があることを仮定した単純なヒューリスティックを用いて、いずれのステージがボトルネックを引き起こすのかを判定する。別の実施形態においては、動的パイプライン・プログラム112は、そのステージからの出力がそのステージへの入力よりも少ないパイプライン・ステージを識別することによって、いずれのステージがボトルネックを引き起こしているかを決定する。さらに別の実施形態においては、動的パイプライン・プログラム112は、より正確な予測を与えるために、類似するジョブの過去の実行の履歴から訓練された機械学習モデルを用いた、より高度なアルゴリズムを使用する。
【0044】
動的パイプライン・プログラム112は、オペレータおよび並列度の組み合わせを予測する(ステップ414)。ステップ414においては、動的パイプライン・プログラム112は、導入する必要のある並列度の数量を予測する。ある実施形態においては、ジョブ実行最適化モジュール260は、ステップ412の出力を用いて、どのオペレータと所望の並列度との組み合わせが、QoS要件を満たす最適なパイプライン構成を導くことができるかを決定する。決定木の予測に基づいて、パイプライン中のオペレータの新しいインスタンスが、ジョブ実行最適化モジュール260によってインテリジェントに生成または除去される。ある実施形態においては、動的パイプライン・プログラム112は、入力と出力の比率(input to output ratio)から、導入される必要がある並列度の数量を予測する。別の実施形態においては、動的パイプライン・プログラム112は、類似するパイプライン・ジョブの過去の履歴から、導入される必要のある並列度の量を予測する。ある実施形態においては、過去の履歴は、ステップ416およびステップ518の両方で継続的に再訓練される機械学習モデルから決定される。
【0045】
動的パイプライン・プログラム112は、追加のインスタンスのインテリジェント生成を使用する(ステップ416)。ステップ416においては、動的パイプライン・プログラム112は、ステップ414で識別されたステージへの追加のインスタンスのインテリジェント生成を使用する。ある実施形態においては、動的パイプライン・プログラム112は、機械学習決定木モデルを使用して、生成を行うオペレータの候補を決定する。これらの決定木モデルは、ステップ406で作成され、このステップで、および、以下のステップ518で更新される。動的パイプライン・プログラム112が、ステージの並列度を増加させることにより、スループットが増加したと判定した場合、動的パイプライン・プログラム112は、次いで、機械学習決定木モデルに結果をフィードバックする。定期的な間隔で、動的パイプライン・プログラム112は、ステップ416およびステップ518の両方からの最新の履歴の結果を用いて、これらのモデルを再訓練する。
【0046】
追加のインスタンスのインテリジェント生成については、以下の図5において詳細が説明される。
【0047】
図5は、本発明の少なくとも1つの実施形態による、追加インスタンスのインテリジェント生成のための動的パイプライン・プログラム112の動作ステップを示すワークフロー500のフローチャート図である。代替実施形態においては、ワークフロー500のステップは、動的パイプライン・プログラム112と共に動作しながら他の任意のプログラムによって実行されてもよい。ある実施形態においては、動的パイプライン・プログラム112は、制限しているオペレーション・ステージXを識別する。ある実施形態においては、動的パイプライン・プログラム112は、十分なリソースが利用可能であるか否かを判定する。ある実施形態においては、動的パイプライン・プログラム112は、新しいステージXインスタンスを生成する。ある実施形態においては、動的パイプライン・プログラム112は、新しいステージXインスタンスにデータを分割する。ある実施形態においては、動的パイプライン・プログラム112は、スループットを測定する。ある実施形態においては、動的パイプライン・プログラム112は、スループットが増加したか否かを判定する。ある実施形態においては、スループットが増加した場合、動的パイプライン・プログラム112は、追加の新しいステージXインスタンスを生成する。ある実施形態においては、スループットが増加していない場合、動的パイプライン・プログラム112は、新しいステージXインスタンスを除去する。ある実施形態においては、動的パイプライン・プログラム112は、現在の構成を格納する。ある実施形態においては、動的パイプライン・プログラム112は、決定木モデルを訓練する。
【0048】
本発明の実施形態は、少なくともパイプラインにおける特定のタスクの並列度を動的に識別し、かつ、変更することを規定することが理解されるべきである。しかしながら、図5は、1つの実装の例示のみを提供し、異なる実施形態が実装され得る環境に関して、いかなる制限をも暗に示すものではない。特許請求の範囲に記載された本発明の範囲から逸脱することなく、図示された環境に対する多くの変更が当業者によってなされる可能性がある。
【0049】
動的パイプライン・プログラム112は、制限するオペレーション・ステージXを識別する(ステップ502)。ステップ502においては、動的パイプライン・プログラム112は、ステージXが処理において遅れていると判定する。ある実施形態においては、動的パイプライン・プログラム112は、スループット・モニタ220からの入力に基づいて、ジョブ実行最適化モジュール260を用いて、ステージXが処理において遅れていると判定する。
【0050】
動的パイプライン・プログラム112は、十分なリソースが利用可能であるか否かを判定する(ステップ504)。ステップ504においては、動的パイプライン・プログラム112は、ステージXの新しいインスタンスを生成するのに十分なリソースが利用可能であるか否かを判定する。ある実施形態においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を用いて、リソース・モニタ230からの入力に基づいて、十分なリソースが利用可能であるか否かを判定する。動的パイプライン・プログラム112が、ステージXの新しいインスタンスを生成するのに十分なリソースが利用可能であると判断した場合、動的パイプライン・プログラム112は、次いで、ステップ506に継続する。動的パイプライン・プログラム112が、ステージXの新しいインスタンスを生成するのに十分なリソースが利用可能ではないと判断した場合、動的パイプライン・プログラム112は、図4におけるフローに戻る。ある実施形態においては、十分なリソースは、プロセッサ・リソースを含む。別の実施形態においては、十分なリソースは利用可能なメモリ・リソースである。さらに別の実施形態においては、十分なリソースは、動的パイプラインを作成し、管理するために必要なコンピュータリソースの任意の組み合わせを含む。
【0051】
動的パイプライン・プログラム112は、新しいステージXインスタンスを生成する(ステップ506)。ステップ506においては、動的パイプライン・プログラム112は、ステージXの1以上の新しいインスタンスを生成する(アップスケール)。ある実施形態においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を用いて、パイプラインの中間ステージに対しステージXの1または複数の新たなインスタンスを追加する。ある実施形態においては、動的パイプライン・プログラム112が作成するステージXの新たなインスタンスの数は、ステップ414において実行される性能計算に基づく。
【0052】
動的パイプライン・プログラム112は、新しいステージXにデータを分割する(ステップ508)。ステップ508においては、動的パイプライン・プログラム112は、ステージX-1からのデータをステージXの新しいインスタンスに分割する。ある実施形態においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を用いて、ステージX-1からのデータをステージXの新しいインスタンスに分割し、中間ステージの並列度を増加させる。新しいステージXへのデータの分割は、上記図3Bの下で説明される。
【0053】
動的パイプライン・プログラム112は、スループットを測定する(ステップ510)。ステップ510において、動的パイプライン・プログラム112は、ステージXの新しいインスタンスがスループットを増加させたか否かを決定するためにパイプライン全体のスループットを測定する。ある実施形態においては、動的パイプライン・プログラム112は、スループット・モニタ220からの入力に基づいてパイプラインのスループットが増加したか否かを判定するためにジョブ実行最適化モジュール260を使用する。
【0054】
動的パイプライン・プログラム112は、スループットが増加したか否かを判定する(ステップ512)。ステップ512において、動的パイプライン・プログラム112は、パイプラインの全体的なスループットが増加したか否かを判定する。ある実施形態においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を使用して、スループット・モニタ220からの入力に基づいて、パイプラインのスループットが増加したか否かを決定する。動的パイプライン・プログラム112がパイプラインの全体的なスループットが増加したと判定した場合、動的パイプライン・プログラム112は、ステップ502に戻り、追加の並列オペレータをステージに追加することによって追加の性能改善が可能であるか否かを判定する。動的パイプライン・プログラム112が、パイプラインの全体的なスループットが増加していないと判断した場合、動的パイプライン・プログラム112は、ステップ514に継続する。
【0055】
動的パイプライン・プログラム112は、新たなステージXインスタンスを除去する(ステップ514)。ステップ514においては、動的パイプライン・プログラム112がパイプラインの全体的なスループットが増加していないと判断した場合、動的パイプライン・プログラム112は、新しいステージXインスタンスを除去し、リソースを解放する(ダウンスケール)。ある実施形態においては、動的パイプライン・プログラム112は、ジョブ実行最適化モジュール260を使用して、ステージXの新しいインスタンスを除去し、リソースを解放する。
【0056】
動的パイプライン・プログラム112は、現在の構成を格納する(ステップ516)。ステップ516においては、スループットが増加しているため、動的パイプライン・プログラム112は、このパイプラインの次の実行のための潜在的な開始点として使用するために、動的パイプラインの現在の構成を格納する。
【0057】
動的パイプライン・プログラム112は、決定木モデルを訓練する(ステップ518)。ステップ518においては、動的パイプライン・プログラム112は、上記からのデータに基づいて、上述ステップから捕捉されるように、オペレータのタイプ、スループット、入力オペレータ、出力オペレータに基づいてオペレータの挙動を予測するためのモデルを訓練する。この訓練中に集められたパラメータに基づいて、動的パイプライン・プログラム112は、いずれのオペレータがアップスケーリングまたはダウンスケーリングから恩恵を受けられるであろうかを予測する。ある実施形態においては、動的パイプライン・プログラム112は、決定木モデルを用いて、データ処理ジョブのための動的パイプラインの挙動を予測する。よって、将来のアップスケーリングまたはダウンスケーリングの予測は、ランダムに選択されるのではなく、作成されたモデルに基づく。動的パイプライン・プログラム112は、次いで、図4に戻る。
【0058】
図6は、本発明の少なくとも1つの実施形態による、動的パイプライン・プログラム112に適したコンピューティング・デバイス110のコンポーネントを示すブロック図である。図6は、コンピュータ600と、1または複数のプロセッサ(複数可)604(1または複数のコンピュータ・プロセッサを含む)と、通信ファブリック602と、ランダム・アクセス・メモリ(RAM)616およびキャッシュ618を含むメモリ606と、永続性ストレージ608と、通信ユニット612と、I/Oインタフェース614と、ディスプレイ622とを表示する。図6は、一実施形態の例示のみを提供し、異なる実施形態が実装され得る環境に関するいかなる制限も暗に示すものではないことが理解されよう。図示した環境に対する多くの変更がなされ得る。
【0059】
図示のように、コンピュータ600は、通信ファブリック602を介して動作し、通信ファブリック602は、コンピュータ・プロセッサ(複数可)604、メモリ606、永続性ストレージ608、通信ユニット612および入出力(I/O)インタフェース(複数可)614の間の通信を提供する。通信ファブリック602は、プロセッサ604(例えば、マイクロプロセッサ、通信プロセッサおよびネットワーク・プロセッサ)、メモリ606、外部デバイス620およびシステム内の任意の他のハードウェア・コンポーネントとの間でデータを渡すことまたは情報を制御することに適したアーキテクチャで実装され得る。例えば、通信ファブリック602は、1または複数のバスで実装されてもよい。
【0060】
メモリ606および永続性ストレージ608は、コンピュータ可読ストレージ媒体である。図示された実施形態においては、メモリ606は、RAM616およびキャッシュ618を含む。一般に、メモリ606は、任意の適切な揮発性または不揮発性のコンピュータ可読ストレージ媒体を含んでもよい。キャッシュ618は、RAM616からの最近アクセスされたデータおよびほとんど最近アクセスされたデータを保持することによって、プロセッサ604の性能を増強する高速メモリである。
【0061】
動的パイプライン・プログラム112のためのプログラム命令は、メモリ606の1または複数のメモリを介したそれぞれのコンピュータ・プロセッサ604の1つまたは複数による実行のために、永続性ストレージ608、あるいはより一般的には、任意のコンピュータ可読記憶媒体に格納されてもよい。永続性ストレージ608は、磁気ハード・ディスク・ドライブ、ソリッド・ステート・ディスクドライブ、半導体ストレージ・デバイス、リード・オンリー・メモリ(ROM)、電子的に消去可能なプログラマブル・リード・オンリー・メモリ(EEPROM)、フラッシュ・メモリ、または、プログラム命令またはデジタル情報を格納することが可能な他のコンピュータ可読ストレージ媒体であってもよい。
【0062】
永続性ストレージ608によって使用される媒体は、リムーバブルあってもよい。例えば、リムーバル・ハード・ドライブを永続性ストレージ・デバイス608に使用してもよい。他の例には、光学ディスク、磁気ディスク、サムドライブ、永続性ストレージ608の一部でもある他のコンピュータ可読ストレージ媒体へ転送するためのドライブに挿入されるスマートカードが含まれる。
【0063】
これらの例において、通信ユニット612は、他のデータ処理システムまたはデバイスとの通信を規定する。これらの例では、通信ユニット612は、1または複数のネットワーク・インタフェース・カードを含む。通信ユニット612は、物理的通信リンクおよび無線通信リンクのいずれかまたは両方を使用して通信を提供してもよい。本発明のいくつかの実施形態の文脈においては、種々の入力データのソースは、コンピュータ600に対して物理的に離間していてもよく、通信ユニット612を介して、入力データが受信され、同様に出力が送信されるようになる。
【0064】
I/Oインタフェース(複数可)614は、コンピュータ600に接続され得る他のデバイスとのデータの入力および出力を可能とする。例えば、I/Oインタフェース614は、キーボード、キーパッド、タッチスクリーン、マイクロフォン、デジタルカメラもしくは他の適切な入力デバイスまたはその組み合わせのような外部装置(複数可)620への接続を提供してもよい。外部装置620は、例えば、サムドライブ、ポータブル光学または磁気ディスクおよびメモリカードなどのポータブルなコンピュータ可読ストレージ媒体を含んでもよい。本発明の実施形態を実践するために使用されるソフトウェアおよびデータ、例えば、動的パイプライン・プログラム112は、そのようなポータブル・コンピュータ可読ストレージ媒体上に記憶されてもよく、I/Oインタフェース(複数可)614を介して永続性ストレージ608上にロードされてもよい。I/Oインタフェース614は、ディスプレイ622にも接続される。
【0065】
ディスプレイ622は、ユーザにデータを表示するためのメカニズムを提供し、例えば、コンピュータ・モニタであってもよい。ディスプレイ622は、タブレット・コンピュータのディスプレイのようなタッチスクリーンとしても機能してもよい。
【0066】
本明細書で説明されるプログラムは、本発明の特定の実施形態においてそれらが実装されるアプリケーションに基づいて識別される。しかしながら、本明細書における特定のプログラム命名法は、単に便宜のために使用されるものであり、従って、本発明は、そのような命名法によって識別され、もしくは暗示されまたはその両方がなされる特定のアプリケーションに単独で使用することに限定されるべきではないことが理解されよう。
【0067】
本発明は、システム、方法もしくはコンピュータ・プログラム製品またはこれらの組み合わせであってよい。コンピュータ・プログラム製品は、プロセッサに本発明の側面を実行させるためのコンピュータ可読プログラム命令をその上に有するコンピュータ可読ストレージ媒体を含んでもよい。
【0068】
コンピュータ可読ストレージ媒体は、命令実行デバイスによって使用するための命令を保持し格納する任意の有形のデバイスであってよい。コンピュータ可読ストレージ媒体は、例えば、これに限定されるものではないが、電子的ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイスまたは上記の任意の適切な組み合わせであってよい。コンピュータ可読ストレージ媒体のより具体的な例示の非網羅的リストには、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リード・オンリー・メモリ(ROM)、消去可能プログラマブル・リード・オンリー・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リード・オンリー・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリースティック、フロッピー(登録商標)ディスク、パンチカードまたは記録された命令を有する溝内の隆起構造のような機械的エンコードされたデバイス、および上記の任意の適切な組み合わせが含まれる。コンピュータ可読ストレージ媒体は、本明細書で使用されるように、電波、自由伝搬する電磁波、導波路または他の伝送媒体を伝搬する電磁波(たとえば、ファイバ光ケーブルを通過する光パルス)または、ワイヤを通して伝送される電気信号のような、それ自体が一時的な信号として解釈されるものではない。
【0069】
本明細書で説明されるコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピュータ/処理デバイスに、または、例えばインターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークもしくは無線ネットワークまたはこれらの組み合わせといったネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータもしくはエッジ・サーバまたはこれらの組み合わせを含んでもよい。各コンピュータ/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、コンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に格納するために転送する。
【0070】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、または、1以上のプログラミング言語の任意の組み合わせで書かれたソース・コードあるいはオブジェクト・コードであってよく、1以上のプログラミング言語は、Smalltalk(登録商標)、C++またはこれらに類するもなどのオブジェクト指向言語、Cプログラミング言語または類似のプログラミング言語などの従来型の手続型言語を含む。コンピュータ可読プログラム命令は、スタンド・アローンのソフトウェア・パッケージとして、全体としてユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、部分的にユーザのコンピュータ上かつ部分的に遠隔のコンピュータ上で、または、完全に遠隔のコンピュータまたはサーバ上で実行されてもよい。後者のシナリオでは、遠隔のコンピュータは、ユーザのコンピュータに、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通じて接続されてもよく、あるいは接続は、(例えば、インターネット・サービス・プロバイダを用いてインターネットを通じて)外部コンピュータになされてもよい。いくつかの実施形態においては、電気的回路は、本発明の側面を実行するために、コンピュータ可読プログラム命令の状態情報を利用して、電気的回路を個別化することによって、コンピュータ可読プログラム命令を実行してもよく、この電気的回路は、例えば、プログラマブル・ロジック回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル・ロジック・アレイ(PLA)を含む。
【0071】
本発明の側面は、本明細書において、本発明の実施形態に従った方法、装置(システム)およびコンピュータ・プログラム製品のフローチャート図もしくはブロック図またはこれらの両方を参照しながら、説明される。フローチャート図もしくはブロック図またはこれらの両方の各ブロック、および、フローチャート図もしくはブロック図またはこれらの両方における複数のブロックの組み合わせは、コンピュータ可読プログラム命令によって実装されてもよいことが理解されよう。
【0072】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、特定用途コンピュータのプロセッサまたは他のプログラマブル・データ処理装置に提供され、コンピュータのプロセッサまたは他のプログラマブル・データ処理装置を介して実行される命令が、フローチャート図もしくはブロック図またはこれらの両方のブロックまたは複数のブロックにおいて特定される機能/作用を実装するための手段を作成するように、マシンを生成する。これらのコンピュータ可読プログラム命令は、また、コンピュータ、プログラマブル・データ処理装置もしくは他のデバイスまたはこれらの組み合わせに特定のやり方で機能するよう指示できるコンピュータ可読ストレージ媒体に格納され、それに格納された命令を有するコンピュータ可読ストレージ媒体に、フローチャート図もしくはブロック図またはこれらの両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装する命令を含む製品が含まれるようにする。
【0073】
コンピュータ可読プログラム命令は、また、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイスに読み込まれ、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で一連の動作ステップを実行させて、コンピュータ、他のプログラマブル・データ処理装置または他のデバイス上で実行される命令が、フローチャート図もしくはブロック図またはこれらの両方のブロックまたは複数のブロックで特定される機能/作用の側面を実装するように、コンピュータ実装処理を生成することもできる。
【0074】
図面におけるフローチャートおよびブロック図は、本発明の種々の実施形態に従ったシステム、方法およびコンピュータ・プログラム製品の可能な実装のアーキテクチャ、機能性および動作を示す。この点に関して、フローチャート図またはブロック図の各ブロックは、特定の論理機能(単数または複数を含む。)を実装するための1以上の実行可能な命令を含む、モジュール、セグメントまたは命令の部分を表す可能性がある。いくつかの代替の実装では、ブロックにおいて言及された機能は、図面に示された順序から外れて生じる可能性がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に、実行されてもよく、あるいは、複数のブロックは、関与する機能性に応じて逆の順序で実行されてもよい。ブロック図もしくはフローチャート図またはこれらの両方の各ブロックおよびブロック図もしくはフローチャート図またはこれらの両方の複数のブロックの組み合わせが、特定の機能または作用を実行し、または、特別な目的のハードウェアおよびコンピュータ命令の組み合わせを実施する、特定目的ハードウェアベースのシステムによって実装されてもよいことに留意されたい。
【0075】
本発明の種々の実施形態の説明が、説明のために提示されたが、しかしながら、網羅的であること、または、開示される実施形態に限定されることを意図するものではない。本発明の範囲および精神を逸脱することなく、数多くの変更および変形が当業者にとって明らかであろう。本明細書で使用される用語は、実施形態の原理、実際の応用または市場で発見される技術に対する技術的改善を最もよく説明するために、あるいは、他の当業者が、本明細書で開示される実施形態を理解できるように選ばれたものである。
図1
図2
図3A
図3B
図3C
図4
図5
図6