(58)【調査した分野】(Int.Cl.,DB名)
分散型コンピューティングシステムにおいて実行されるジョブの中の複数のタスクの個々の実行時間を分析するステップであって、前記ジョブの中のstragglerタスクセットを有する前記複数のタスクのうちのサブセットを決定し、前記分散型コンピューティングシステムは、複数のコンピューティング装置を有する、ステップと、
前記複数のタスクの性能属性を有する入力セットを用いて教師あり機械学習アルゴリズムを実行するステップであって、前記教師あり機械学習アルゴリズムは、前記stragglerタスクセットの決定から生成されるラベルを用い、前記性能属性は、前記ジョブの実行中に観測される前記複数のタスクの個々の属性を有し、前記教師あり機械学習アルゴリズムの適用は、前記複数のタスクの前記性能属性に基づく、ジョブの中でどのタスクがstragglerタスクであるかを示す条件を定めるルールセットの識別を生じる、ステップと、
前記ルールセットを記述するためにルールデータを生成するステップと、
を有する方法。
前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、教師なし機械学習アルゴリズムへの入力として前記実行時間を提供するステップを有する、請求項1に記載の方法。
前記教師なし機械学習アルゴリズムは、クラスタリングアルゴリズムを有し、前記クラスタリングアルゴリズムの結果は、前記タスクの前記個々の実行時間に基づき前記複数のタスクを複数のクラスタにクラスタリングし、前記ラベルは前記複数のクラスタに対応する、請求項2に記載の方法。
前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの1つのクラスタを前記stragglerタスクセットを表すとして識別するステップを更に有する、請求項3に記載の方法。
前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの2以上を前記stragglerタスクセットを表すとして識別するステップを更に有する、請求項3に記載の方法。
前記リソース割り当て属性は、前記対応するタスクに割り当てられる前記分散型コンピューティングシステムの中の個々のコンピューティング装置の属性を識別する、請求項9に記載の方法。
前記性能カウンタ属性は、中央処理ユニット(CPU)レート、基準メモリ使用量、割り当てられたメモリ、未マッピングページキャッシュ、合計ページキャッシュ、ディスクI/O時間、ローカルディスク空間使用量、のうちの1又は複数を有する、請求項9に記載の方法。
前記ルールデータは、分散型コンピューティングシステムにおけるジョブの将来の実行の中でタスクの割り当てを指示するために処理される機械解析可能コードを有する、請求項1に記載の方法。
前記ラベルの一部は、前記複数のタスクの中のタスクをstragglerタスクとしてラベル付けし、前記ラベルの別の部分は、前記複数のタスクの中の他のタスクを非stragglerタスクとしてラベル付けする、請求項1に記載の方法。
前記手段は、格納された命令を有する少なくとも1つの機械アクセス可能記憶媒体を有し、前記命令は、機械において実行されると、前記機械に請求項1乃至16のいずれか一項に記載の方法を実行させる、請求項17に記載のシステム。
コンピューティング装置を使用して、分散型コンピューティングシステムにおいて実行されるジョブの中の複数のタスクの個々の実行時間を分析するステップであって、前記ジョブの中のstragglerタスクセットを有する前記複数のタスクのうちのサブセットを決定し、前記分散型コンピューティングシステムは、複数のコンピューティング装置を有する、ステップと、
コンピューティング装置を使用して、前記複数のタスクの性能属性を有する入力セットを用いて教師あり機械学習アルゴリズムを実行するステップであって、前記教師あり機械学習アルゴリズムは、前記stragglerタスクセットの決定から生成されるラベルを用い、前記性能属性は、前記ジョブの実行中に観測される前記複数のタスクの個々の属性を有し、前記教師あり機械学習アルゴリズムの適用は、前記複数のタスクの前記性能属性に基づく、ジョブの中でどのタスクがstragglerタスクであるかを示す条件を定めるルールセットの識別を生じる、ステップと、
前記コンピューティング装置において、前記ルールセットを記述するためにルールデータを生成するステップと、
を有する方法。
1又は複数のコンピュータにより実行される監視要素であって、前記複数のタスクの性能を監視し、前記実行時間及び性能属性を識別する監視データを生成する、監視要素、を更に有する請求項20に記載のシステム。
【発明を実施するための形態】
【0004】
図1Aは、分散型コンピューティング環境と一緒に使用され得るコンピューティング装置(例えば、105a〜c、135a〜c、等)を含むシステム100の簡略表現を示すブロック図である。種々のコンピューティング装置は、同じ種類の装置のインスタンスであって良く、又は異種装置であって良く、これらは、特定の目標又は目的を達成するために互いに(例えば、1又は複数のネットワーク140を介して)接続する又は通信する能力を有する。ジョブ管理システム120は、例示的な分散型コンピューティングシステムの中のコンピューティング装置の連携を編成するために設けられて良い。幾つかの例では、分散型コンピューティングシステムの中に参加している装置は、特に、(例えば別個のシステムとして設けられるジョブ管理システムではなく)ジョブ管理システム120の機能を提供して良い。
【0005】
幾つかの実装では、1又は複数のジョブが定められ、例示的な分散型コンピューティングシステムに提供されて良い。ここで、ジョブはタスクセットにより構成され、タスクは、個々の装置を用いて完了するために分散型コンピューティングシステムの中の個々の装置に分散されて良い。この方法では、単一のジョブは、並列に動作する複数の別個の装置により処理され完了されて良く、ジョブはより迅速に又はシステムの中のコンピューティング装置のより柔軟な利用を通じて完了できる。ユーザインタフェースは、例示的なジョブ管理システム120に接続されて設けられて良い。ユーザインタフェースを通じて、ユーザは(例えば、ユーザ装置(例えば、130a〜c)を通じて)分散型コンピューティングシステムによる実行のためにジョブを定めて良い。ジョブ管理システム120は、ジョブ管理システム120が、分散型コンピューティングシステムの中に含まれる又はその中で利用され得る特定のコンピューティング装置のうちの1又は複数への見通しを有することができる機能を更に備えられて良い。ジョブ管理システム120は、ジョブ管理システム120(及び/又はその人間のユーザ)が分散型コンピューティングシステムの中の種々の装置の計算リソース(例えば、プロセッサ、メモリ、I/O、ネットワーク通信、及びタスクを完了するために使用され得る他のリソース)の相対的可用性をどのように認識するかに従い、ジョブのタスクの割り当てを分散させるために、この見通しに基づきルール又は設定を定めて良い。これは、(ジョブの中で装置が実行するタスクの種類及び数の観点で)他より重い負荷を負っている幾つかの装置を生じ得る。
【0006】
幾つかの例では、分散型コンピューティングシステムの中の種々の装置へのタスクの割り当ては、準最適でる場合がある。例えば、タスクの割り当ては、装置の計算能力又はジョブの中で指定される種々のタスクの必要の誤った又は不正確な仮定に基づくことがある。幾つかの例では、このような不効率及び欠陥は、解明することが困難な場合がある。幾つかの実装では、特定の分散型コンピューティングシステムによるジョブの性能を分析する機能を備えられるジョブ分析システム125は、ジョブの実行に伴う問題を診断する。例えば、ジョブの中の幾つかのタスクは、他より完了するのに長くかかることがあり、ジョブの最終的な終結を遅らせる「straggler」として動作する。幾つかの実装では、ジョブ分析システム125は、診断結果を導出するために、分散型コンピューティング装置によるジョブの実行を記述する性能データを受け付ける機械学習機能を備えられて良い。これは、特にジョブ管理システム(例えば、120)のタスク割り当て及び他のジョブ管理機能を向上し又は拡張するために使用されて良い。
【0007】
分散型コンピューティングシステムは、種々の異なる装置により構成されて良い。幾つかの実装では、特定ジョブのタスクは、複数のサーバシステム(例えば、135a〜c)の間で(例えば、均等に又は能力に基づき不均等に)分散されて良い。幾つかの実装では、このようなシステム(例えば、135a〜c)は、専ら、例示的なジョブ管理システム120により管理される種々のジョブの種々のタスクを処理する際の使用に専用の又はそのために設けられる計算リソースを備えられて良い。他の例では、サーバシステム(例えば、135a〜c)は、その主な目的又は負荷が分散型コンピューティングシステムに対して選出されたジョブの外に定められるシステムを有して良い。このような例では、サーバシステムは、分散型コンピューティングシステムの中での使用のための自身の主目的を提供し及び分散型コンピューティングシステムにより実行されるジョブの中で定められるタスクのサブセットを処理した後に、自身の有する任意の追加計算リソースを利用可能にしても良い。実際に、幾つかの例では、汎用目的又は専用コンピューティング装置は、両方とも、(例えば、特定のネットワーク又は環境の中での)主な役割を提供して良いが、分散型コンピューティング環境により実行されるべきジョブのタスクを処理するために(装置において能力が利用可能なときに)利用可能にされて良い。このような装置は、例えば、特に、ユーザコンピューティング装置(例えば、130a〜130c)、センサ又はIoT(Internet of Things)エンドポイント装置(例えば、105a〜105c)、他のエッジコンピューティング装置、を有して良い。分散型コンピューティングシステムは、他の例示的なシステムの中でも特に、
図1の例で示され説明された装置(例えば、105a〜105c、130a〜130c、135a〜c)を含む異なる装置の異種混合により構成される可能性があって良い。
【0008】
エッジ装置の場合、数百万個ものセンサ装置及びアクチュエータ装置が展開されることがあり、その各々は(対応するIoTシステムの中の特定機能のような)特定目的機能のために主に供され得る計算リソースを備えられるが、分散型コンピューティングシステムの中の種々のジョブの実行の際に支援するために役立てられ及び集約される場合もあることが理解される。これは、例えば、特に、ジョブがこれらの同じエンドポイント装置に又は該装置のより大きなIoTソリューションに関連するジョブにローカルな、それにより生成される、又はそれに直ちに利用可能なデータの処理を含むとき、特に有益であり得る。
【0009】
幾つかの実装では、エッジ装置(例えば、105a〜c)は、各々の装置105a〜cが環境の中の1又は複数の他の装置(例えば、105a〜c)又はシステムと相互運用することを可能にするために、コンピュータプロセッサ及び/又は通信モジュールを有して良い。各々の装置は、機械対機械、又はIoT(Internet of Things)システム若しくはアプリケーションの中で(例えば、他の装置又はソフトウェアにより)活用され又は利用され得る様々な種類のセンサ(例えば、110a〜c)、アクチュエータ(例えば、115a〜b)、記憶装置、電源、コンピュータ処理、及び通信機能の1又は複数のインスタンスを更に有することができる。幾つかの例では、装置間通信及びIoTアプリケーションの展開さえも、装置のうちの1又は複数(例えば105a〜c)が通信し1又は複数のネットワーク(例えば140)の中の他の装置及びシステムへのアクセスを得る1又は複数のゲートウェイ装置(例えば150)により容易にされて良い。同じ通信設備は、装置(例えば150a〜c)の(例えば、ジョブ管理システム120により管理される)分散型コンピューティング装置への参加を可能にするために活用されて良い。
【0010】
例示的なエッジ装置(例えば105a〜c)のセンサ又はセンサ提供者は、それらが存在し、取り付けられ、又は連絡する、環境の特性を記述するセンサデータを検出し、測定し、及び生成することができて良い。例えば、所与のセンサ(例えば、110a〜c)は、特に、動き、重さ、物理的接触、温度、風、雑音、光、コンピュータ通信、無線信号、位置、湿度、放射の存在、液体、又は特定の化学組成のような1又は複数の個々の特性を検出するよう構成されて良い。実際に、本願明細書に記載のようなセンサ(例えば、110a〜c)は、それぞれ新しい及び知られている環境特性を検出し及びそれについての対応するセンサデータを生成するために指定された及びその能力のある、種々のセンサの可能な無限の母集団の展開を期待している。アクチュエータ(例えば、115a〜b)は、装置が、その環境に影響を与えるために、ある種の動作を実行可能にできる。例えば、装置のうちの1又は複数(例えば、105a、c)は、入力を受け付け及び応答してその個々の動作を実行する1又は複数の個々のアクチュエータ(例えば、115a〜b)を有して良い。幾つかの例では、センサ装置により生成される生センサデータを使用し及びそれに反応する代わりに、アクチュエータは、このセンサデータの中間処理から生成された結果に対して作用して良い。幾つかの例では、センサデータの処理は、分散型コンピューティングシステムにより処理されるジョブとして実施されて良い。したがって、幾つかの例では、分散型コンピューティングジョブは、(種々の他の例示的なアプリケーションの中でも)例示的なIoTシステムの中の装置のアクチュエータに提供される結果を生成して良い。アクチュエータは、アクチュエータに、特にアラーム、カメラ(又は他のセンサ)、加熱、換気、及び空調(HVAC)機器、家電、車内装置、照明の電力又は動作を選択的にトグルさせるような、追加機能を起動する制御部を有し得る。
【0011】
IoTシステムは、1又は複数の結果又は成果物を供給するために相互運用し及び相乗作用を与える複数の異なる装置により構成される新しい又は向上したアドホックシステム及びネットワークを表し得る。このようなアドホックシステムは益々多くの製品として出現しており、機器は発展して、それらがコンピューティングプロセッサにより制御され又は監視され、及び他のコンピューティング装置(及びネットワーク通信能力を有する製品)と通信する機能を備えられる点で、「スマート」になってきている。例えば、IoTシステムは、機器、おもちゃ、道具、車両等のような「物(things)」に及び生物(例えば、植物、動物、人間、等)にさえ統合され又は取り付けられるセンサ及び通信モジュールから構築されるネットワークを含み得る。幾つかの例では、IoTシステムは、元来又は予想外に、種々の事柄及び関連する環境を監視する及びデータ分析システム及び/又は1又は複数の他のスマート装置を制御するシステムと相互接続するセンサの集合を備えて展開し、予め知られていない使用例を含む種々の使用例及び用途を可能にできる。さらに、IoTシステムは、これまで互いに連絡していなかった装置から形成でき、システムは、自然に又はオンザフライで(例えば、相互作用を定め又は制御するIoTアプリケーションに従い)作られ及び自動的に構成される。さらに、IoTシステムは、変化するエンティティグループに起点を置く又はそれにより制御され及び多様なハードウェア、オペレーティングシステム、ソフトウェアアプリケーション、及び技術を利用する装置のような、接続された装置(例えば、105a〜c)の複雑な及び多様な集合から構成される場合が多い。幾つかの例では、IoTシステムの中で集められたデータの処理は、IoTシステム(例えば、参加するために十分な計算能力を備える装置)の中の装置(例えば、105a〜c)を用いて分散型コンピューティングシステムを構築することにより、処理されて良く、このような処理に対応するジョブが定められて良い。
【0012】
図1の例に示すように、ユーザ装置(例えば、130a〜c)、IoT装置(例えば、105a〜c)、及び他のコンピューティング装置は、例示的な分散型コンピューティング環境の中で利用されて良い。例えば、コンピューティング装置は、スマートフォン又はタブレット装置、ウェアラブルコンピューティング装置(例えば、スマートウォッチ、スマートガーメント、スマートグラス、スマートヘルメット、ヘッドセット、等)のようなモバイルパーソナルコンピューティング装置、特定目的装置、及び、家庭、建物、車両自動化装置(例えば、スマート熱交換空調(HVAC)制御部及びセンサ、照明検出及び制御部、エネルギ管理ツール、等)、スマート家電(例えば、スマートテレビジョン、スマート冷蔵庫、等)のような非従来型コンピュータ拡張製品、のような例を含み得る。幾つかの装置は、特に、気象監視に関連する複数のセンサ(例えば、温度、風、湿度センサ、等)を含む気象センサ装置、交通センサ及び制御部のような、センサ及び/又はアクチュエータリソースをホスティングするための特定目的であり得る。幾つかの装置は、建物内に、街灯柱、標識、給水塔に固定的に、床(例えば、屋内又は屋外)に肯定され、又は他の固定若しくは静的構造に配置されて良い。他の装置は、特に、車両の内部又は外部に設けられるセンサ、パッケージ内センサ(例えば、貨物を追跡する)、活動する人間若しくは動物ユーザにより装着されるウェアラブル装置、アンテナ、地上若しくは水中無人飛行機、のようにモバイルであって良い。実際に、幾つかのセンサが環境内を移動し、特に、移動及び静止装置の両方を巻き込む使用例を含む、このような装置を用いる移動する対象又は変化する環境を含む使用例に関して用途が構築できる。
【0013】
1又は複数のネットワーク(例えば、140)は、コンピューティング装置(例えば、105a〜cm、130a〜c、135a〜c、等)、ジョブ管理システム120、ジョブ分析システム125、ゲートウェイ(例えば、IoTシステムのための)、及び分散型コンピューティングシステムを実装し、管理し及びサポートする他のシステムの間の通信を助けることができる。このようなネットワークは、有線及び/又は無線ローカルネットワーク、公衆ネットワーク、広域ネットワーク、ブロードバンドセルラネットワーク、インターネット、等を含み得る。
【0014】
一般に、例示的なコンピューティング環境100の中にある「サーバ」、「クライアント」、「コンピューティング装置」、「ネットワーク要素」、「ホスト」、「システムタイプシステムエンティティ」、「ユーザ装置」、「ゲートウェイ」、「IoT装置」、「センサ装置」、「サーバ」、及び「システム」(例えば、105a〜c、120、125、130a〜c、135a〜c、等)は、コンピューティング環境100に関連するデータ及び情報を受信し、送信し、処理し、格納し、又は管理するよう動作する。本願明細書で使用されるとき、用語「コンピュータ」、「プロセッサ」、「プロセッサ装置」、又は「処理装置」は、任意の適切な処理装置を包含することを意図する。例えば、コンピューティング環境100の中に単一の装置として示される要素は、複数のサーバコンピュータを含むサーバプールのような、複数のコンピューティング装置及びプロセッサを用いて実装されて良い。さらに、コンピューティング装置のうちの任意のもの、全部、又は一部は、Linux(登録商標)、UNIX(登録商標)、Microsoft Windows、Apple OS、Apple iOS、Google Android、Windows Server、等、を含む任意のオペレーティングシステム、並びに、カスタマイズされた及び独自仕様のオペレーティングシステムを含む特定のオペレーティングシステムの実行を仮想化するために適応される仮想機械を実行するよう適応可能であって良い。
【0015】
図1Aは複数の要素を含む又はそれに関連付けられるとして記載されるが、
図1Aのコンピューティング環境100の中に示される必ずしも全部の要素が本開示の各々の代替の実装方法で利用されなくて良い。さらに、
図1Aの例に関連して記載される要素のうちの1又は複数は、コンピューティング環境100の外部に置かれて良い。一方で、他の例では、特定の要素は、他の記載される要素のうちの1又は複数の中に含まれ又はその一部として含まれて良く、他の要素は図示の実装方法において記載されない。さらに、
図1Aに示した特定の要素は、他のコンポーネントと結合され、及び本願明細書に記載の目的に加えて、代替又は追加の目的のために使用されて良い。
【0016】
上述のように、装置又はエンドポイントの集合は、IEEE802.11標準ファミリの下で標準化されたようなWLAN(wireless local area network)、Zigbee Allianceの下で標準化されたようなホームエリアネットワーク、Bluetooth(登録商標) Special Interest Groupにより標準化されたような個人域ネットワーク、3GPP(Third−Generation Partnership Project)により標準化されたようなセルラデータネットワーク、及び無線若しくは有線接続性を有する他の種類のネットワークを利用し得るIoT(Internet−of−things)ネットワーキングに参加して良い。例えば、エンドポイント装置は、USB(universal serial bus)型接続、HDMI(High−Definition Multimedia Interface)、等のようなバスインタフェースを通じてセキュアドメインへの接続性も達成して良い。これらの同じ装置ネットワークは、例示的な分散型コンピューティングシステムを実装するために利用されて良い。
【0017】
図1Bの簡略ブロック図に示すように、幾つかの例では、「フォグ(fog)」と呼ばれることのあるIoT装置(例えば105a〜d)のメッシュネットワークと通信するクラウドコンピューティングネットワーク又はクラウドは、クラウドのエッジで動作して良い。図を簡単にするために、必ずしも全てのIoT装置105がラベル付けされない。
【0018】
フォグ170は、大規模相互接続ネットワークと考えられる。多数のIoT装置105が、例えば無線リンク165により、互いに通信する。これは、OCF(Open Connectivity Foundation)(商標)により2015年12月23日に発表されたOIC(open interconnect consortium)標準仕様1.0を用いて実行されて良い。この標準は、装置が互いを発見し相互接続のために通信を確立できるようにする。例えば、特にOLSR(optimized link state routing)プロトコル又はB.A.T.M.A.N.(better approach to mobile ad−hoc networking)を含む他の相互接続プロトコルも使用できる。
【0019】
本例では、3種類のIoT装置105、つまりゲートウェイ150、データアグリゲータ175、及びセンサ180が示される。しかしながら、IoT装置105及び機能の任意の組合せが使用されて良い。ゲートウェイ150は、クラウド160とフォグ170との間の通信を提供するエッジ装置であって良く、センサ180のための装置を充電し及び位置を特定するよう機能しても良い。データアグリゲータ175は、センサ180の充電を提供して良く、センサ180の位置も特定して良い。位置、充電警報、バッテリ警報、及び他のデータは、又はそれらの両者は、ゲートウェイ150を通じてクラウド160に伝えられて良い。本願明細書に記載のように、センサ180は、電力、位置特定サービス、又はそれらの両者を他の装置又はアイテムに提供して良い。
【0020】
任意のIoT装置105からの通信は、ゲートウェイ150に到達するまで、IoT装置105のうちの任意のものの間の最適経路に沿って渡されて良い。これらのネットワークでは、相互接続の数は、実質的な冗長を提供し、多数のIoT装置105を伴っても、通信を維持できるようにする。
【0021】
これらのIoT装置105のフォグ170は、クラウド160のエッジに置かれた単一の装置、例えばフォグ170装置として、サーバ145のような、クラウド160の中の装置に提示されて良い。本例では、フォグ170装置から来る警報は、フォグ170の中の特定のIoT装置105から来ていると識別されずに、送信されて良い。例えば、警報は、その警報を送信する任意の特定のデータアグリゲータ175を識別することなく、センサ180が、センサ180の充電及び配置のために返却される必要があることを示して良い。
【0022】
幾つかの例では、IoT装置105は、例えば特定機能を有する各々のIoT装置105と共に、命令型プログラミングスタイルを用いて構成されて良い。しかしながら、フォグ170を形成するIoT装置105は、宣言型プログラミングスタイルで構成されて良く、IoT装置105が条件、クエリ、装置障害に応答して、自身の動作を再構成し及び必要なリソースを決定できるようにする。対応するサービスロジックは、特に、論理的に単一装置として機能する装置アセンブリを含むアドホック装置アセンブリを生成するために装置がどのように構成され得るかを指示するために提供されて良い。例えば、センサ180の位置に関する、サーバ145の位置に居るユーザからのクエリは、フォグ170装置が、該クエリに応えるために必要な、特定のデータアグリゲータ175のようなIoT装置105を選択することをもたらす。センサ180が装置に電力を供給している場合、電力需要、温度、等のようなセンサ180に関連するセンサは、クエリに回答するために、装置にあるセンサ又は他の装置との協力の中で使用されて良い。本例では、フォグ170の中のIoT装置105は、電力センサ又は温度センサからのデータを追加するようなクエリに基づき、特定のセンサ180にあるセンサを選択して良い。さらに、IoT装置105のうちの幾つかが使用できない場合、例えば、データアグリゲータ175が故障している場合、フォグ170の中の他のIoT装置105は、代替を提供し、位置を決定可能にして良い。
【0023】
さらに、フォグ170は、センサ180及びデータアグリゲータ175の相対的物理位置に基づき、自身をより小さなユニットに分割して良い。本例では、フォグ170の一部の中でインスタンス化されたセンサ180のための通信は、センサ180の移動経路に沿ってIoT装置105に伝えられて良い。さらに、センサ180がある位置からフォグ170の異なる領域にある別の位置へ移動された場合、異なるデータアグリゲータ175は、センサ180の充電ステーションとして識別されて良い。
【0024】
一例として、センサ180が個人用炭化水素検出器のような化学工場で使用されるポータブル装置に電力供給するために使用される場合、装置は、倉庫又は制御室のような初期位置から、初期位置から数百フィート乃至数千フィートであり得る化学工場の中の位置へ移動されるだろう。設備全体が単一のフォグ170充電構造に含まれる場合、装置が移動するとき、データ、例えばセンサ180の設置情報は、センサ180のための警報及び位置機能を有するデータアグリゲータ175の間で交換されて良い。したがって、センサ180のバッテリ警報が、センサ180は充電される必要があることを示す場合、フォグ170は、ポータブル装置の中のセンサ180と交換する準備の整った、完全に充電されたセンサ180を有する最も近いデータアグリゲータ175を示して良い。
【0025】
クラウドコンピューティング及び高性能コンピューティングでは、大きなジョブは、分散型コンピューティング環境の中で並列実行するために、多くの小さなタスクに分割されて良い。ジョブの中の同種タスク実行時間を通じて(又は、ジョブが異なる異種ステージから構成される場合、ジョブのステージの間)最大並列処理を達成することが望ましいが、実際のシステムでは、これは達成することが困難であり得る。例えば、このような最大並列処理は、特に、分散型コンピューティングシステムの中の装置の間のハードウェアの相違、同じ装置で同時に実行しているタスクへの制約されたリソースの優先順位付けされた動的割り当て、負荷の不均等区分、データ局所性、のような様々な理由で達成可能ではないことがある。並列処理が達成されない場合には、ジョブの中の幾つかのタスクは、ジョブの中の残りのタスクより相当に遅く完了され、それによりジョブ(又はジョブのステージ)の完了を遅延させる、「straggler」タスク(本願明細書では単に「straggler」としても参照される)として明示されて良い。stragglerタスクの識別及び診断は、特に、分散型コンピューティングシステムの性能を評価する際に、及びジョブ完了性能を向上させる機会を識別する際に、重要なコンポーネントであり得る。
【0026】
伝統的データ分析ツールは、コンピューティングシステムの中で性能データを収集するために、様々なツール及びAPI(application programming interface)を利用している。特に、性能データのスケーラブルな表示、性能データの双方向視覚化、を実装するツールが使用されて良い。このようなツールは、生の消費にとって大きすぎ且つ複雑すぎる性能データセットを分析するために提供されて良い。しかしながら、このようなツールは、依然として、労働集約的な、間違いを起こしやすい、且つ非効率である相当の手作業による人間の分析に依存することがある。一例では、例示的なジョブ分析システムは、分散型コンピューティングシステムにより処理されるジョブの中の基礎にある低速タスクの条件を自動的に識別し及び診断する機能を備えられる。例えば、ジョブ分析システムは、ジョブの中のstragglerタスクの診断を実行するために、教師なし学習及び教師あり学習を結合して良い。
【0027】
一例では、例示的なジョブ分析システムは、先ず、教師なし学習技術を用いて、ジョブの中のstragglerタスクを識別して良い。教師なしクラスタリング技術は、ジョブ(又はジョブステージ)のタスクを、それらの実行時間に基づき、クラスタにグループ分けするために用いられて良い。1又は複数のクラスタは、低速タスクに対応して識別されて良く、タスクのこれらのクラスタはstragglerとしてラベル付けされる。その後、タスクstragglerラベル、追加タスク性能属性、及びタスクの個々のリソース割り当てを入力として取り入れる教師ありルール学習技術が、用いられて良い。教師ありルール学習技術は、これにより、ジョブについての診断結果を提示し及びstragglerタスクを推測する単純な且つ読み易いルールを学習して良い(タスクの割り当てメモリがγより小さい場合、タスクは「低速」である、等)。単純な且つ読み易いルールの生成を通じて、分析後調整又はオンラインリソース割り当て及びスケジューリングさえも、ジョブ完了性能を向上するために生じ得る。
【0028】
本願明細書に示され及び図示されるシステムのようなシステムは、(特に)本願明細書で紹介されるソリューションを実装し及び上述の例示的な問題の少なくとも一部を解決するために、ハードウェア及び/又はソフトウェアの中に実装される機械ロジックを有し得る。例えば、
図2は、分散型コンピューティングジョブを実行するために一緒に使用され得る複数のコンピューティング装置(例えば、105、135、205、等)を含むシステムを示す簡略ブロック
図200を示す。本例では、分散型コンピューティングジョブの実行を編成し及び監視し、並びに、監視中に生成される性能データに対して分析を実行し、又は(同一ジョブの将来のインスタンスを含む)将来の分散型コンピューティングジョブの中で実行され得る最適条件の識別において支援するために、例示的なジョブ管理システム120及びジョブ分析システム125が更に提供される。このような分析は、例えば特にジョブ分析システム125のstraggler診断エンジン210を用いて分散型コンピューティングジョブの中のstragglerタスクを識別し及び診断するために、機械学習により実施される分析を含んで良い。
【0029】
幾つかの実装では、ジョブ分析システム125は、特に、1又は複数のデータ処理装置(又は「プロセッサ」)(例えば206)、又は1又は複数のメモリ要素(例えば208)、及びstraggler診断エンジン210のようなプロセッサ206及び/又はハードウェア実装回路及びロジックにより実行されるコードを用いて実装されるコンポーネント、追加データ分析機能を提供するための他のエンジン(図示しない)、レポート生成器215、を含んで良い。一例では、straggler診断エンジン210は、クラスタリングエンジン220及びルールエンジン225のようなコンポーネントを有して良い。一例では、クラスタリングエンジン220は、タスクの監視から生成される実行記録データ230の中で(例えば、ジョブ監視ユーティリティ235により)報告される個々の実行時間に基づき、所与のジョブの中のタスクをクラスタリングするために、教師なし機械学習アルゴリズムとして実装されて良い。例えば、クラスタリングアルゴリズムが利用されて良く、報告するジョブタスクの実行時間を入力として取り入れる。例えば、クラスタリングエンジン210の幾つかの実装で、k平均クラスタリングアルゴリズムが利用されて良い。(以下の例で議論される技術を含む)このような機械学習技術を通じて、クラスタリングエンジン210は、クラスタを生成し、クラスタの少なくとも一部(例えば、最長実行時間を有するタスクを有するクラスタ)をstragglerタスクとして識別して良い。このような識別は、実行データ(及び対応するタスク)のラベル240として機能する。ここで、特に、幾つかのタスクはstragglerとして、他のタスクは非straggler又は他のカテゴリ(例えば、更に精細な粒度レベルに基づき、及びstragglerと非stragglerとの間のどこかに包含されるようなタスクを表す)として、ラベル付けされる。対応するラベルデータ240は、(観測される実行時間に基づき)クラスタリングエンジン220によりタスクの分類と関連して生成されて良い。
【0030】
例示的なstraggler診断エンジン210は、ルールエンジン225を更に有して良い。ルールエンジン225は、特定の分散型コンピューティングジョブの中のタスクの性能の詳細を記述する実行記録に対して更なる機械学習タスクを実行するために、クラスタリングエンジン220により生成されるラベル240を利用して良い。ルールエンジン225は、一例では、教師あり機械学習技術を実行して、特定のジョブの中のstragglerタスクを示す又はそれと正相関を有する条件及びパラメータを識別して良い。例えば、(どのタスクがstragglerであるか及びどれがそうでないかを識別する)ラベルを用いて、ルールエンジン225の機械学習ロジックは、入力として、タスク(straggler及び非straggler)の各々に対応し及びタスクの各々の詳細な性能特性を記述する実行記録230データを取り入れて良い。このような性能特性は、ジョブの実行の中で各々のタスクにより利用される処理、メモリ、I/O、ネットワーキング、及び他の計算リソースの実際の量のような性能カウンタ情報を有して良い。性能特性は、特に、(タスクを実行する)ホスト装置が(タスクが完了するために実際に利用したものと異なって良い)タスクに割り当てる又は指定する計算リソースの識別のようなリソース割り当て特性、又は特定ホスト装置がタスクを完了するために利用した特定の属性を更に有して良い。これらの種々の性能特性は、学習アルゴリズムの中の特徴として機能して良く、ルール又は観測は、所与のジョブの中のstraggler(及び/又は非straggler)タスクを生じるように見える性能特性の種々の組合せを識別するために機械学習分析から生成されて良い。1つの例示的な実装では、(以下の1又は複数の例において議論されるような)決定株利用教師あり機械学習アルゴリズムは、ルールエンジンの結果の発見を記述するルールデータ245を生成するために、例示的なルールエンジン225により利用されて良い。この意味で、「ルール」は、特定タスクの中のstragglerタスクを生じる又はその可能性のある予測条件又はルールを表して良い。しかしながら、これらの「ルール」は、特に、代わりに、ルールエンジン225のstragglerタスクに基づく教師あり機械学習アルゴリズムの実行から決定される傾向及び相関の指針又は順守のみを提供して良い。
【0031】
ルールエンジン225により生成されるルールデータ245は、幾つかの実装では、stragglerジョブに対する軽減及び性能分散型コンピューティングジョブをより効率的且つ最適化するために人間のユーザ及び/又は他のコンピューティングシステム(例えば、ジョブ管理システム120)により消費され得るルールデータ245(及び幾つかの例では、クラスタリング及びルールエンジン220、225の他の結果)からレポートデータを生成するために、例示的なジョブ分析システム125のレポート生成部215により利用されて良い。一例では、レポート生成部215は、タスクのうちの一部がなぜジョブの中のstragglerとして明示しているかの提示と共に、(例えば、分散型コンピューティング環境の)ユーザ管理者に最近完了したジョブ(又は複数のジョブ)におけるタスクの実行時間性能を説明するために、ユーザ装置(例えば130)のグラフィカルユーザインタフェースの中で提示するために構成されて良いレポートデータを生成して良い。ユーザは、次に、この情報を用いて、将来のジョブがより良好に展開され得る方法を、手動で評価して良い。幾つかの例では、他の例示的な使用及び利益の中でも特に、ユーザは、これらの同じジョブの将来のインスタンスにおいてだけではなく、他の異なる分散型コンピューティングジョブにおいても適用され得る報告データから見識を得て良い。さらに、ユーザは、この情報を用いて、分散型コンピューティングシステム内のジョブの中のタスクの分散を編成するために利用されるジョブ管理システム120において(例えば、少なくとも部分的に)適用される特性及び設定を調整して良い。さらに他の例では、レポートデータ機械可読又は解析可能であるよう構成されて良い。ここで、幾つかのルール及び条件(例えば、ルールデータ245から識別される)は、ジョブ管理システム120を用いて展開される後続のジョブの中で、ジョブ管理システム120により自動的に識別され及び適用されることが可能である。幾つかの実装では、特定のジョブについてstragglerタスク診断エンジンにより実行されるstragglerタスク分析は、更なる見識を記述するデータを導出するためにジョブ分析システム125を用いて実行される他のジョブ又は他のジョブ分析結果について実行されるstragglerタスク分析と共に利用されて良い。例えば、機械学習の更なるレイヤは、特に、最適性能のためにタスク定義及び割り当てを最適化するようジョブ固有の機会を決定するために装置の特定の組合せにより構成される分散型コンピューティングシステムに影響を与えるより広範な傾向及びルールを識別するために利用されて良い。
【0032】
分散型コンピューティングシステムは、種々のジョブの中のタスクを定義し及び種々の装置及びシステム(例えば105、135、205)実装に割り当てる際に、分散型コンピューティングシステムを支援するために、ジョブ管理システム120を更に利用し又はそれに依存して良い。一例では、ジョブ管理システム120は、1又は複数のプロセッサ(例えば、246)、1又は複数のメモリ要素(例えば、248)、及び分散型コンピューティングシステム(又は場合によっては、ジョブ管理システム120がサービスとして提供される複数の異なる分散型コンピューティングシステム)の中の管理タスクを実行するためにソフトウェア及び/又はハードウェアで実装される種々のコンポーネントを有して良い。例えば、例示的なジョブ管理システム120は、特に、ジョブマネジャ250、ジョブ編成エンジン265、性能モニタ(例えば、235)、グラフィカルユーザインタフェース(例えば、270)を有して良い。
【0033】
一例では、例示的なジョブ管理システム120のジョブマネジャ250は、ジョブ管理システム120により管理される分散型コンピューティング環境の中で完了のために展開され得るジョブ255の集合を管理するロジックを設けられて良い。ジョブ255の各々は、タスク260の個々のセットにより構成されて良い。幾つかの実装では、ジョブマネジャ250は、タスク260のこのセットを定義する又は識別する際に支援するために利用されて良い。ジョブマネジャ250は、幾つかの実装では、特徴の中でも特に、分散型コンピューティング環境の中でタスクをどのように分散するかを決定する際に支援するために、ジョブ及びそれらのタスクの種々の要件、依存性、又は他の特徴を識別する機能を追加で有して良い。
【0034】
例示的なジョブ管理システム120は、ジョブ編成ロジック265を更に有して良い。ジョブ編成ロジック265は、分散型コンピューティング環境の中のコンピューティング装置の数を決定し、及びジョブの種々のタスクをこれらのコンピューティング装置にどのように分散するか(及び、(例えば、能力の欠如、十分なセキュリティ若しくは許可、必要な計算リソース、等に基づき)これらのコンピューティング装置のうちの幾つかが除外されるべきか否か)を決定するために利用されて良い。ジョブ編成エンジン265は、(合成タスク260のうちの1又は複数において)ジョブ255の中で作用されるべきデータを更に識別して良く、このようなデータの配信又はアクセスを編成して、該データを該データを使用し得るタスクを実行する装置に利用可能にして良い。さらに、幾つかの例では、幾つかのタスクは、他に依存して良い。したがって、場合によっては、特に、ジョブ編成ロジック265は、これらのタスクの実行の順序を編成し、依存するタスクをホスティングする異なる装置の間の通信を編成し、及び/又は特定の依存するタスクの割り当てを共通ホスト装置と統合して良い。ジョブ管理システム120は、所与のタスクに専用の(又は必要であると公表された)計算リソースの量を解決するためにも使用されて良く、分散型コンピューティング環境の中の種々の装置に、タスクの割り当てと関連してこのような情報を提供して良い。幾つかの実装では、グラフィカルユーザインタフェース(GUI)270は、ジョブ管理システム120と関連して提供されて良く、ユーザがジョブ編成ロジック265に決定を提供し及び所与のシステムの中の分散型コンピューティングジョブの少なくとも幾つかの設定及び実装に影響を与えることを可能にする。
【0035】
図2の例では、例示的なジョブ管理システム120は、ジョブ性能監視部235を含むよう示される。ジョブ性能監視部235は、分散型コンピューティングシステムによる所与のジョブの実行を監視するために使用されて良い。幾つかの例では、監視ユーティリティ235は、(例えば、ジョブタスクを実行する装置に存在する)複数の監視部からデータを集め及び統合して良く、ジョブ及び自身の合成タスクの実行の属性を記述する性能データ230を生成して良い。幾つかの例では、監視部235は、特に、対応するジョブ分析システムによる使用のためにフォーマット化され、標準化され、又は適応された性能データを生成して良い。
【0036】
上述のように、分散型コンピューティング環境は、異種装置を含む種々の装置を有し得る。第1の例では、単に分散型コンピューティング環境の中のノードとして使用される目的で、ジョブハンドラシステム(例えば、205)が提供されて良い。ジョブハンドラシステム205は、一例では、装置が様々な異なるジョブの中の様々な異なるタスクを柔軟に実行できるように種々の計算リソースを備えられる汎用コンピューティング装置であって良い。一例では、ジョブハンドラシステム205の計算リソースは、特に、1又は複数のプロセッサ(例えば、272)、1又は複数のメモリ要素(例えば、274)、ネットワーク通信モジュール276、入力/出力(I/O)又は他のバス若しくは相互接続リソース(例えば、278)を有して良い。一例では、ジョブハンドラシステム205は、システム205が例示的な分散型コンピューティングシステムに参加し及び分散型コンピューティングシステムを用いて実行されるジョブの中のタスクを処理することを可能にする他の特徴及び機能の中でも特に、(例えば、ジョブ管理システム120により生成され及び場合によっては他のシステムから委任されるような)タスク割り当てを受け付け及びタスクを完了するために使用されるべき機械(例えば、リソース割り当て)を決定するためのインタフェースを提供するために、タスクハンドラロジック(例えば、280a)を設けられて良い。他の装置(例えば、105、135)は、分散型コンピューティングシステムへのそれらの参加を可能にするために、同じ又は同様のロジック(例えば280b〜c)を有して良い。
【0037】
他の装置(例えば、105、135)の計算リソースは、同様に、これらの他の装置がそれらのリソースについての競合する要求を有するときでも、分散型コンピューティング装置において利用されて良い。例えば、主に1又は複数のアプリケーション及びサービス(例えば、290a〜b)(及び対応するデータ)をホスティングするために使用される例示的なサーバシステム(例えば、135)が設けられて良い。しかしながら、この例示的なサーバシステムは、サーバシステムが少なくとも時には分散型コンピューティングジョブの中で使用され得るように余剰計算能力を保持して良い。例えば、例示的なサーバシステム135は、他の例示的なリソースの中でも特に、分散型コンピューティングジョブの中の1又は複数のタスクの実行において必要とされる又は価値のあり得る1又は複数のプロセッサ(例えば282)、1又は複数のコンピュータメモリ要素(例えば284)、通信及びネットワーキングリソース(例えば286)、オペレーティングシステムリソース(例えば288)を有して良い。
【0038】
別の例として、センサ装置又は他の専用若しくはスマート装置のようなエンドポイント装置(例えば105)は、同様に、エンドポイント装置105の他の主要な任務又は機能にも拘わらず、分散型コンピューティングジョブを実行する際に使用を求められ得る利用可能計算リソースを有して良い。例えば、
図2の例では、装置(例えば105)は、他のコンポーネントの中でも特に、1又は複数のデータ処理装置(例えば292)、1又は複数のメモリ要素(例えば294)、1又は複数の通信モジュール(例えば296)、バッテリ(例えば298)、又は他の電源(例えば、太陽電池、AC接続及びアダプタ、等)を有して良い。各々の装置(例えば105)は、(個々のセンサ及びアクチュエータの動作を含む)装置の意図される機能を実現するために、ハードウェア、センサ(例えば110)、アクチュエータ(例えば115)、及び他のロジック(例えば235)を有し得る。幾つかの例では、装置は、同じ又は様々な種類の1又は複数のセンサ(例えば110)、様々な種類のアクチュエータ(例えば115)、コンピューティングアセット(例えば、個々のプロセッサ及び/又はソフトウェアロジックを通じて)、セキュリティ機能、データ記憶アセット、及び他のリソースのようなこのような資産を設けられて良い。通信モジュール(例えば296)は、幾つかの展開の中の通信アセットとしても利用されて良く、他のシステム及び装置と共に1又は複数の技術(例えば、WiFi、Bluetooth(登録商標)、Near Field Communications、Zigbee、Ethernet、等)を利用して1又は複数のネットワーク(例えば140)を介して装置の通信を実現するためにハードウェア及びソフトウェアを有して良い。これらのリソースは、主にエンドポイント装置105がその特定の目的を実行し又は機械対機械(M2M)、IoT、若しくは他のシステムに参加できるようにするために、提供されて良が、これらのリソースは、利用可能なとき、様々な異なるジョブを実行可能な分散型コンピューティングシステムを実装するためにも部分的に利用されて良く、特に、これらのジョブのタスクのうちの幾つかは、このようなエンドポイント装置(例えば105)に割り当てられる。
【0039】
図3の例を参照すると、簡略ブロック
図300が示され、分散型コンピューティングジョブの中のstragglerタスクを識別し及び診断するために分析を実行するロジックを備えられる例示的なジョブ分析システム125の使用を説明する。例えば、複数の異なるコンピューティング装置で構成される分散型コンピューティングシステム305により完了される特定の分散型コンピューティングジョブの個々のタスクの実行を記述するために、性能データ230が生成されて良い。性能データ230は、システム305の中の様々なホスト装置によるジョブタスクの実行を監視する1又は複数の監視ツールから収集されて良い。性能データ230は、他の可能な例の中でも特に、タスクの実行を完了するために要した時間(又は実行時間)、各々のタスクについて性能属性アレイを記述する性能カウンタデータ(例えば、ホストシステムの性能カウンタにより生成される)、個々のホスト装置のリソースが対応するタスクの実行のためにどのように割り当てられたかを記述するリソース割り当て属性、を含むタスクの各々の性能属性を記述できる。
【0040】
図3の例では、特定のジョブの中の各々のタスクの実行時間情報は、性能データから(例えば、実行時間データ310として)、モジュール220に提供されて良い。モジュール220は、k平均クラスタリングアルゴリズム、期待最大化アルゴリズムとガウスの混合モデル、又は別のクラスタリングアルゴリズムのような、教師なし機械学習クラスタリングアルゴリズムを実装する。クラスタリングアルゴリズムは、実行時間によりジョブタスクをクラスタリングするために使用されて良く、1又は複数のクラスタは、ジョブの中のstragglerタスクに対応するとして識別される。モジュール220は、これらのクラスタに基づくラベル240のセットを生成して良い。ラベル240のセットは、タスクがジョブの中でstragglerであったか否かの程度を示すタスクの各々のラベルを含む。幾つかの例では、ラベル付けは2値であり、各々のタスクはstragglerとして又はstragglerではないとしてラベル付けされる。他の例では、非2値ラベル付けが定められ適用され、特に、ラベルは、ジョブの中の他のタスクの実行時間から分岐する対応するタスクの実行時間のより精細な指示を提供する。
【0041】
図3の例を続けると、教師あり機械学習診断アルゴリズムは、ジョブ分析システム125の別のモジュール225を通じて提供されて良い。別のモジュール225は、性能データ230の中で定められる追加タスク性能属性と記述する入力と一緒に、(220における)教師なし機械学習クラスタリングから生成されるタスクラベル240の中で定められるラベル付けを取り入れて良い。例えば、システム性能カウンタにより収集されるような性能属性、及び各々のタスクについて生成されるリソース割り当てを記述する属性は、性能230の中で文書化されて良く、(モジュール220により決定されるラベルに拘わらず、ジョブのタスクの各々についての)これらの追加属性を識別するデータ(例えば315)は、評価のためにモジュール225に提供されて良い。一例では、決定株利用アルゴリズム、決定木又は決定リスト学習のためのC4.5アルゴリズム、分類及び回帰ツリー(classification and regression tree:CART)、又は別のアルゴリズムのような教師あり機械学習技術は、タスクの実行時間が該タスクをstragglerタスク又は非stragglerタスクとして明示させるタスクに対応する又はそのタスクを示す(データ315からの)属性の組合せを決定して良い。このような属性の組合せ(特徴の複数の識別される組合せが存在して良い)は、モジュール225により実行される教師あり機械学習ステップを用いて決定され、(例えば、幾つかの例では、straggler及び非stragglerタスクに対応するとして識別される属性に基づくルール又は条件の形式で)これらの属性を示すためにジョブ分析システム125において生成されるルールデータ245の基礎を形成して良い。
【0042】
図3の例を続けると、幾つかの実装では、ルールデータ245の結果は、他のシステムへの提示又はそれによる使用のために、パッケージされて良い。例えば、(320で)ルールデータ245の結果に基づくレポートが生成され提供されて良い。ルールデータ(及び対応するレポート)は、(例えば、対応するユーザ装置(例えば130)において)ユーザに発見の人間により可読な要約(例えば、straggler関連ルール、条件、相関、等)を提示するために、生成されて良い。ユーザは、ルールデータ245の情報の中で具現化されるフィードバックに基づき、分散型コンピューティングジョブの将来のインスタンス(又は概して分散型コンピューティングジョブ)の中で生成され得る調整を決定して良い。ユーザは、特に、(例えば、対応するジョブ管理システム120とインタフェースすることにより)このような将来の分散型コンピューティングジョブに対するこれらの調整を行うために、これらの見識を利用して良い。さらに、幾つかの例では、ルールデータ245が生成されて良い。ルールデータ245の少なくとも一部は、ジョブ管理システムにより直接消費のためにパッケージされて良い(例えば、325)。例えば、特定のジョブに対応するルールデータ245は、特定のリソース割り当てレベルが、特定のタスク又は特定種類のタスクのために概して不十分であることを示して良く、この情報はジョブ管理システム120に(機械可読形式で)提供されて良い245。幾つかの例では、ジョブ管理システム120は、ルールデータ245に基づき分散型コンピューティングジョブの中の類似タスクの実行に対する調整を自動化して良い。他の例では、ジョブ管理システム120は、単に、特にルールデータ245に基づき特定の分散型コンピューティングジョブの実行についての提案を生成し及び提供することにより、例示的な分散型コンピューティングシステムを管理するユーザにガイダンスを提供して良い。
【0043】
上述のように、計算の枠組みは、分散型及び並列計算のために、ジョブを多数の小さなジョブに分割して良い。合成タスクの完了状態が監視されて良く、stragglerタスクのためにバックアップタスクがジョブ実行中に開始されて良い。しかしながら、伝統的な分散型コンピューティングシステムは、標準的に、実行後分析を提供せず、stragglerが同一ジョブ又は類似ジョブの将来の実行の中で生じるのを防ぐためにstragglerを診断する助けにならない。さらに、バックアップタスクがstragglerのために開始されるとき、ジョブ性能は必ずしも影響されない。例において、
図3で上述したように、自動化アプローチを有する実行後分析は、診断結果の生成と一緒に提供されて良い。ジョブオーナは、将来に類似stragglerタスクの発行を防ぐために、この診断結果を後に利用して良い。
【0044】
例示的なジョブ分析システムは、上述の例のように、機械学習方法を用いてクラウドコンピューティング及び高性能コンピューティングにおけるstragglerを識別し及び診断するために、2段階アプローチを利用して良い。例えば、
図4の簡略ブロック
図400に示すように、第1段階では、ジョブの中の(又はジョブのステージの中の)タスク405の間のstraggler415は、クラスタ数選択のためにk平均クラスタリングをベイズ情報量基準(Bayesian information criterion:BIC)と結合する教師なしクラスタリング410を用いて識別されて良い。第2段階では、straggler推定のために簡易且つ読みやすいルールセットを生成するために、カスタマイズされた決定株利用アルゴリズムのような教師ありルール学習425が利用されて良い。
【0045】
図4の例をより詳細に調べると、straggler識別の第1段階で、ジョブの中の(又はジョブのステージの中の)全てのタスクの実行時間が、タスクのサブセットをstragglerとして識別するために、k平均クラスタリングアルゴリズムに入力として供給されて良い。例えば、実行時間t
(1),...,t
(n)を有するジョブの中のn個のタスクに対応する入力が提供されて良い。さらに、k=1,...,k
max、及びタスクi=1,...,nについて、クラスタ構成要素はm(i)∈{1,...,k}に従いランダムに割り当てられる。アルゴリズムは、次に、集束が実現するまで(例えば、クラスタ構成要素の再割り当てが無い)、繰り返されて良い。
【0046】
一実施形態では、k平均クラスタリングアルゴリズムの第1ステップは、次式に従い現在構成要素を有するクラスタの重心を計算することにより開始して良い。
【0047】
【数1】
タスクのクラスタ構成要素は、次式に従い再割り当てされて良い。
【0048】
【数2】
さらに、各々のクラスタの確率、各々のクラスタの標準偏差、及びクラスタリング結果のベイズ情報量基準(BIC)は、次式に従い計算されて良い。
【0049】
【数3】
次に、次式に従う最適k最小化BICを有するクラスタリング結果が決定され使用されて良い。
【0050】
【数4】
クラスタリング結果において、
【0051】
【数5】
である場合、ラベルが生成されて良い。このラベルは、最も遅いクラスタの中のタスクをstragglerとしてラベル付けする。その他の場合、ヌルが出力され、タスクセットの中で識別されるstragglerがない。
【0052】
上述の例及び式で紹介したように、所与のジョブの中のstragglerタスクを識別するために利用されるクラスタリングモジュールの実装は、クラスタ数選択のためにk平均同種クラスタリングをベイズ情報量基準と結合するアルゴリズムを利用して良い。種々のクラスタ構成要素が試されて良い。各々の試行では、標準k平均クラスタリングが実行して良く、現在クラスタ構成要素を用いてクラスタ重心を推定するステップとタスクの重心との近接性に基づきタスクをクラスタに再割り当てするステップとの間を反復する。この例示的なアルゴリズムは、反復の中でクラスタ構成要素再割り当てが生じないとき、収束する。この点で、ベイズ情報量基準(BIC)は、特定のクラスタ構成要素kについて計算されて良い。BICの最初の項は次の通りである。
【0053】
【数6】
上式は、クラスタの各々の中のタスク時間値が正規分布に従うと仮定して、クラスタリングモデル(例えば、値が低いほど、データはより高い確率で生じる)から全てのタスク実行時間データを集める負の対数尤度を記述する。第2の項は、次の通りである。
2k log n (2)
この式は、事前確率によるおよそのモデル測定の複雑性を記述する。ここで、2kの値は、k正規分布の記述に関連するパラメータの総数である(各々の分布について、その平均のための1つのパラメータを有し、その標準偏差のための別のパラメータを有する)。最適クラスタ数が選択されて良い。これは、データ収集の負の対数尤度のモデル及びモデル複雑性との連帯目的を最小化する。対応するクラスタリング結果では、2つの最も遅いクラスタが調べられて良い。一例では、最も遅いクラスタのタスク数が所定閾を超えない、及びその平均実行時間が2番目に遅いクラスタの平均実行時間より非常に長い場合、このクラスタにグループ分けされたタスクの各々は、分散型コンピューティングジョブの中のstragglerタスクとしてラベル付けされて良い。アルゴリズムの1回の実施の中に組み込まれる経験則は、タスクのうちの少数部分のみが速いときジョブの中の大半のタスクをstragglerとしてラベル付けすること、又はほんの少し遅いタスクをラベル付けすること、を防止して良い。
【0054】
タスクがstragglerタスク又は非stragglerタスクとして識別されたことを示す、タスクのラベルを決定すると、第2の機械学習段階は、stragglerラベル(つまり、straggler識別からの出力)、リソース割り当て、及びタスクの性能カウンタが入力として採用される場合に、適用されて良い。診断結果は、それらのリソース割り当て及び性能カウンタに基づきstragglerを推定するルールであって良い。これらのルールは、簡易な人間に(及び/又は機械に)可読なルールとして具現化されて良い。これにより、stragglerとして識別されたタスクが何故遅いかを説明する興味深く価値のある見識が発見され得る。これは、ジョブオーナが有望な原因を理解し及びジョブ完了性能を向上するために(ジョブ管理システムを用いて)分析後調整を実行するのを支援できる。
【0055】
一例では、診断ルールは、教師ありstraggler診断アルゴリズムから返される決定株分類器を通じて提供されて良い。1レベルのみを含む決定木の特別な例として、決定株は、タスクの入力属性に対して単一の条件テストを行って良く、テスト結果に基づき、タスクがstragglerか非stragglerかを決定する。決定株は、単純なルールに書き換えられる。例えば、条件テストは、1つのみの属性(例えば、「不可分条件」)に適用され、ルールは、この属性に基づき、特に次のように生成されて良い。「割り当てメモリがγより大きくない場合、タスクはstragglerである(その他の場合、stragglerではない)」。幾つかの実装では、決定株アルゴリズムは、2つの不可分条件を「且つ(and)」又は「又は(or)」演算子で結合するよう更に拡張されて良い。例えば、条件テストが2つの不可分条件結合体になるとき、ルールは、特に次のように生成されて良い。「CPUレートがηより大きくないand標準メモリ使用量がλより大きい場合、タスクはstragglerである(その他の場合、タスクはstragglerではない)」。
【0056】
幾つかの実装では、stragglerタスクセットに関連するルールを決定するために、カスタマイズされた決定株利用アルゴリズムが利用されて良い。例えば、性能属性は、特徴ベクトルx
(i)=(x
(i)1,...,x
(i)d)を形成するために各々のタスクについて組み立てられて良い。stragglerラベルy
(i)∈{1,−1}も、k平均クラスタリングアルゴリズム結果に基づきタスクに割り当てられて良い。ここで、stragglerラベルは、分類器により予測されるべきクラスラベルとして役目を果たす。全ての属性を通じて、全ての不可分条件が列挙されて良い。次に、不可分条件は、各々のタスクについて2不可分条件の全ての組合せを生成するために結合され得る。不可分条件及び2不可分条件の組合せは、一例では、探索空間全体を形成して良い。次に、探索空間が探索されて良く、一例では、任意の条件cが探索される間、条件の有用性は、以下のようにトレーニングセットで評価されて良い。ルールは、条件を用いて構築されて良く、次に、タスクがstragglerか否かを予測するためにトレーニングセットに適用されて良い。ルールの信頼性が計算でき(つまり、経験的精度p(c))、真陽性及び偽陽性の両方の数に対する真陽性の数である。信頼性は、ルールにより識別されたstragglerがトレーニングセットにおいて真のstragglerである可能性の尺度である。ルールの収束が計算でき(つまり、経験的リコールr(c))、真陽性及び偽陰性の両方の数に対する真陽性の数を表して良い。収束は、真のstragglerがトレーニングセットにおいてルールにより識別される可能性の尺度であって良い。高い収束ほど通常は低い信頼性を示すので(逆も同様)、2つのメトリックを、それらの調和平均、経験的f指標f(c)を用いて結合する。この特定の例では、最適経験的f指標を有するルールが選択されて良い。値が出力品質を制御するために使用される所定閾を超える場合、ルールは診断結果として出力される。
【0057】
上述のように、カスタマイズされた決定株利用アルゴリズムのある例示的な実装では、リソース割り当てパラメータ及び性能カウンタパラメータは、タスク{i=1,...,n}の各々についてstragglerラベルy
(i){1,−1}と一緒に、入力ベクトルx
(i)={x
(i)1,...,x
(i)d}として提供されて良い。属性j=1,...,dについて、不可分条件C
j={c
j,1,...,c
j,s}が列挙されて良い。ここで、各々の不可分条件c
j,qは、「x
j>γ」又は「x
j≦γ」の形式であり、γは学習中に与えられた閾である。属性ペア(j,k)、j=1,...,d、jk=j+1,...,dについて、2不可分条件の組合せが、以下に従い更に列挙されて良い。
【0058】
【数7】
以後、候補条件セットは、不可分条件と、2不可分条件の組合せと、の両方により、次式に従い生成されて良い。
【0059】
【数8】
本例を続けると、stragglerタスクセットのルールラベルを生成するために、空間Cが探索されて良い。ここで、条件c∈Cについて、ルール「cの場合、y=1」が生成される。タスクi=1,...,nについて、ルール及びタスク特徴は、そのstragglerラベルy
^(i)を決定するために使用されて良い。変形決定株アルゴリズムを実装するモジュールは、次に、同じデータセットについてcによりルールの信頼性(経験的精度)p(c)、収束(経験的リコール)r(c)、及び経験的f指標f(c)を、例えば次式に従い計算して良い。
【0060】
【数9】
次に、1又は複数のルールは、経験的f指標を最大化するために、グリッド探索、山登り探索、焼き鈍し法、等のような発見的探索アルゴリズム(例えば、入力として探索空間及び評価関数を取り入れる)を用いて次式に従い選択されて良い。
【0061】
【数10】
本例では、f(c
*)≧θである場合(許容可能閾、例えば70%)、ルール「c
*の場合、y=1」が出力され、その他の場合、nullが出力されて、特に自動生成診断失敗の結果を示す。
【0062】
上述の例示的な実装のような、例示的な決定株利用アルゴリズムの幾つかの実装では、データの経験的エントロピに基づき計算される決定木利用における共通基準である情報獲得は、使用されない。これは、stragglerのデータセットが不均衡ラベル分布の様々な拡張を実証するよう期待されるように、行われて良い。情報獲得の最大化は、不平衡データセットにおいて高い信頼性で非stragglerを決定するルールをもたらし得る。さらに、最適ルールは、トレーニングセットに対する性能のみに基づき選択されて良い。多くの例では、同じ確率分布から引き出された未知のタスクセットに対してルールが実行されることを保証しない。しかしながら、このような機械学習における単純な分類器は、トレーニングデータに対して実行するのと同様に、未知のデータセットに対して実行する可能性が高いことが想定される。他の例示的な利点の中でも、上述の特定のカスタマイズされた決定株利用アルゴリズムは、不可分条件及び2不可分条件の組合せを用いて単にルールを生成する。したがって、他の例示的な検討の中でも特に、ルールがトレーニングデータの中に見られない場合でも、同じジョブの異なる実行についてstragglerを説明する際にルールが良好であることが期待される。
【0063】
このような2段階のstragglerタスク診断システムの一例を説明するために、大規模クラスタ管理システムを通じて管理されるジョブが評価されて良い。具体的には、追跡においてジョブのstragglerタスクは、先ず(ジョブのタスクの個々の実行時間に基づきk平均クラスタリングを用いて)識別されて良い。次にstraggler推定のためのルールを得るために、(例えば、決定株利用アルゴリズムを用いて)stragglerが診断されて良い。ルールの品質を評価する目的で、同じジョブの中の提供されたタスクセットに対してルールの性能を予測するために客観的メトリックが使用されて良い。大規模クラスタ管理システムは、数万台ものサーバによりクラスタにある多くの異なるアプリケーションからの多数のジョブを実行し、ジョブの現在の実行の特徴、タスクについての処理レベルの隔離、及び異なる要因に基づくリソース割り当て、をサポートして良い。この例示的なシステムでは、各々のジョブは、同じプログラム(バイナリ)、同じリソース要求、及びほぼ同じ開始時間を有する一見同種のタスクのセットから構成される。しかしながら、実際に割り当てられるリソースは、(同じ機械で現在実行中の他のタスクと比較して)タスクの相対的重要性及びそれらのリソース使用履歴に依存して良い。
【0064】
本例を続けると、例示的な大規模クラスタ管理システムの代表的負荷は、10000台より多くのサーバによるクラスタの1ヶ月追跡であって良い。追跡におけるタスクの各々について、そのリソース使用量は、性能カウンタ、及び5分毎に記録されるリソース割り当てにより監視されて良い。本例では、値は、追跡の中で任意の機械にある対応するリソースの最大能力mに対してスケーリングされて良い。stragglerクラスタリング分析は、k平均クラスタリングを用いて行われて良い。本例では、タスクのうちのある割合はstragglerタスクとして識別されて良い。次に、決定株利用アルゴリズムを用いてstraggler診断が実行されて良い。本例では、straggler診断の間、リソース割り当て及び性能カウンタ読み取り値は、決定株利用のためのタスクの特徴ベクトルの中の属性を形成するために、CPUレート、標準メモリ使用量、割り当てメモリ、未マッピングページキャッシュ、合計ページキャッシュ、ディスクI/O時間、及びローカルディスク空間使用量、のような例を含んで良い。自動straggler診断は、次に、stragglerタスクの可能性がある条件を示す属性に基づきルールを決定するために、属性に対して作用して良い。例えば、可能な例の中でも特に、例示的なルールは以下のように生じ得る。
【0065】
ジョブID 6252566391:割り当てメモリ≦0.000499→straggler、信頼性98.82%、収束99.29%;
ジョブID 6252460980:CPUレート≦0.000454又は割り当てメモリ≦0.000396→straggler、信頼性94.00%、収束87.04%;
ジョブID 6251640760:CPUレート≦0.000884及び標準メモリ使用量>0.000785→straggler、信頼性90.00%、収束87.10%。
【0066】
幾つかの例示的な実装は、上述の例において記載された特徴と超越して追加又は代替の特徴を有して良い。例えば、stragglerタスクの識別は、より精細な粒度で(例えば、非2値)あって良く、最も遅いクラスタのみを考慮するのではなく、幾つかの低速クラスタも考慮する。幾つかの例では、精細な粒度の識別から識別されたstragglerは、診断が容易であって良い(例えば、推測ルールは、straggler予測において、より高い精度及びより高いリコールを有して良い)。幾つかの実装では、複数の外れ値メカニズムが、例示的なジョブ分析システムによりサポートされて良い。したがって、特定のジョブにおいてstragglerが希であることを他のメカニズムが識別するとき、代替の外れ値決定メカニズムが使用されて良い。更に他の例では、ジョブ分析システムの態様は、他の例示的な特徴及び拡張の中でも特に、クラウド動作環境に統合され、ジョブに対する自動診断を実行し、診断結果を提示し、及び診断から生成される分散型コンピューティングシステムのスケジューラへのフィードバックを自動化して良く、ジョブ性能向上のループを閉じる。
【0067】
本願明細書に記載され図示されるシステム及びソリューションのうちの幾つかは、複数の要素を含み又はそれに関連付けられるとして記載されたが、明示的に図示され又は記載された要素の必ずしも全部が、本開示の各々の代替の実装において利用されなくて良い。さらに、本願明細書に記載される要素のうちの1又は複数は、システムの外部に置かれて良い。一方で、他の例では、特定の要素は、他の記載される要素のうちの1又は複数の中に含まれ又はその一部として含まれて良く、他の要素は図示の実装方法において記載されない。さらに、特定の要素は、他のコンポーネントと結合され、及び本願明細書に記載の目的に加えて、代替又は追加の目的のために使用されて良い。
【0068】
さらに、上述の例は特定の原理及び特徴を説明する目的で提供されただけであり、本願明細書に記載の概念の可能な実施形態を必ずしも限定し又は制約しない。例えば、種々の異なる実施形態は、本願明細書に記載のコンポーネントの種々の実装を通じて実現される組合せを含む、本願明細書に記載の特徴及びコンポーネントの種々の組合せを用いて実現できる。他の実装、特徴、及び詳細事項は、本願明細書の内容から明らかである。
【0069】
図5は、分散型コンピューティングジョブの中のstragglerイベントを診断する例示的な技術を示す簡略フローチャート500である。例えば、分散型コンピューティング環境の中の複数のコンピューティング装置により実行されるジョブの監視に関連して生成された性能データが受信されて良い505。性能データは、ジョブに関連して完了した複数のタスクのうちの各々の1つの実行時間を示して良い。ジョブ分析システムの機械学習ソフトウェア又はハードウェアを用いて、性能データの中で識別された実行間に、k平均クラスタリングアルゴリズムのような教師なし機械学習アルゴリズムが適用されて良い510。教師なし機械学習アルゴリズムは、一部のタスクがstragglerタスクであることを決定するために515、タスクの個々の実行時間に基づき個々のタスクをクラスタリングして良い。教師なし機械学習アルゴリズムの結果は、これらのクラスタに基づきタスクをラベル付けするために更に使用されて良い。ここで、タスクのうちの幾つかはstragglerタスクとしてラベル付けされ(つまり、ジョブの中の残りのタスクより統計的に低速な実行時間を要する)、他は非stragglerとしてラベル付けされる。
【0070】
(510の)教師なし機械学習アルゴリズムを用いて決定されるような、ジョブの中のstraggler及び非stragglerタスクの診断又はラベルを用いて、stragglerタスクと相関のある属性を診断するために、教師あり機械学習アルゴリズムが適用されて良い520。(505で)受信した性能データの中で識別されたタスクの各々の追加性能属性は、stragglerタスクのためのルールを決定するために525、(510の)教師なし機械学習アルゴリズムの結果を用いて導出されたstraggler/非stragglerラベルと一緒に、(カスタマイズされた決定株利用アルゴリズムのような)教師あり機械学習アルゴリズムに入力として提供されて良い。ルールは、ジョブの中の所与のタスクがstragglerタスクである可能性があることを示す又は予測する、性能属性により測定される条件を識別して良い。このようなルールのセットが決定され525、このルールセットを記述するためにルールデータが生成されて良い530。ルールデータ530は、幾つかの例では、人間に可読な形式で、ユーザインタフェースの中で、自動決定されたルールの記述を提示するためにレンダリングされて良い。幾つかの実装では、ルールデータは、機械可読又は消費可能であって良い。したがって、コンピュータにより実施される分散型コンピューティングジョブマネジャは、ルールデータを受け入れ、ジョブマネジャにより管理される将来の分散型コンピューティングジョブの中の設定及び割り当てを変更するために、その中に記述されるルールを適用して良い。
【0071】
図6〜7は、本願明細書に開示の実施形態に従い使用され得る例示的なコンピュータアーキテクチャのブロック図である。プロセッサ及びコンピューティングシステムについて従来知られている他のコンピュータアーキテクチャ設計も使用されて良い。概して、本願明細書に開示の実施形態に適するコンピュータアーキテクチャは、
図6〜7に示す構成を含み得るが、これに限定されない。
【0072】
図6は、一実施形態によるプロセッサの例示的な図である。プロセッサ600は、上述の実装に関連して使用可能なある種のハードウェア装置の一例である。プロセッサ600は、コードを実行するために、マイクロプロセッサ、内蔵プロセッサ、DSP(digital signal processor)、ネットワークプロセッサ、マルチコアプロセッサ、シングルコアプロセッサ、又は他の装置のような任意の種類のプロセッサであって良い。
図6には1個のプロセッサ600のみが示されるが、処理要素は、代替で、1個より多くの
図6に示したプロセッサ600を有して良い。プロセッサ600はシングルスレッドコアであって良い。或いは、少なくとも一実施形態では、プロセッサ600は、コア当たり1より多くのハードウェアスレッドコンテキスト(又は「論理プロセッサ」)を有して良いマルチスレッドであって良い。
【0073】
図6は、一実施形態に従い、プロセッサ600に結合されるメモリ602も示す。メモリ602は、当業者に知られている又は利用可能な(メモリ階層構造の種々のレイヤを含む)広範な種類のメモリのうちの任意のものであって良い。このようなメモリは、RAM(random access memory)、ROM(read only memory)、FPGA(field programmable gate array)の論理ブロック、EPROM(erasable programmable read only memory)、及びEEPROM(electrically erasable programmable ROM)を含み得るが、これらに限定されない。
【0074】
プロセッサ600は、本願明細書に詳述されるアルゴリズム、処理、又は工程に関連する任意の種類の命令を実行できる。概して、プロセッサ600は、要素又はアーティクル(例えばデータ)を、ある状態若しくは物から別の状態若しくは物に変換し得る。
【0075】
コード604は、プロセッサ600により実行されるべき1又は複数の命令であって良く、メモリ602に格納されて良く、又は適切な場合には、特定の必要に基づき、ソフトウェア、ハードウェア、ファームウェア、若しくはそれらの任意の適切な組合せに又は任意の他の内部若しくは外部コンポーネント、装置、要素、若しくはオブジェクトに格納されて良い。一例では、プロセッサ600は、コード604により示される命令のプログラムシーケンスに従い得る。各々の命令は、フロントエンドロジック606に入り、1又は複数のデコーダ608により処理される。デコーダは、出力として、所定フォーマットの固定幅マイクロ工程のようなマイクロ工程を生成して良く、又は他の命令、マイクロ命令、又は元のコード命令を反映する制御信号を生成して良い。フロントエンドロジック606は、レジスタ名変更ロジック610、及び概してリソースを割り当て実行のために命令に対応する工程をキューに入れるスケジューリングロジック612も有する。
【0076】
プロセッサ600は、実行ユニット616a、616b、616n、等のセットを有する実行ロジック614も有し得る。幾つかの実施形態は、特定機能又は機能セットに専用の多数の実行ユニットを含んで良い。他の実施形態は、1つの実行ユニットのみ又は特定の機能を実行できる1つの実行ユニットを有して良い。実行ロジック614は、コード命令により指定される工程を実行する。
【0077】
コード命令により指定される工程の実行の完了の後、バックエンドロジック618は、コード604の命令を退避できる。一実施形態では、プロセッサ600は、順序の狂った実行を認めるが、順序の正しい命令退避を要求する。退避ロジック620は、様々な知られている形式を取り得る(例えば、再順序付けバッファ等)。この方法で、プロセッサ600は、コード604の実行中に、少なくともデコーダにより生成される出力、ハードウェアレジスタ、及びレジスタ名変更ロジック610により利用されるテーブル、及び実行ロジック614により変更される任意のレジスタ(図示しない)の観点で、変換される。
【0078】
図6に示さないが、処理要素は、プロセッサ600を有するチップに他の要素を有して良い。例えば、処理要素は、プロセッサ600と共にメモリ制御ロジックを有して良い。処理要素は、I/O制御ロジックを有して良く、及び/又はメモリ制御ロジックと統合されるI/O制御ロジックを有して良い。処理要素は、1又は複数のキャッシュも有して良い。幾つかの実施形態では、(フラッシュメモリ又はヒューズのような)不揮発性メモリも、プロセッサ600を有するチップに含まれて良い。
【0079】
図7は、一実施形態によるポイントツーポイント(PtP)構成で構成されるコンピューティングシステム700を示す。特に、
図7は、プロセッサ、メモリ、及び入力/出力装置が多数のポイントツーポイントインタフェースにより相互接続されるシステムを示す。概して、本願明細書に記載のコンピューティングシステムのうちの1又は複数は、コンピューティングシステム700と同じ又は同様の方法で構成されて良い。
【0080】
プロセッサ770及び780も、メモリ要素732及び734と通信するために統合メモリ制御ロジック(MC)772及び782をそれぞれ有して良い。代替の実施形態では、メモリ制御ロジック772及び782は、プロセッサ770及び780と別個のディスクリートロジックであって良い。メモリ要素732及び/又は734は、本願明細書に概説される工程及び機能を達成する際にプロセッサ770及び780により使用されるべき種々のデータを格納して良い。
【0081】
プロセッサ770及び780は、他の図と関連して議論されたような任意の種類のプロセッサであって良い。プロセッサ770、780は、それぞれ、ポイントツーポイントインタフェース回路778、788を用いて、ポイントツーポイント(PtP)インタフェース750を介してデータを交換できる。プロセッサ770、780は、それぞれ、ポイントツーポイントインタフェース回路776、786、794、798を用いて個々のポイントツーポイントインタフェース752、754を介して、チップセット790とデータを交換して良い。チップセット790も、高性能グラフィックインタフェース739を介して、PtPインタフェース回路であり得るインタフェース回路792を用いて、高性能グラフィック回路738とデータを交換して良い。代替の実施形態では、
図7に示したPtPリンクのうちの任意のもの又は全部は、PtPリンクではなくマルチドロップバスとして実装され得る。
【0082】
チップセット790は、インタフェース回路796を介してバス720と通信して良い。バス720は、バスブリッジ718及びI/O装置716のような、バスを介して通信する1又は複数の装置を有して良い。バス710を介して、バスブリッジ718は、(キーボード、マウス、タッチスクリーン、又は他の入力装置のような)ユーザインタフェース712、(モデム、ネットワークインタフェース装置、又はコンピュータネットワーク760を通じて通信し得る他の種類の通信装置のような)通信装置726、オーディオI/O装置714、及び/又はデータ記憶装置728のような他の装置と通信して良い。データ記憶装置728は、プロセッサ770及び/又は780により実行されて良いコード730を格納して良い。代替の実施形態では、バスアーキテクチャの任意の部分は、1又は複数のPtPリンクにより実装されて良い。
【0083】
図7に示したコンピュータシステムは、本願明細書に議論する種々の実施形態を実装するために利用され得るコンピューティングシステムの一実施形態の概略図である。
図7に示すシステムの種々のコンポーネントは、システムオンチップ(SoC)アーキテクチャで又は本願明細書で提供される例及び実装の機能及び特徴を達成可能な任意の他の適切な構成で結合されて良い。
【0084】
本開示は特定の実装及び概して関連する方法の観点から記載されたが、これらの実装及び方法の代替及び置換が当業者に明らかである。例えば、本願明細書に記載の動作は、記載されたものと異なる順序で実行でき、依然として所望の結果を達成する。一例として、図示された処理は、所望の結果を達成するために、必ずしも図示された特定の順序又はシーケンシャルな順序である必要はない。特定の実装では、マルチタスク及び並列処理が有利であっても良い。さらに、他のユーザインタフェースレイアウト及び機能がサポートされ得る。他の変形は添付の請求の範囲に包含される。
【0085】
概して、本願明細書に記載の主題の一態様は、方法、及びソフトウェアコードを含むサンプルを識別する動作、該サンプルに含まれる複数の関数のうちの各々の制御フローグラフを生成する動作、関数の各々の中で、制御フローフラグメント種類のセットのインスタンスに対応する特徴を識別する動作、を含む又は生じる実行命令で具現化され得る。識別された特徴は、識別された特徴からのサンプルについての特徴セットを生成するために使用され得る。
【0086】
これら及び他の実施形態は、それぞれ任意で、1又は複数の以下の特徴を含み得る。関数の各々について識別された特徴は、サンプルの統合ストリングを生成するために結合でき、特徴セットは、統合ストリングから生成できる。ストリングは、関数の各々について生成でき、各ストリングは、関数について識別された個々の特徴を記述する。特徴の結合は、複数の関数のうちの特定の1つの中の、複数の関数のうちの別の1つへの呼び出しを識別するステップと、他の関数を参照する特定の関数のストリングの一部を他の関数のストリングの内容で置換するステップと、を有し得る。特徴の識別は、関数のストリングの各々を抽象化するステップを含み得る。したがって、制御フローフラグメント種類のセットの特徴のみが、ストリングの中で記述される。制御フローフラグメント種類のセットは、関数及び関数による関数呼び出しによるメモリアクセスを含み得る。特徴の識別は、関数の各々によるメモリアクセスのインスタンスを識別するステップと、関数の各々による関数呼び出しのインスタンスを識別するステップと、を有し得る。特徴セットは、関数の各々について識別された特徴の各々を識別できる。特徴セットは、nグラフであり得る。
【0087】
さらに、これら及び他の実施形態は、それぞれ任意で、1又は複数の以下の特徴を含み得る。特徴セットは、サンプルを分類する際に使用するために提供され得る。例えば、サンプルの分類は、サンプルの対応する特徴に基づき、他のサンプルと共にサンプルをクラスタリングするステップを含み得る。サンプルの分類は、サンプルのクラスタに関連する特徴のセットを決定するステップを更に含み得る。サンプルの分類は、サンプルをマルウェアとして分類するか否かを決定するステップ、及び/又はサンプルが1又は複数のマルウェアファミリのうちの1つである可能性があるか否かを決定するステップ、を更に含み得る。特徴の識別は、制御フローグラフの各々を抽象化するステップを含み得る。したがって、制御フローフラグメント種類のセットの特徴のみが、制御フローグラフの中で記述される。サンプルを含む複数のサンプルが受信され得る。幾つかの例では、複数のサンプルは、複数のソースから受信され得る。特徴セットは、サンプルの関数の制御フローグラフの中で識別される特徴のサブセットを識別できる。特徴のサブセットは、メモリアクセス及びサンプルコードの中の関数呼び出しに対応し得る。
【0088】
本願明細書は多くの特定の実装の詳細を含むが、これらは、発明の範囲又は請求の範囲の限定ではなく、特定の発明の特定の実施形態に固有の特徴の説明として解釈されるべきである。本願明細書に別個の実施形態の文脈で記載された特定の特徴は、単一の実施形態の中で組み合わせて実装することもできる。反対に、本願明細書に単一の実施形態の文脈で記載された特定の特徴は、複数の実施形態で別個に又は任意の適切な実施形態で実装することもできる。さらに、特徴は、特定の組合せで動作するとして上述され、そのように最初に請求されるが、請求される組合せの中の1又は複数の特徴は、幾つかの場合には該組合せから削除され、請求される組合せは小結合又は小結合の変形を対象とし得る。
【0089】
同様に、動作は特定の順序で図示されたが、これは、所望の結果を達成するために、このような動作が図示の特定の順序で又は連続的順序で実行されることを要求すると又は全ての図示の動作が実行されると理解されるべきではない。特定の環境では、マルチタスク及び並列処理が有利であっても良い。さらに、上述の実施形態における種々のシステムコンポーネントの分離は、全ての実施形態においてこのような分離を必要とすると理解されるべきではない。また、記載したプログラムコンポーネント及びシステムが概して単一のソフトウェアプロダクトに統合され又は複数のソフトウェアプロダクトにパッケージ化できることが理解されるべきである。
【0090】
以下の例は、本願明細書に従う実施形態に関連する。例1は、方法、システム、又は格納された命令を有する機械アクセス可能記憶媒体であって、前記命令は、機械により実行されると該機械に、分散型コンピューティングシステムにおいて実行されるジョブの中の複数のタスクの個々の実行時間を分析させ、前記ジョブの中のstragglerタスクセットを有する前記複数のタスクのうちのサブセットを決定し、前記分散型コンピューティングシステムは、複数のコンピューティング装置を有し、前記複数のタスクの性能属性を有する入力セットを用いて教師あり機械学習アルゴリズムを実行させ、前記教師あり機械学習アルゴリズムは、前記stragglerタスクセットの決定から生成されるラベルを用い、前記性能属性は、前記ジョブの実行中に観測される前記複数のタスクの個々の属性を有し、前記教師あり機械学習アルゴリズムの適用は、前記複数のタスクの前記性能属性に基づく、ジョブの中でどのタスクがstragglerタスクであるかを示す条件を定めるルールセットの識別を生じ、前記ルールセットを記述するためにルールデータを生成させる。
【0091】
例2は、例1の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、教師あり機械学習アルゴリズムへの入力として前記実行時間を提供するステップを有する。
【0092】
例3は、例2の主題を含んで良く、前記教師あり機械学習アルゴリズムは、クラスタリングアルゴリズムを有し、前記クラスタリングアルゴリズムの結果は、前記タスクの前記個々の実行時間に基づき前記複数のタスクを複数のクラスタにクラスタリングし、前記ラベルは前記複数のクラスタに対応する。
【0093】
例4は、例3の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの1つを前記stragglerタスクセットを表すとして識別するステップを有する。
【0094】
例5は、例3の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの2以上を前記stragglerタスクセットを表すとして識別するステップを有する。
【0095】
例6は、例3乃至5のいずれか1つの主題を含んで良く、前記クラスタリングアルゴリズムは、k平均クラスタリングアルゴリズムを有する。
【0096】
例7は、例1乃至6のいずれか1つの主題を含んで良く、前記教師あり学習アルゴリズムは、決定株利用アルゴリズムを有する。
【0097】
例8は、例7の主題を含んで良く、前記決定株利用アルゴリズムは、前記性能属性から、各々のタスクの全ての不可分条件を決定するステップと、前記不可分条件を結合して、各々のタスクの全ての2不可分条件の組合せを生成するステップであって、前記ルールセットは、前記不可分条件及び2不可分条件の組合せを有する検索空間から決定される、ステップと、を有する。
【0098】
例9は、例1乃至8のいずれか1つの主題を含んで良く、前記性能属性は、性能カウンタ属性及びリソース割り当て属性を有する。
【0099】
例10は、例9の主題を含んで良く、前記リソース割り当て属性は、前記対応するタスクに割り当てられる前記分散型コンピューティングシステムの中の個々のコンピューティング装置の属性を識別する。
【0100】
例11は、例9乃至10のいずれか1つの主題を含んで良く、前記性能カウンタ属性は、中央処理ユニット(CPU)レート、基準メモリ使用量、割り当てられたメモリ、未マッピングページキャッシュ、合計ページキャッシュ、ディスクI/O時間、ローカルディスク空間使用量、のうちの1又は複数を有する。
【0101】
例12は、例1乃至11のいずれか1つの主題を含んで良く、前記ルールデータは、自動生成された、前記ルールセットの各々の人間可読記述を有する。
【0102】
例13は、例1乃至12のいずれか1つの主題を含んで良く、前記ルールデータは、分散型コンピューティングシステムにおいてジョブの将来の実行の中でタスクの割り当てを指示するために処理される機械解析可能コードを有する。
【0103】
例14は、例13の主題を含んで良く、分散型コンピューティングシステムにおけるジョブの前記将来の実行は、前記複数のタスクを有する前記ジョブの将来の実行を有する。
【0104】
例15は、例13の主題を含んで良く、前記ジョブの前記将来の実行は、異なる複数のコンピューティング装置を利用する。
【0105】
例16は、例1乃至15のいずれか1つの主題を含んで良く、前記ラベルの一部は、前記複数のタスクの中のタスクをstragglerタスクとしてラベル付けし、前記ラベルの別の部分は、前記複数のタスクの中の他のタスクを非stragglerタスクとしてラベル付けする。
【0106】
例17は、コンピューティング装置を使用して、分散型コンピューティングシステムにおいて実行されるジョブの中の複数のタスクの個々の実行時間を分析するステップであって、前記ジョブの中のstragglerタスクセットを有する前記複数のタスクのうちのサブセットを決定し、前記分散型コンピューティングシステムは、複数のコンピューティング装置を有する、ステップと、コンピューティング装置を使用して、前記複数のタスクの性能属性を有する入力セットを用いて教師あり機械学習アルゴリズムを実行するステップであって、前記教師あり機械学習アルゴリズムは、前記stragglerタスクセットの決定から生成されるラベルを用い、前記性能属性は、前記ジョブの実行中に観測される前記複数のタスクの個々の属性を有し、前記教師あり機械学習アルゴリズムの適用は、前記複数のタスクの前記性能属性に基づく、ジョブの中でどのタスクがstragglerタスクであるかを示す条件を定めるルールセットの識別を生じる、ステップと、前記コンピューティング装置において、前記ルールセットを記述するためにルールデータを生成するステップと、を有する方法である。
【0107】
例18は、例17の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、教師あり機械学習アルゴリズムへの入力として前記実行時間を提供するステップを有する。
【0108】
例19は、例18の主題を含んで良く、前記教師あり機械学習アルゴリズムは、クラスタリングアルゴリズムを有し、前記クラスタリングアルゴリズムの結果は、前記タスクの前記個々の実行時間に基づき前記複数のタスクを複数のクラスタにクラスタリングし、前記ラベルは前記複数のクラスタに対応する。
【0109】
例20は、例19の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの1つを前記stragglerタスクセットを表すとして識別するステップを有する。
【0110】
例21は、例19の主題を含んで良く、前記複数のタスクの前記実行時間を分析して、前記stragglerタスクセットを決定するステップは、前記複数のクラスタのうちの2以上を前記stragglerタスクセットを表すとして識別するステップを有する。
【0111】
例22は、例19乃至21のいずれか1つの主題を含んで良く、前記クラスタリングアルゴリズムは、k平均クラスタリングアルゴリズムを有する。
【0112】
例23は、例17乃至22のいずれか1つの主題を含んで良く、前記教師あり学習アルゴリズムは、決定株利用アルゴリズムを有する。
【0113】
例24は、例23の主題を含んで良く、前記決定株利用アルゴリズムは、前記性能属性から、各々のタスクの全ての不可分条件を決定するステップと、前記不可分条件を結合して、各々のタスクの全ての2不可分条件の組合せを生成するステップであって、前記ルールセットは、前記不可分条件及び2不可分条件の組合せを有する検索空間から決定される、ステップと、を有する。
【0114】
例25は、例17乃至24のいずれか1つの主題を含んで良く、前記性能属性は、性能カウンタ属性及びリソース割り当て属性を有する。
【0115】
例26は、例25の主題を含んで良く、前記リソース割り当て属性は、前記対応するタスクに割り当てられる前記分散型コンピューティングシステムの中の個々のコンピューティング装置の属性を識別する。
【0116】
例27は、例25乃至26のいずれか1つの主題を含んで良く、前記性能カウンタ属性は、中央処理ユニット(CPU)レート、基準メモリ使用量、割り当てられたメモリ、未マッピングページキャッシュ、合計ページキャッシュ、ディスクI/O時間、ローカルディスク空間使用量、のうちの1又は複数を有する。
【0117】
例28は、例17乃至27のいずれか1つの主題を含んで良く、前記ルールデータは、自動生成された、前記ルールセットの各々の人間可読記述を有する。
【0118】
例29は、例17乃至28のいずれか1つの主題を含んで良く、前記ルールデータは、分散型コンピューティングシステムにおいてジョブの将来の実行の中でタスクの割り当てを指示するために処理される機械解析可能コードを有する。
【0119】
例30は、例29の主題を含んで良く、分散型コンピューティングシステムにおけるジョブの前記将来の実行は、前記複数のタスクを有する前記ジョブの将来の実行を有する。
【0120】
例31は、例29の主題を含んで良く、前記ジョブの前記将来の実行は、異なる複数のコンピューティング装置を利用する。
【0121】
例32は、例17乃至31のいずれか1つの主題を含んで良く、前記ラベルの一部は、前記複数のタスクの中のタスクをstragglerタスクとしてラベル付けし、前記ラベルの別の部分は、前記複数のタスクの中の他のタスクを非stragglerタスクとしてラベル付けする。
【0122】
例33は、例17−32のいずれか1つの方法を実行する手段を有するシステムである。
【0123】
例34は、少なくとも1つのプロセッサ、少なくとも1つのメモリ要素、教師なし機械学習モジュール、及び教師あり機械学習モジュールを有するシステムである。前記教師なし機械学習モジュールは、前記少なくとも1つのプロセッサにより実行可能であって良く、複数の装置を含む分散型コンピューティングシステムを用いて完了されるジョブの複数のタスクの実行時間を識別する第1入力セットを受信し、前記第1入力セットに教師なしクラスタリングアルゴリズムを適用して、前記実行時間に基づく複数のクラスタを生成し、前記複数のクラスタは前記複数のタスクのうちの少なくとも1つを含み、前記複数のクラスタのうちの少なくとも1つの特定クラスタを前記ジョブの中でstragglerタスクを表すとして指定し、前記複数のタスクの各々に対応するラベルを生成し、前記ラベルは前記特定クラスタの中のタスクをstragglerタスクとして指定する。教師あり機械学習モジュールは、前記少なくとも1つのプロセッサにより実行可能であって良く、前記ラベルと、前記複数のタスクの性能属性を含む第2入力セットと、を受信し、前記性能属性は、前記ジョブの実行中に観測された前記複数のタスクの個々の属性を含み、前記第2入力セットに決定株利用アルゴリズムを適用して、前記ラベルに基づき、ルールセットを決定し、前記ルールセットは、前記性能属性に基づき、どのタスクがジョブの中のstragglerタスクであるかを示す条件を定める。
【0124】
例35は、例34の主題を含んで良く、1又は複数のコンピュータにより実行される監視要素であって、前記複数のタスクの性能を監視し、前記実行時間及び性能属性を識別する監視データを生成する、監視要素、を更に有する。
【0125】
例36は、例34乃至35のいずれか1つの主題を含んで良く、前記複数の装置を更に有する。
【0126】
例37は、例36の主題を含んで良く、前記複数の装置は異種装置を含む。
【0127】
例38は、例34乃至37のいずれか1つの主題を含んで良く、前記システムは、前記ルールセットを記述するルールデータを生成するルールデータ生成器を更に有する。
【0128】
例39は、例38の主題を含んで良く、前記複数の装置において前記複数のタスクを編成するために実行可能なジョブマネジャを更に含む。
【0129】
例40は、例39の主題を含んで良く、前記ジョブマネジャは、さらに、前記ルールデータを受信し、前記ルールセットに基づき後続の分散型コンピューティングジョブにおいて装置へのタスクの割り当てを自動化する。
【0130】
例41は、例38乃至40のいずれか1つの主題を含んで良く、前記ルールセットの人間可読記述を含む提示を生成するためにグラフィカルユーザインタフェースモジュールを更に含む。
【0131】
したがって、主題の特定の実施形態が記載された。他の実施形態も添付の請求の範囲に包含される。幾つかの例では、請求項に記載された動作は、異なる順序で実行でき、依然として所望の結果を達成する。さらに、図示された処理は、所望の結果を達成するために、必ずしも図示された特定の順序又はシーケンシャルな順序である必要はない。
【解決手段】分散型コンピューティングシステムにおいて実行されるジョブの中の複数のタスクの個々の実行時間を分析して、複数のタスクのうちのサブセットがstragglerタスクであることを決定するために、機械学習が利用する。教師あり機械学習アルゴリズムは、複数のタスクの性能属性を含む入力セットを用いて実行され、stragglerタスクセットの決定から生成されるラベルを使用する。性能属性は、ジョブの実行中に観測される複数のタスクの個々の属性を含む。教師あり機械学習アルゴリズムの適用は、複数のタスクの性能属性に基づく、ジョブの中のどのタスクがstragglerタスクであるかを示す条件を定めるルールセットの識別を生じる。ルールデータは、ルールセットを記述するために生成される。