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

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

▶ アビニシオ テクノロジー エルエルシーの特許一覧

特許7507250分散コンピューティングネットワークにおける通信の最適化
<>
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図1
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図2
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図3
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図4
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図5
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図6
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図7
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図8
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図9
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図10
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図11
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図12
  • 特許-分散コンピューティングネットワークにおける通信の最適化 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-06-19
(45)【発行日】2024-06-27
(54)【発明の名称】分散コンピューティングネットワークにおける通信の最適化
(51)【国際特許分類】
   G06F 9/54 20060101AFI20240620BHJP
【FI】
G06F9/54 B
【請求項の数】 20
(21)【出願番号】P 2022563116
(86)(22)【出願日】2021-05-18
(65)【公表番号】
(43)【公表日】2023-06-23
(86)【国際出願番号】 US2021032919
(87)【国際公開番号】W WO2021236605
(87)【国際公開日】2021-11-25
【審査請求日】2022-12-19
(31)【優先権主張番号】63/027,008
(32)【優先日】2020-05-19
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100107984
【弁理士】
【氏名又は名称】廣田 雅紀
(74)【代理人】
【識別番号】100182305
【弁理士】
【氏名又は名称】廣田 鉄平
(74)【代理人】
【識別番号】100096482
【弁理士】
【氏名又は名称】東海 裕作
(74)【代理人】
【識別番号】100131093
【弁理士】
【氏名又は名称】堀内 真
(74)【代理人】
【識別番号】100150902
【弁理士】
【氏名又は名称】山内 正子
(74)【代理人】
【識別番号】100141391
【弁理士】
【氏名又は名称】園元 修一
(74)【代理人】
【識別番号】100221958
【弁理士】
【氏名又は名称】篠田 真希恵
(74)【代理人】
【識別番号】100192441
【弁理士】
【氏名又は名称】渡辺 仁
(72)【発明者】
【氏名】スタンフィル クレイグ, ダブリュー.
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2015-526036(JP,A)
【文献】米国特許第05367523(US,A)
【文献】特開2012-005087(JP,A)
【文献】特開2009-010552(JP,A)
【文献】米国特許出願公開第2008/0239953(US,A1)
【文献】米国特許出願公開第2011/0219287(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/54
(57)【特許請求の範囲】
【請求項1】
分散コンピューティングクラスタ(112)であって、
インターコネクトネットワーク(107)によって相互に接続された複数のコンピューティングノード(105)であって、前記インターコネクトネットワーク(107)を介して、前記複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって相互に通信し、前記コンピューティングノードの少なくとも一部の各々が、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成され、前記第1のパラメータが前記コンピューティングノードによるメッセージの送信の間の継続時間を指定する、前記複数のコンピューティングノード(105)を有し、
前記少なくとも一部のコンピューティングノードが、前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するように構成され、前記少なくとも一部のコンピューティングノードの各コンピューティングノードにおける前記蓄積が、前記第1のパラメータにより指定される、送信の間の前記継続時間の間に生じる、前記分散コンピューティングクラスタ(112)と、
前記分散コンピューティングクラスタの計算スループットと、前記分散コンピューティングクラスタの処理レイテンシとを含むデータ処理特性を受信するためのモニタ(119)と、
コンピューティング要求の投入のレートを指定する第2のパラメータに従って、前記分散コンピューティングクラスタの外から前記分散コンピューティングクラスタの中への前記コンピューティング要求の投入のレートを制限するためのレートリミッタと
前記分散コンピューティングクラスタについての少なくとも1つの所定のサービスレベル要件を受信し、前記処理レイテンシ及び前記計算スループットに基づいて前記第2のパラメータの値及び前記第1のパラメータの値を一緒に制御して、前記分散コンピューティングクラスタについての前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御するように構成されたコントローラ(110)
を備えるコンピューティングシステム(104)。
【請求項2】
前記少なくとも1つのサービスレベル要件の各サービスレベル要件が、前記分散コンピューティングクラスタにコンピューティング要求を投入してから、投入されたコンピューティング要求に対する応答を前記分散コンピューティングクラスタから受け取るまでの間の最大の許容可能な時間差を規定する請求項1に記載のコンピューティングシステム。
【請求項3】
前記モニタが、前記分散コンピューティングクラスタの出力のレート及び前記分散コンピューティングクラスタの処理レイテンシを監視するように構成される、請求項1又は2に記載のコンピューティングシステム。
【請求項4】
前記監視される処理レイテンシが、前記分散コンピューティングクラスタにコンピューティング要求を投入してから、投入されたコンピューティング要求に対する応答を前記分散コンピューティングクラスタから受信するまでの間の時間差を決定することによって測定される請求項に記載のコンピューティングシステム。
【請求項5】
前記分散コンピューティングクラスタに投入された要求及び前記分散コンピューティングクラスタによって出力された結果が、前記モニタを通過する請求項に記載のコンピューティングシステム。
【請求項6】
前記計算スループットが、前記分散コンピューティングクラスタによって出力されるデータ要素のレートを前記モニタによって測定することによって監視される請求項に記載のコンピューティングシステム。
【請求項7】
前記コントローラが、前記分散コンピューティングクラスタの前記監視された計算スループット及び前記監視された処理レイテンシを処理して、前記第2のパラメータの値及び前記第1のパラメータの値を調整するように構成される請求項に記載のコンピューティングシステム。
【請求項8】
前記コントローラが、前記分散コンピューティングクラスタが投入されたコンピューティング要求を処理している間に、前記分散コンピューティングクラスタの前記監視された計算スループット及び前記監視された処理レイテンシを繰り返し処理して、前記第2のパラメータの値及び前記第1のパラメータの値を調整する請求項に記載のコンピューティングシステム。
【請求項9】
前記コントローラが、前記分散コンピューティングクラスタの前記監視された計算スループット及び前記監視された処理レイテンシを処理して、前記第2のパラメータの値及び前記第1のパラメータの値を調整するために、前記分散コンピューティングクラスタとともにフィードバックループを実装する請求項に記載のコンピューティングシステム。
【請求項10】
前記コントローラが、最適化アルゴリズムを使用して、前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを最大化するように前記第1のパラメータ及び/又は前記第2のパラメータの値を制御する請求項1~のいずれかに記載のコンピューティングシステム。
【請求項11】
前記第1のパラメータが、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信の間の最小時間間隔を制御する遅延パラメータを含む請求項1~10のいずれかに記載のコンピューティングシステム。
【請求項12】
前記少なくとも一部のコンピューティングノードが、前記最小時間間隔にメッセージのグループとして送信するためのメッセージを蓄積するように構成される請求項11に記載のコンピューティングシステム。
【請求項13】
前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御することが、前記少なくとも1つのサービスレベル要件に違反せずに前記分散コンピューティングクラスタの計算スループットを最大化することを含む請求項1~12のいずれかに記載のコンピューティングシステム。
【請求項14】
前記第1のパラメータが、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信の間に蓄積されるメッセージの数を制御する請求項1~13のいずれかに記載のコンピューティングシステム。
【請求項15】
入力データを受信し、前記入力データを処理するためにコンピューティング要求を前記分散コンピューティングクラスタに投入し、前記分散コンピューティングクラスタから処理結果を受信し、前記処理結果から出力データを生成するようにそれぞれ構成された1又は2以上のインターフェース構成要素をさらに含み、前記1又は2以上のインターフェース構成要素が、前記第2のパラメータに従って前記分散コンピューティングクラスタへのコンピューティング要求の投入のレートを制限するように構成される請求項1~14のいずれかに記載のコンピューティングシステム。
【請求項16】
(a)前記1又は2以上のインターフェース構成要素の少なくとも一部が、前記分散コンピューティングクラスタが実行されるシステムとは別個のクライアントシステム(106)上で実行される;及び/又は
(b)受信された入力データの少なくとも一部が、優先レベルに関連付けられ、前記1又は2以上のインターフェース構成要素が、前記優先レベルに従って、分散データクラスタへの前記入力データの投入を管理するように構成される、請求項15に記載のコンピューティングシステム。
【請求項17】
コンピューティング要求の投入のレートを指定する第2のパラメータに従って、分散コンピューティングクラスタの外から前記分散コンピューティングクラスタの中への前記コンピューティング要求の投入のレート、レートリミッタを用いて制限するステップであって、前記分散コンピューティングクラスタが、
インターコネクトネットワーク(107)によって相互に接続された複数のコンピューティングノード(105)であって、前記インターコネクトネットワーク(107)を介して、前記複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって相互に通信し、前記コンピューティングノードの少なくとも一部の各々が、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成され、前記第1のパラメータが前記コンピューティングノードによるメッセージの送信の間の継続時間を指定する、前記複数のコンピューティングノード(105)を有する、前記制限するステップと、
前記少なくとも一部のコンピューティングノードにおいて、前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するステップであって、前記少なくとも一部のコンピューティングノードの各コンピューティングノードにおける前記蓄積が、前記第1のパラメータにより指定される、送信の間の前記継続時間の間に生じる、前記蓄積するステップと、
コントローラ(115)において、前記分散コンピューティングクラスタについての少なくとも1つの所定のサービスレベル要件を受信するステップと、
モニタにおいて、前記分散コンピューティングクラスタの計算スループットと、前記分散コンピューティングクラスタの処理レイテンシとを含むデータ処理特性を受信するステップと、
前記コントローラを使用して、前記処理レイテンシ及び前記計算スループットに基づいて前記第2のパラメータの値及び前記第1のパラメータの値を一緒に制御して、前記分散コンピューティングクラスタについての前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御するステップと
を含む方法。
【請求項18】
非一時的形態でソフトウェアを記憶するコンピュータ可読媒体であって、前記ソフトウェアが、コンピューティングシステムに、
コンピューティング要求の投入のレートを指定する第2のパラメータに従って、分散コンピューティングクラスタの外から前記分散コンピューティングクラスタの中への前記コンピューティング要求の投入のレートを、レートリミッタを用いて制限することであって、前記分散コンピューティングクラスタが、
インターコネクトネットワーク(107)によって相互に接続された複数のコンピューティングノード(105)であって、前記インターコネクトネットワーク(107)を介して、前記複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって相互に通信し、前記コンピューティングノードの少なくとも一部の各々が、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成され、前記第1のパラメータが前記コンピューティングノードによるメッセージの送信の間の継続時間を指定する、前記複数のコンピューティングノード(105)を有する、前記制限すること、
前記少なくとも一部のコンピューティングノードにおいて、前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積することであって、前記少なくとも一部のコンピューティングノードの各コンピューティングノードにおける前記蓄積が、前記第1のパラメータにより指定される、送信の間の前記継続時間の間に生じる、前記蓄積すること
コントローラ(115)において、前記分散コンピューティングクラスタについての少なくとも1つの所定のサービスレベル要件を受信すること、
モニタにおいて、前記分散コンピューティングクラスタの計算スループットと、前記分散コンピューティングクラスタの処理レイテンシとを含むデータ処理特性を受信すること、及び
前記コントローラを使用して、前記処理レイテンシ及び前記計算スループットに基づいて前記第2のパラメータの値及び前記第1のパラメータの値を一緒に制御して、前記分散コンピューティングクラスタについての前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御すること
を行わせるための命令を含む、コンピュータ可読媒体。
【請求項19】
コンピューティング要求の投入のレートを指定する第2のパラメータに従って、分散コンピューティングクラスタの外から前記分散コンピューティングクラスタの中への前記コンピューティング要求の投入のレートを、レートリミッタを用いて制限するための手段であって、前記分散コンピューティングクラスタが、
インターコネクトネットワーク(107)によって相互に接続された複数のコンピューティングノード(105)であって、前記インターコネクトネットワーク(107)を介して、前記複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって相互に通信し、前記コンピューティングノードの少なくとも一部の各々が、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成され、前記第1のパラメータが前記コンピューティングノードによるメッセージの送信の間の継続時間を指定する、前記複数のコンピューティングノード(105)を有する、前記制限するための手段と、
前記少なくとも一部のコンピューティングノードにおいて、前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するための手段であって、前記少なくとも一部のコンピューティングノードの各コンピューティングノードにおける前記蓄積が、前記第1のパラメータにより指定される、送信の間の前記継続時間の間に生じる、前記蓄積するための手段と、
コントローラ(115)において、前記分散コンピューティングクラスタについての少なくとも1つの所定のサービスレベル要件を受信するための手段と、
モニタにおいて、前記分散コンピューティングクラスタの計算スループットと、前記分散コンピューティングクラスタの処理レイテンシとを含むデータ処理特性を受信するための手段と、
前記コントローラを使用して、前記処理レイテンシ及び前記計算スループットに基づいて前記第2のパラメータの値及び前記第1のパラメータの値を一緒に制御して、前記分散コンピューティングクラスタについての前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御するための手段と
を備えるコンピューティングシステム。
【請求項20】
分散コンピューティングクラスタ(112)であって、
インターコネクトネットワーク(107)によって相互に接続された複数のコンピューティングノード(105)であって、前記インターコネクトネットワーク(107)を介して、前記複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって相互に通信し、前記コンピューティングノードの少なくとも一部の各々が、前記インターコネクトネットワーク上での前記コンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成され、前記第1のパラメータが前記コンピューティングノードによるメッセージの送信の間の継続時間を指定する、前記複数のコンピューティングノード(105)を有し、
前記少なくとも一部のコンピューティングノードが、前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するように構成され、前記少なくとも一部のコンピューティングノードの各コンピューティングノードにおける前記蓄積が、前記第1のパラメータにより指定される、送信の間の前記継続時間の間に生じる、前記分散コンピューティングクラスタ(112)を備えるコンピューティングシステム(104)であって、
前記コンピューティングシステムが、コンピューティング要求の投入のレートを指定する第2のパラメータに従って、前記分散コンピューティングクラスタの中への前記コンピューティング要求の投入のレートを制限するように構成され、
前記コンピューティングシステムが、
少なくとも1つの所定のサービスレベル要件を受信し、前記分散コンピューティングクラスタの処理レイテンシ及び前記分散コンピューティングクラスタの計算スループットに基づいて前記第2のパラメータの値及び前記第1のパラメータの値を一緒に制御して、前記少なくとも1つのサービスレベル要件に準拠しながら前記分散コンピューティングクラスタの前記計算スループットを制御するように構成されたコントローラ(110)をさらに備え、
前記第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するように構成された前記少なくとも一部のコンピューティングノードが、前記メッセージのグループを含む単一のネットワークメッセージを形成して、前記単一のネットワークメッセージを送信するように構成される、
前記コンピューティングシステム(104)。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年5月19日に出願した米国特許仮出願第63/027,008号の利益を主張するものであり、この仮出願の内容は、その全体が本明細書に組み込まれている。
【0002】
この説明は、分散コンピューティングネットワークにおける通信の管理及び最適化に関する。
【背景技術】
【0003】
分散コンピューティングシステムは、コンピュータの問題(computational problem)を解決するために協調して一緒に働くコンピューティングノードのクラスタを使用する。コンピューティングノードは、通常、インターコネクトを介して通信するネットワークに接続された別々のコンピュータ上に置かれる。動作中、コンピュータの問題は、複数のタスクに分割され、複数のタスクの各々が、分散コンピューティングシステム内のコンピューティングノードのうちの(別々の)1又は2以上によって解決される。コンピュータの問題の解決策は、インターコネクトを介したタスク(及びコンピューティングノード)間のメッセージの受け渡しによって調整される。メッセージは、計算の結果を下流のタスクに提供するため、及びデータを複製するためなど、多くの理由で行われるインターコネクトを介して受け渡される。
【発明の概要】
【課題を解決するための手段】
【0004】
分散コンピューティングシステムにおいては、ネットワーク内のノードの状態が変化する(例えば、命令が外部ソースからノードによって受信される、又はタスクの結果がノードによって生じさせられる)とき、分散コンピューティングシステム内のその他のコンピューティングノードが、変化を知らされる場合がある。その他のコンピューティングノードに変化を知らせるために、ネットワークトランザクションに関する情報を含むメッセージがノード間で伝達される。コンピューティングノード間のメッセージの伝達は頻繁に行われ得るので、メッセージの伝達において効率及び高スループットを維持することが望ましい。
【0005】
効率及び高スループットを実現するための1つの戦略は、異なるトランザクションからのいくつかのメッセージを束ねることと、単一のネットワークトランザクションにおいてメッセージの束を送信することとを含む。束ねる戦略は、単一のメッセージの送信のCPUコスト及びネットワークオーバーヘッドがほぼ決まっており、その同じトランザクションにおける後続のメッセージの送信のCPUコストが単一のメッセージの送信のCPUコストと比較して無視できるので、インターコネクト上のスループットを向上させる。しかし、束ねる戦略は、束を送信する前にメッセージが束を満たすのをシステムが待つことが原因で、望ましくない大きなネットワークレイテンシを引き起こす可能性もある。分散コンピューティングシステムのスループット及びレイテンシに影響を与える別のパラメータは、分散コンピューティングシステムへの要求の投入のレートである。例えば、高すぎる投入のレートは、輻輳を引き起こし、それによって、効率を低下させ、及び/又はレイテンシを増加させる可能性がある。本明細書において説明される態様は、望ましい全体的なネットワーク性能を達成するために、分散コンピューティングシステムの上述のパラメータを制御して、レイテンシ及びスループットのバランスをとる戦略に関する。
【0006】
大まかな態様においては、コンピューティングシステムが、インターコネクトネットワークによって相互接続された複数のコンピューティングノードを含む分散コンピューティングクラスタを含み、インターコネクトネットワークを介して、複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって互いに通信する。コンピューティングノードの少なくとも一部の各々は、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成される。少なくとも一部のコンピューティングノードは、第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するように構成され、コンピューティングシステムは、第2のパラメータに従って、分散コンピューティングクラスタへのコンピューティング要求の投入を制限するように構成される。コンピューティングシステムは、少なくとも1つの所定のサービスレベル要件を受信し、第2のパラメータの値及び第1のパラメータの値を制御して、少なくとも1つのサービスレベル要件に準拠しながら分散コンピューティングクラスタの計算スループットを制御するように構成されたコントローラも含む。
【0007】
態様は、以下の特徴のうちの1又は2以上を含む可能性がある。
【0008】
コンピューティングシステムは、入力データを受信し、入力データを処理するために要求を分散コンピューティングクラスタに投入し、分散コンピューティングクラスタから処理結果を受信し、処理結果から出力データを生じさせるようにそれぞれ構成された1又は2以上のインターフェース構成要素を含んでよい。インターフェース構成要素は、第2のパラメータに従って、分散コンピューティングシステムへの要求の投入のレートを制限するように構成されてよい。1又は2以上のインターフェース構成要素の少なくとも一部は、分散コンピューティングクラスタが実行されるシステムとは別個のクライアントシステム上で実行されてよい。受信された入力データの少なくとも一部は、優先レベルに関連付けられてよく、1又は2以上のインターフェース構成要素は、優先レベルに従って、分散データクラスタへの入力データの投入を管理するように構成されてよい。
【0009】
分散コンピューティングクラスタは、第2のパラメータに従って分散コンピューティングシステムへの要求の投入のレートを制限するように構成されたレートリミッタを含んでよい。1又は2以上のサービスレベル要件の各サービスレベル要件は、分散コンピューティングクラスタが要求を満たすか又は要求に応答しなければならない最大の継続時間を指定してよい。コンピューティングシステムは、分散コンピューティングクラスタの計算スループット及び分散コンピューティングシステムの処理レイテンシを監視する(observe)ように構成されたモニタを含んでよい。監視される計算スループットは、1又は2以上のコンピューティングノードのCPU負荷を監視することによって測定される場合がある。
【0010】
監視される計算スループットは、インターコネクトネットワーク内に存在するメッセージの数から推測される場合がある。監視されるレイテンシは、サービス要求レベルで測定される場合がある。監視されるレイテンシは、分散コンピューティングクラスタに要求を投入してから、要求に対する応答を分散コンピューティングクラスタから受信するまでの間の時間差として決定することによって測定される場合がある。分散コンピューティングクラスタに投入された要求及び分散コンピューティングクラスタによって出力された結果は、モニタを通過する場合がある。
【0011】
コントローラは、分散コンピューティングクラスタの監視された計算スループット及び監視された処理レイテンシを処理して、第2のパラメータの値及び第1のパラメータの値を調整するように構成されてよい。コントローラは、分散コンピューティングクラスタが要求を処理している間に、分散コンピューティングクラスタの監視された計算スループット及び監視された処理レイテンシを繰り返し処理して、第2のパラメータの値及び第1のパラメータの値を調整してよい。コントローラは、分散コンピューティングクラスタの監視された計算スループット及び監視された処理レイテンシを処理して、第2のパラメータの値及び第1のパラメータの値を調整するためのフィードバックループを実装してよい。コントローラは、最適化アルゴリズムを使用して、第1のパラメータの値を制御してよい。
【0012】
第1のパラメータは、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信の間の最小時間間隔を制御する遅延パラメータを含んでよい。少なくとも一部のコンピューティングノードは、最小時間間隔にメッセージのグループとして送信するためのメッセージを蓄積するように構成されてよい。第2のパラメータは、分散コンピューティングクラスタへのコンピューティング要求の投入のレートを制限するように構成された入力のレートパラメータを含んでよい。少なくとも1つのサービスレベル要件に準拠しながら分散コンピューティングクラスタの計算スループットを制御することは、少なくとも1つのサービスレベル要件のいずれにも違反せずに分散コンピューティングクラスタの計算スループットを最大化することを含んでよい。第1のパラメータは、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信の間に蓄積されたメッセージの数を制御する場合がある。
【0013】
別の大まかな態様においては、方法が、第2のパラメータに従って分散コンピューティングクラスタへのコンピューティング要求の投入を制限するステップであって、分散コンピューティングシステムが、インターコネクトネットワークによって相互接続された複数のコンピューティングノードであって、インターコネクトネットワークを介して、複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって互いに通信する、複数のコンピューティングノードを含む、ステップを含む。コンピューティングノードの少なくとも一部の各々は、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成される。方法は、少なくとも一部のコンピューティングノードにおいて、第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するステップと、コントローラにおいて、少なくとも1つの所定のサービスレベル要件を受信するステップと、コントローラを使用して、第2のパラメータの値及び第1のパラメータの値を制御して、少なくとも1つのサービスレベル要件に準拠しながら分散コンピューティングクラスタの計算スループットを最大化するステップとをさらに含む。
【0014】
別の大まかな態様においては、コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアが、コンピューティングシステムに、第2のパラメータに従って分散コンピューティングクラスタへのコンピューティング要求の投入のレートを制限させるための命令を含む。分散コンピューティングシステムは、インターコネクトネットワークによって相互接続された複数のコンピューティングノードを含み、インターコネクトネットワークを介して、複数のコンピューティングノードのうちのコンピューティングノードは、メッセージを受け渡すことによって互いに通信する。コンピューティングノードの少なくとも一部の各々は、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成される。また、命令は、コンピューティングシステムに、少なくとも一部のコンピューティングノードにおいて、第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積させ、コントローラにおいて、少なくとも1つの所定のサービスレベル要件を受信させ、コントローラを使用して、第2のパラメータの値及び第1のパラメータの値を制御して、少なくとも1つのサービスレベル要件に準拠しながら分散コンピューティングクラスタの計算スループットを最大化させる。
【0015】
別の大まかな態様においては、コンピューティングシステムが、第2のパラメータに従って分散コンピューティングクラスタへのコンピューティング要求の投入のレートを制限するための手段を含む。分散コンピューティングシステムは、インターコネクトネットワークによって相互接続された複数のコンピューティングノードであって、インターコネクトネットワークを介して、複数のコンピューティングノードのうちのコンピューティングノードが、メッセージを受け渡すことによって互いに通信し、コンピューティングノードの少なくとも一部の各々が、インターコネクトネットワーク上でのコンピューティングノードによるメッセージの送信を制御する第1のパラメータを用いて構成される、複数のコンピューティングノードを含む。コンピューティングシステムは、少なくとも一部のコンピューティングノードにおいて、第1のパラメータに従ってメッセージのグループとして送信するためのメッセージを蓄積するための手段と、コントローラにおいて、少なくとも1つの所定のサービス品質保証契約を受信するための手段と、コントローラを使用して、第2のパラメータの値及び第1のパラメータの値を制御して、少なくとも1つのサービスレベル要件に準拠しながら分散コンピューティングクラスタの計算スループットを最大化するための手段とをさらに含む。
【0016】
態様は、以下の利点のうちの1又は2以上を含み得る。
【0017】
多くの相互接続されたコンピューティングノードを含む分散コンピューティングクラスタは、大量の情報を受信し、処理し、その後、処理された情報をネットワーク外に伝達することができる。概して、分散コンピューティングクラスタに入る仕事(work)は「高優先順位」又は「低優先順位」と指定され得るが、コンピューティングクラスタ内では「優先順位」という概念がほとんどなく、すべての情報が平等に処理される。「優先順位」の概念は、それが分散コンピューティングクラスタに入る仕事に関連するとき、望ましいサービス品質保証契約(SLA,service level agreement)に関連する。しかし、SLAを満たすことは、システムに入る仕事をその優先順位に基づいて制御することだけでなく、コンピューティングクラスタ内の仕事のスループット及びレイテンシを制御することも必要とする。スループットか又はレイテンシかのどちらか一方を制御することは比較的容易であるが、SLAを満たすために両方を制御することは困難であり得る。
【0018】
スループットとレイテンシとの両方を制御する1つの難しさは、所与の時間に、どれだけの仕事がシステムに入るかを事前に(a priori)知る方法がないために生じる。任意の所与の時間にどれだけの仕事がコンピューティングクラスタに入るかにコンピューティングクラスタを適応させることは、仕事がシステムをあふれさせる可能性をなくし、それによって、コンピューティングクラスタが、システムにおいて処理されている仕事の内部スループット及びレイテンシを制御するだけでなく、その仕事のSLAを満たすことも可能にする--簡単に言えば、システムが何らかの入ってくる仕事の特定のSLAを満たすことができない場合、その仕事はコンピューティングクラスタによって受け入れられない。
【0019】
分散コンピューティングクラスタ内での仕事の処理の観点で見ると、SLAを満たすシステムの能力は、システム内の仕事のスループットとレイテンシとの平衡の不適切な管理によって妨げられ得る。実際のところ、高スループットと低レイテンシとの両方を常に同時に実現することはできない--分散コンピューティングクラスタ内で高スループットを実現するための簡単な手法は、多数のメッセージをコンピューティングノードのバッファに集め、その後、そのバッファの内容をその他のノードに伝達することを含む。そのとき、これは高スループットを実現するが、おそらくはバッファを満たすのに長い時間がかかり、したがって、高レイテンシをもたらすという問題が生じる。同様に、低レイテンシを実現するために、メッセージが受信されたらすぐにそれらのメッセージを送信するようにコンピューティングクラスタを構成する可能性があるが、これは、低スループットも生じる。本明細書において説明される態様は、仕事のために必要とされるSLAが満たされるような方法で、望ましいスループットとレイテンシとを平衡させるという問題を解決するように構成される。
【0020】
いくつかの態様においては、分散コンピューティングネットワークにおける最適化された通信が、分散コンピューティングクラスタへの仕事のエントリポイントにおいてゲートキーパー(gatekeeper)として働く「クラスタ呼び出し構成要素(call cluster component)」を実装する。態様は、クラスタ呼び出し構成要素を使用して、仕事に関連するSLAが満たされ得ない場合、システムにその仕事が入ることを防止する。さらに、いくつかの例において、クラスタ呼び出し構成要素は、有利なことに、低優先順位の仕事よりも高優先順位の仕事がシステムに入ることを許す優先権(preference)を示す。システム内に入ると仕事に関する「優先順位」の概念がないならば、高優先順位の仕事がそのSLAを満たし損なってしまうのは、システムが低優先順位の仕事で溢れかえってしまう場合である。システムに入るときに高優先順位の仕事に優先権を与えることによって、システムがその仕事のSLAを達成できる可能性がより高くなる。
【0021】
特定の態様は、有利なことに、分散コンピューティングクラスタのすべてのコンピューティングノードにわたって同期される内部クロックを実装する。SLAに対してシステム内の仕事の望ましいスループット及びレイテンシを実現するために、システムは、内部クロックによって示されるように、特定の時間間隔の後にその他のコンピューティングノードにそれらの内容を伝達するようにシステムのコンピューティングノードに指示する。そうすることで、システムは、有利なことに、システムのレイテンシが所定の時間間隔を超えないことを保証しながら望ましいスループットを実現することができる。
【0022】
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
【図面の簡単な説明】
【0023】
図1】例示的なデータ処理システムの図である。
図2】分散コンピューティングクラスタ及びコントローラを備える実行環境の図である。
図3】コントローラによって実行される制御アルゴリズムの例を示す図である。
図4】実行環境の動作の第1の例における図2の実行環境の初期状態の図である。
図5図2の実行環境の動作の第1の例における第1のステップの図である。
図6図2の実行環境の動作の第1の例における第2のステップの図である。
図7図2の実行環境の動作の第1の例における第3のステップの図である。
図8図2の実行環境の動作の第1の例における第4のステップの図である。
図9図2の実行環境の動作の第1の例における第5のステップの図である。
図10】実行環境の動作の第2の例における図2の実行環境の初期状態の図である。
図11図2の実行環境の動作の第2の例における第1のステップの図である。
図12図2の実行環境の動作の第2の例における第2のステップの図である。
図13図2の実行環境の動作の第2の例における第3のステップの図である。
【発明を実施するための形態】
【0024】
図1は、通信最適化技術が使用され得るデータ処理システム100の例を示す。システム100は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの1又は2以上のソースを含む可能性があるデータソース102を備え、それらの1又は2以上のソースの各々は、さまざまなフォーマット(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット)のいずれかでデータを記憶又は提供する場合がある。
【0025】
実行環境104は、以下でより詳細に説明されるように、計算タスクを実行するために1又は2以上のクライアントシステム106によって使用可能な分散コンピューティングクラスタ112(「アクティブデータクラスタ」と呼ばれることもある)を含む。分散コンピューティングクラスタの一例は、参照により本明細書に組み込まれる米国特許出願第16/175,133号明細書に記載されている分散コンピューティングクラスタである。実行環境104は、例えば、UNIX(登録商標)オペレーティングシステムのバージョンなどの好適なオペレーティングシステムの制御下の1又は2以上の汎用コンピュータでホストされる可能性がある。例えば、実行環境104は、ローカルの(例えば、対称型マルチプロセッシング(SMP,symmetric multi-processing)コンピュータなどのマルチプロセッサシステム)又はローカルに分散された(例えば、クラスタ若しくは超並列処理(MPP,massively parallel processing)システムとして接続された複数のプロセッサ)、或いは遠隔の又は遠隔に分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/若しくは広域ネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置(CPU、central processing unit)或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を備え得る。
【0026】
いくつかの例において、実行環境104は、データソース102からデータを読み取り、結果をデータソース102に戻して記憶するか、又は結果をさらなる処理のためにその他の下流のシステムに提供する。データソース102を提供するストレージデバイスは、実行環境104のローカルにあり、例えば、実行環境104をホストするコンピュータに接続された記憶媒体(例えば、ハードドライブ108)に記憶される可能性があり、又は実行環境104のリモートにあり、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続を介して実行環境104をホストするコンピュータと通信するリモートシステム(例えば、メインフレーム110)でホストされる可能性がある。
【0027】
データストレージシステム116は、開発者120が(例えば、1又は2以上のクライアントシステム106を介した分散コンピューティングクラスタ112による)実行環境における実行のためにコンピュータプログラムを指定することができる開発環境118によってもアクセス可能である。開発環境118は、一部の実装形態において、(データ処理構成要素又はデータセットを表す)頂点間の(作業要素(work element)、すなわち、データのフローを表す)有向リンクによって接続された頂点を含むデータフローグラフとしてアプリケーションを開発するためのシステムである。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters For Graph-Based Applications」と題された米国特許出願公開第2007/0011668号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第5,966,072号明細書に説明されている。このシステムによって作成されるデータフローグラフは、プロセス間で情報を移動するため及びプロセスに関する実行の順序を定義するためにグラフの構成要素によって表される個々のプロセスに情報を出し入れするための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む(例えば、グラフのリンクに従った通信パスは、TCP/IP若しくはUNIX(登録商標)ドメインソケットを使用するか、又はプロセス間でデータを受け渡すために共有メモリを使用することが可能である)。
【0028】
いくつかの例において、データソース102は、任意の数の異なる形態のデータベースシステムにデータを保持する。データは、おそらくはヌル値を含む、それぞれのフィールド(「属性」又は「列」とも呼ばれる)に関する値を有するレコードとして編成される可能性がある。データソースから初めにデータを読み取るとき、実行モジュール104は、概して、そのデータソース内のレコードについての何らかの最初のフォーマット情報から始める。場合によっては、データソースのレコード構造は、最初は知られていない可能性があり、その代わりに、データソース又はデータの分析後に決定される可能性がある。レコードについての最初の情報は、例えば、区別可能な値を表すビットの数、レコード内のフィールドの順序、及びビットによって表される値の型(例えば、文字列、符号付き/符号なし整数)を含み得る。
【0029】
1 実行環境の概要
図2を参照すると、実行環境104の一例の全体的な概要は、分散コンピューティングクラスタ112、コントローラ110、スロットル117、及びモニタ119を備える。非常に広く言えば、コントローラ110及び分散コンピューティングクラスタ112は、フィードバックループで動作して、クラスタ112に投入するための上流の構成要素(例えば、図示されていない「クラスタ呼び出し構成要素」又は「インターフェース構成要素」)によって提供される入力コンピューティング要求111のストリームを処理し、出力データ要素113のストリームを生成し、出力データ要素113は、分散コンピューティングクラスタ112に関連する任意のサービス品質保証契約又は要件に準拠しつつ分散コンピューティングクラスタ112の計算スループットを最大化するようにして、分散コンピューティングクラスタ112に投入されたコンピューティング要求111に応じて分散コンピューティングクラスタ112のノード105によって生成される応答であってよい。
【0030】
いくつかの例において、コントローラ110は、分散コンピューティングクラスタ112に関連する処理のLatency及び出力のレートRoutを特徴付ける情報をモニタ119から受信する。コントローラ110は、処理のLatency及び出力のレートRoutを用いて、分散コンピューティングクラスタ112内で送信されるメッセージの通信遅延d(「第1のパラメータ」と呼ばれることもある)と、分散コンピューティングクラスタ112への要求の投入のレートRin(「第2のパラメータ」と呼ばれることもある)とを決定する。出力のレートは、クラスタ112が出力データ要素113を出力するレートであってよく、出力データ要素113は、投入された要求111に対するノード105による応答であってよい。クラスタ112の計算スループットは、モニタ119により、出力のレートRoutを測定することによって監視されてよい。通信遅延dは、分散コンピューティングクラスタ112に提供され、以下でより詳細に説明されるように、分散コンピューティングクラスタのコンピューティングノード105を構成するために使用される。要求の投入のレートRinは、スロットル117に提供され、分散コンピューティングクラスタ112への新しい要求の投入のレートを制限するために使用される。
【0031】
いくつかの例において、入力要求111は、分散コンピューティングクラスタ112の外部の構成要素(例えば、クラスタ呼び出し構成要素)において定義された手順に従ってデータを処理するための要求を含む。分散コンピューティングクラスタ112は、入力要求111を処理し、処理の結果113(投入されたコンピューティング要求111に対するノード105による応答)を分散コンピューティングクラスタ112の外部の構成要素に提供する(例えば、クラスタ呼び出し構成要素に返す)。
【0032】
スロットル117は、分散コンピューティングクラスタ112への要求の投入のレートRinを制限するように構成される。非常に広く言えば、要求の投入のレートパラメータは、それらの要求が要求に関連するSLAによって指定された時間内に完了される可能性が低い場合、要求が分散コンピューティングクラスタ112に投入されないことを保証するように調整可能である。
【0033】
2 分散コンピューティングクラスタ
分散コンピューティングクラスタ112は、相互接続ネットワーク107(又は単に「インターコネクト」)によって相互に接続された多数のコンピューティングノード105を備える。インターコネクト107は、分散してデータを処理するためのコンピューティングノード105間のデータの通信を容易にする。例えば、インターコネクト107は、インターネットプロトコル(IP,internet protocol)ベース及び/又はイーサネットベースのネットワークを含む。非常に広く言えば、処理要求は、1又は2以上の外部構成要素(図示せず)によって分散コンピューティングクラスタ112に投入される。分散コンピューティングクラスタ112は、コンピューティングノード105及び相互接続ネットワーク107を使用して要求を処理して、外部構成要素に返される結果データ(例えば、投入されたコンピューティング要求に対するノード105による応答)を生成する。
【0034】
要求を処理する過程で、インターコネクト107を介して計算ノード105の間で頻繁にメッセージが受け渡される。通信遅延dは、分散コンピューティングクラスタ112のコンピューティングノード105が、インターコネクト107を介した互いへのメッセージの送信の間にどれだけ待機するかを示す。通信遅延の値が大きいと、コンピューティングノード105は、送信の間により長い継続時間待機することになる。コンピューティングノード105は、待機している間に、(例えば、単一のネットワークパッケージ(network package)で)後の送信のために一群のメッセージを蓄積する。したがって、通信遅延の値がより大きいと、送信ごとに送信されるメッセージがより多くなることに関連し、その結果、(すなわち、パケットの形成に関連するネットワークオーバーヘッドが減少するため)分散コンピューティングクラスタ112のより大きなスループットをもたらす。しかし、長い継続時間、待機することは、より大きなコンピューティングレイテンシも引き起こす。同様に、通信遅延dの値がより小さいと、分散コンピューティングクラスタのスループットがより低くなることに関連し、(すなわち、増加した数のパケットが形成されることに関連してネットワークオーバーヘッドが増加するため)、コンピューティングレイテンシもより低下する。
【0035】
3 コントローラ
上述のように、コントローラ110は、要求に関連するサービス品質保証契約(SLA)又はその他の制約の遵守を保証しながら分散コンピューティングクラスタ112のスループットを最大化するためのフィードバック制御メカニズムを実装する。コントローラ110は、モニタ119を使用して、分散コンピューティングクラスタ112に関連する処理のLatency及び出力のレートRoutを監視する。コントローラ110は、Latency、出力のレートRout、及びサービス品質保証契約SLAを入力として受け取り、それらの入力を処理して、分散コンピューティングクラスタ112の入力のレートRin及び通信遅延dを決定する。
【0036】
コントローラ110によって決定された入力のレートRinは、スロットル117に提供され、スロットル117は、分散コンピューティングクラスタ112への要求111の投入のレートをRinに維持する。コントローラ110によって決定された通信遅延dは、分散コンピューティングクラスタ112に提供され、分散コンピューティングクラスタ112は、通信遅延dに従って分散コンピューティングクラスタ112のインターコネクト107上のメッセージの送信の間の時間間隔を維持する。
【0037】
3.1 制御アルゴリズム
図3を参照すると、コントローラ110によって実行される制御アルゴリズムの一例が、whileループを開始することによって1行目で始まる。3行目において、whileループに実装された手順の最初の動作が、adjust(d)関数を呼び出す。13~16行目に定義されたadjust(d)関数は、dをさらに増加させることがRoutを増加させないdの最小値である値d*に到達することを目標として、出力のレートRoutを監視しながら通信遅延dの値を修正する。
【0038】
adjust(d)関数から返された後、コントローラ110によって実行されるアルゴリズムは4行目に進み、分散コンピューティングクラスタからの出力のレートRoutが分散コンピューティングクラスタへの要求の投入のレートRinに等しいかどうか(すなわち、分散コンピューティングクラスタが、現在、維持するのに十分なスループットを有するか)及びSLAとLatencyとの間の差が0より大きいかどうか(すなわち、分散コンピューティングクラスタがSLAを超えているか)を判定するためのテストが実行される。
【0039】
アルゴリズムの5行目においては、4行目に記載された条件が満たされる場合、コントローラ110が、要求の投入のレートRinを量δだけ増加させる。アルゴリズムの6行目においては、アルゴリズムの4行目に記載された条件のうちの1又は2以上が満たされない場合、コントローラ110が、要求の投入のレートRinを量δだけ減少させる。すなわち、分散コンピューティングクラスタ112が、現在、SLAに従っており、SLAを超えている場合、アルゴリズムは、入力のレートRinを増加させようとする。そうではなく、分散コンピューティングクラスタ112がその処理負荷に追いつくことができていないか、又はSLAを満たすことができていないかどちらかの場合、コントローラ110は、入力のレートRinを減少させる。
【0040】
そして、ループの前の反復で更新されたRinのバージョンを用いてループが繰り返される。ループの現在の反復におけるadjust(d)関数の呼び出しは、Rinの更新されたバージョンに関して、dをさらに増加させることがRoutを増加させないdの最小値に到達するためにdを修正する。adjust(d)関数が、RoutをRinの更新された値と等しくし、かつSLAとLatencyとの間の差を0より大きくするdの値をもたらす場合、アルゴリズムは、再びRinを増加させる。そうでない場合、アルゴリズムは、Rinを減少させる。
【0041】
分散コンピューティングクラスタ112のLatency及びスループットを監視することによって、図3のアルゴリズムは、要求に関連するサービス品質保証契約(SLA)又はその他の制約が破られないことを保証しながら、分散コンピューティングクラスタ112のスループットを最大化する。
【0042】
4 例1
図4~9を参照すると、実行モジュール104の第1の例示的な動作が、コントローラ110による分散コンピューティングクラスタ112の制御を示す。
【0043】
図4を参照すると、初期状態において、分散コンピューティングクラスタ112への要求の投入のレートRinは、2000(例えば、メッセージ/秒)に等しく、分散コンピューティングクラスタ112の出力のレートRoutは、2000(例えば、メッセージ/秒)に等しい。Rin及びRoutが等しいことは、分散コンピューティングクラスタ112が要求の投入のレートRinに追いつくのに十分なスループットを有することを示す。分散コンピューティングクラスタ112の監視されたLatencyは、40msであり、通信遅延dは、20msに等しい。コントローラ110は、要求111に関して70msのSLAを維持しなければならない。
【0044】
図5を参照すると、制御アルゴリズムの最初の反復において、コントローラ110は、制御アルゴリズムの2行目でadjust(d)関数を実行し、dは、既に、dをさらに増加させることがRoutを増加させない最小値であると判定される。次に、コントローラ110は、制御アルゴリズムの4行目に進み、RoutがRinに等しく(すなわち、2000=2000)、LatencyがSLAよりも小さい(すなわち、40ms<70ms)と判定する。4行目の条件が満たされているので、コントローラ110は、制御アルゴリズムの5行目に進み、Rinを2000から3000に増加させる。Rinの増加は、Routを2500まで増加させる(すなわち、分散コンピューティングクラスタ112の現在の構成では、要求の投入の増加したレートRinに追いつくのに十分なスループットを有さない)。
【0045】
図6を参照すると、制御アルゴリズムの2回目の反復において、コントローラ110は、制御アルゴリズムの2行目でadjust(d)関数を実行し、dを29msまで増加させ、それが、Routの3000への増加をもたらす。dの増加後、分散コンピューティングクラスタ112は、要求の投入の増加したレートRinに追いつくのに十分なスループットを有するように構成される。dの増加は、分散コンピューティングクラスタのLatencyの60msへの増加も引き起こす。
【0046】
図7を参照すると、制御アルゴリズムの2回目の反復は、制御アルゴリズムの4行目へ進み、RoutがRinに等しく(すなわち、3000=3000)、LatencyがSLAよりも小さい(すなわち、60ms<70ms)と判定する。4行目の条件が満たされているので、コントローラ110は、制御アルゴリズムの5行目に進み、Rinを3000から4000に増加させる。Rinの増加は、Routを3500まで増加させる(すなわち、分散コンピューティングクラスタ112の現在の構成では、要求の投入の増加したレートRinに追いつくのに十分なスループットを有さない)。
【0047】
図8を参照すると、制御アルゴリズムの3回目の反復において、コントローラ110は、adjust(d)関数を実行し、dを38msまで増加させ、それが、Routの4000への増加をもたらす。dの増加後、分散コンピューティングクラスタ112は、要求の投入の増加したレートRinに追いつくのに十分なスループットを有するように構成される。dの増加は、分散コンピューティングクラスタのLatencyの80msへの増加も引き起こす。
【0048】
図9を参照すると、制御アルゴリズムの3回目の反復は、コントローラ110により、制御アルゴリズムの4行目に進ませられ、RoutがRinに等しく(すなわち、3000=3000)、LatencyがSLAよりも大きく(すなわち、80ms>70ms)、したがって、SLAに違反すると判定する。4行目の条件が満たされていないので、コントローラ110は、制御アルゴリズムの8行目に進み、Rinを4000から3000に減少させる。Routは、300に減少し、Latencyは、60msに減少する(もはや、SLAに違反しない)。制御アルゴリズムの4回目の反復において、コントローラ110は、3行目に進み、adjust(d)関数を実行し、それが、dを29msまで減少させる。
【0049】
コントローラ110は、要求111に関連するサービス品質保証契約(SLA)が破られないことを保証しながら、分散コンピューティングクラスタ112のスループットを最大化するために、上述したように図3のアルゴリズムを実行し続ける。
【0050】
5 例2
図10~13を参照すると、第2の例において、分散コンピューティングクラスタ112の構成が変化し、コントローラ110が、構成の変化に適応するために図3のアルゴリズムを実行する。例えば、図10を参照すると、コンピューティングノード105のうちの2つが故障し、分散コンピューティングクラスタ112のコンピューティング能力の低下を引き起こす。
【0051】
分散コンピューティングクラスタ112内のコンピューティングノード105の数が5台から3台に減らされると、出力のレートRoutは、3000から2000に減らされ、一方、入力のレートRinは、3000のままである。Latencyは、85msまで増加する。
【0052】
図11を参照すると、コントローラ110は、制御アルゴリズムの3行目を実行し、adjust(d)関数を実行し、dを100msに増加させ、それが、Routの2500への増加をもたらす。dの増加後、分散コンピューティングクラスタ112は、要求の投入の増加したレートRinに追いつくのに十分なスループットを依然として有していない。dの増加は、分散コンピューティングクラスタのLatencyの120msへの増加も引き起こす。
【0053】
図12を参照すると、コントローラ110は、制御アルゴリズムの4行目に進み、RoutがRinに等しくなく(すなわち、2500!=3000)、LatencyがSLAよりも大きく(すなわち、120ms>70ms)、SLAに違反すると判定する。4行目の条件が満たされていないので、コントローラ110は、制御アルゴリズムの8行目に進み、Rinを3000から2000に減少させる。Routは、2000まで減少する(すなわち、分散コンピューティングクラスタ112の現在の構成では、要求の投入の増加したレートRinに追いつくのに十分なスループットを有する)。Latencyは、90msまで減少する。
【0054】
図13を参照すると、whileループの後続の反復において、コントローラ110は、制御アルゴリズムの3行目を実行し、adjust(d)関数を実行し、dに関して値40msに再び到達し、その結果、Routは2000のままである。図13の分散コンピューティングクラスタの構成は、要求の投入の減少したレートRinに追いつくのに十分なスループットを有する。分散コンピューティングクラスタのLatencyは、60msまで減らされる。
【0055】
図13の構成において、コントローラ110は、要求111に関連するサービス品質保証契約(SLA)が破られないことを保証しながら、分散コンピューティングクラスタ112の新しい構成でスループットを最大化するようにシステムを適応させた。
【0056】
6 代替形態
図6~13の説明において、コントローラ110は、要求111に関連するサービス品質保証契約(SLA)が破られないことを保証しながら、分散コンピューティングクラスタ112の新しい構成でスループットを最大化するようにシステムを適応させた。しかし、スループットの最大化の代わりに、スループットは、単に、(例えば、図5に示されたシナリオにおいて)サービスレベルの取り決めが破られていないと判定するとき、並びにRin及びRoutが等しく、分散コンピューティングクラスタ112が要求の投入のレートRinに追いつくのに十分なスループットを有することを示すと判定するとき、スループットのさらなる増加が実行されないように制御されてよい。
【0057】
また、図3の制御アルゴリズムは、例示的であるに過ぎず、粗い粒度(granularity)でRin及びdを調整するが、いくつかの例において、制御アルゴリズムは、より細かい粒度の調整を使用し、場合によっては、Rin及びdを調整するために可変の粒度を使用することが留意される。
【0058】
上述のadjust(d)関数は、多数の知られている最適化技術(例えば、勾配降下法又は確率的最適化技術)のうちの任意の1つを使用して実装され得る。
【0059】
上述の例は、分散データクラスタとインタラクションする単一の外部構成要素(例えば、クラスタ呼び出し構成要素)のみからの要求の投入を示すが、いくつかの外部構成要素が分散データクラスタと同時にインタラクションしている可能性がる。そのような場合、コントローラは、外部構成要素のうちの多く又はすべてのレイテンシ及びスループットを監視し、スループットが最大化され、外部構成要素からの要求のSLAが満たされることを保証するために分散データクラスタのリソースへのそれらの外部構成要素のアクセスを平衡させる。
【0060】
いくつかの例においては、外部構成要素(例えば、クラスタ呼び出し構成要素)に到着する入力データが、優先順位を付けられ、要求が、優先レベルに従って投入される。
【0061】
いくつかの例においては、レイテンシが、サービス要求レベルで(例えば、リモートプロシージャコールのレイテンシ)、又は単に分散データクラスタに要求を投入してから応答を受け取るまでの間にかかる時間によって測定される。
【0062】
いくつかの例においては、スループットが、CPU負荷又は「インフライト(in flight)」メッセージ数を監視することによって測定される。
【0063】
いくつかの例においては、各コンピューティングノードが、タイマを保持し、タイマ及び通信遅延dに基づいてインターコネクト上でメッセージをいつ送信すべきかを判定する。その他の例においては、集中的なクロックが、周期的にトリガ信号を配信し、周期が、通信遅延dとして定義される。トリガ信号は、コンピューティングノードで受信されるとき、コンピューティングノードにメッセージを送信させる。
【0064】
図には示されていないが、いくつかの例において、スロットル117の出力は、分散コンピューティングクラスタ112の処理レイテンシを決定するのを支援するためにモニタ119を介して供給される。
【0065】
上述のように、分散コンピューティングクラスタは、1又は2以上の外部構成要素(「クラスタ呼び出し構成要素」又は「インターフェース構成要素」と呼ばれることもある)とインタラクションする。外部構成要素は、対応するデータ処理手順に関連付けられてよい。いくつかの例において、外部構成要素は、その対応するデータ処理手順に従って処理するために入力データを受信する。外部構成要素は、入力データを使用して処理要求を形成し、処理要求を分散コンピューティングクラスタに提供する。分散コンピューティングクラスタは、上述の制御方式を使用して要求を処理し、出力を生成する。出力は、外部構成要素に返される。外部構成要素は、出力を処理して出力データを生成し、出力データを1又は2以上の下流の構成要素に送信する。
【0066】
7 実装形態
上述の手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを使用して実装されることが可能であり、又はフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)などの好適なハードウェアで、若しくは何らかの混成の形態で実装されることが可能である。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを使用して入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを使用して出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである場合がある)1又は2以上のプログラミングされた又はプログラミング可能なコンピューティングシステム上で実行される1又は2以上のコンピュータプログラムのプロシージャを含む可能性がある。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【0067】
ソフトウェアは、ある時間の期間(例えば、ダイナミックRAMなどのダイナミックメモリデバイスのリフレッシュ周期の間の時間)媒体の物理特性(例えば、表面ピット及びランド、磁区、又は電荷)を使用して、揮発性若しくは不揮発性記憶媒体又は任意のその他の非一時的媒体に具現化されるなど、非一時的形態で記憶される可能性がある。命令をロードするのに備えて、ソフトウェアは、CD-ROM又は(例えば、汎用若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体上に提供される可能性があり、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝播信号に符号化される)可能性がある。処理の一部又はすべては、専用のコンピュータ上で、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを使用して実行される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なるコンピューティング要素によって実行される分散された方法で実施される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、汎用又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読記憶媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムを用いて構成された有形の非一時的媒体として実装されると考えられてもよく、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【0068】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって画定される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされる可能性がある。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行され得る。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13