(57)【特許請求の範囲】
【請求項１】
計算リソースを管理する方法であって、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードに必要な計算リソースを指定し、必要な計算リソースは、各計算リソースを、別個のセグメント又は利用のカテゴリに分けることによって指定され；
最初に、前記第１のワークロードが、前記第２のワークロードより優先され；かつ
前記第１のワークロード及び前記第２のワークロードは、コンピュータシステムの複数の処理エンティティのうちの一つ以上の処理エンティティによってアサインされかつ実行されるようにスケジューリングされる；
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップと；
コンピュータシステムのリソース・メタデータを生成するステップであって、前記リソース・メタデータは、前記複数の処理エンティティの各々において利用できる計算リソースを指定する、ステップと；
前記リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップであって、前記潜在的な競合は、前記第１のワークロードに要求される前記計算リソースのいずれかが、前記処理エンティティに利用できる前記計算リソースのいずれかの容量を超えると判断することによって特定される、ステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を有する方法。
【請求項２】
一つ以上の閾値を用いて、必要な計算リソースを、別個のセグメント又は利用のカテゴリに分けるように、一つ以上の閾値を用いるステップをさらに有する、請求項１記載の方法。
【請求項３】
前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される前記計算リソースの定量的特徴を含む、請求項１記載の方法。
【請求項４】
前記一つ以上の処理エンティティは、計算ノードの集合を有する、請求項１記載の方法。
【請求項５】
前記一つ以上の処理エンティティは、プロセッサ・コアの集合を有する、請求項１記載の方法。
【請求項６】
前記一つ以上の処理エンティティは、プロセッサ・スレッドの集合を有する、請求項１記載の方法。
【請求項７】
ワークロードのためのワークロード・メタデータを生成するステップは、
実行のために前記ワークロードをシステムにロードするステップと；
データの第１のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードの実行によって利用される前記計算リソースを測定するステップと；
を有する請求項１記載の方法。
【請求項８】
ワークロードのためのワークロード・メタデータを生成するステップは、
データの第２のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
前記ワークロードの実行によって使用された計算リソースの最大消費レベルに対するパーセンテージの平均値を算出するステップと；
を更に有する請求項７記載の方法。
【請求項９】
第１の処理エンティティによる前記第１のワークロードの実行を行えば、前記第１の処理エンティティに対して、いずれかの利用可能な計算リソースの要求が１００パーセントを超えることとなると判断される場合、潜在的な競合が特定される、請求項３記載の方法。
【請求項１０】
コンピュータに、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードに必要な計算リソースを指定し、必要な計算リソースは、各計算リソースを、別個のセグメント又は利用のカテゴリに分けることによって指定され；
最初に、前記第１のワークロードが、前記第２のワークロードより優先され；かつ
前記第１のワークロード及び前記第２のワークロードは、コンピュータシステムの複数の処理エンティティのうちの一つ以上の処理エンティティによってアサインされかつ実行されるようにスケジューリングされる；
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップと；
コンピュータシステムのリソース・メタデータを生成するステップであって、前記リソース・メタデータは、前記複数の処理エンティティの各々において利用できる計算リソースを指定する、ステップと；
前記リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップであって、前記潜在的な競合は、前記第１のワークロードに要求される前記計算リソースのいずれかが、前記処理エンティティに利用できる前記計算リソースのいずれかの容量を超えると判断することによって特定される、ステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を実行させるプログラム。
【請求項１１】
計算ワークロードを管理するシステムであって、
プロセッサと；
前記プロセッサに接続される計算機可読の媒体であって、コンピュータに、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードに必要な計算リソースを指定し、必要な計算リソースは、各計算リソースを、別個のセグメント又は利用のカテゴリに分けることによって指定され；
最初に、前記第１のワークロードのメタデータが、前記第２のワークロード・メタデータより優先され；かつ
前記第１のワークロード及び前記第２のワークロードは、コンピュータシステムの複数の処理エンティティのうちの一つ以上の処理エンティティによってアサインされかつ実行されるようにスケジューリングされる；
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップと；
コンピュータシステムのリソース・メタデータを生成するステップであって、前記リソース・メタデータは、前記複数の処理エンティティの各々において利用できる計算リソースを指定する、ステップと；
前記リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップであって、前記潜在的な競合は、前記第１のワークロードに要求される前記計算リソースのいずれかが、前記処理エンティティに利用できる前記計算リソースのいずれかの容量を超えると判断することによって特定される、ステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を実行させるプログラムを格納した媒体と；
を有するシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に計算リソースの管理に関する。より詳細には、計算ワークロード・メタデータの生成、分析、及び利用のためのシステム及び方法に関する。
【背景技術】
【０００２】
コンピュータのパフォーマンスを向上させるために、今日では、コンピュータのようなシステム及び電子デバイスは、巨大な計算電子デバイス、中央処理装置（ＣＰＵ）、及びＣＰＵコア等を利用している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
このようなリソースの管理をすることは、複雑であり、難しい作業である。ワークロード・リクエストの実行のために、このようなリソースの割り当て及び優先付けを行うよう構成されたソフトウェアは、現時点における要求に基づいて、計算デバイスを分散させる受け身的なアプローチが取られる。
【課題を解決するための手段】
【０００４】
計算リソースを管理する方法は、第１のワークロードのための第１のワークロード・メタデータを生成するステップと、第２のワークロードのための第２のワークロード・メタデータを生成するステップと、リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップとを有する。本方法は、リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと、前記処理エンティティのうちの１つによる実行のための前記第２のワークロードを割り当てるステップとを有する。前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づける。最初に、前記第１のワークロードのメタデータが、前記第２のワークロード・メタデータより優先される。前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される。前記計算リソースを特徴づけている前記リソース・メタデータは、前記処理エンティティが利用できる。リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない。
【０００５】
本発明及びその特徴及び効果の更なる詳細な理解のために、図面を参照しながら以下に説明する。
【図面の簡単な説明】
【０００６】
【図１】計算ワークロード・メタデータの生成の分析及び利用のためのシステムの実施例を示す図である。
【図２】ワークロード・キャラクタライザによって特徴付けられ、システムの処理エンティティによりワークロードの優先付けを行うためのワークロード・マネジャによって利用される例示のシステムのリースを示す図である。
【図３】システムから発生したワークロードがどのように、非効率的にシステムの様々な処理ユニットに割り当てられるかを示す図である。
【図４】ワークロード・マネジャが、待ちのワークロードをジョブキューに割り当てる実施例の効率的な割り当て方式を示す図である。
【図５】ワークロード・マネジャが実行を優先付けするために、定性的又は相対的な手法によりワークロード・メタデータ及びリソース・ステータスを生成する実施例を示す図である。
【図６】ワークロード・キャラクタライザ及びワークロード・マネジャによる、定量的なカテゴリ分け及び優先付けの実施例を示す図である。
【図７】計算ワークロード・メタデータの生成、分析、及び利用のための方法の実施例を示す図である。
【発明を実施するための形態】
【０００７】
更なる実施例においては、製造製品は、計算機可読媒体及び計算機実行可能な命令を含む。計算機実行可能な命令は、計算機可読媒体に格納される。この命令は、プロセッサによって読み取ることができる。この命令は、読み込まれ実行されると、プロセッサが、第１のワークロードのための第１のワークロード・メタデータを生成するステップと、第２のワークロードのための第２のワークロード・メタデータを生成するステップと、リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップと、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと、前記処理エンティティのうちの１つによる実行のための前記第２のワークロードを割り当てるステップとを実行する。前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づける。最初に、前記第１のワークロードのメタデータが、前記第２のワークロード・メタデータより優先される。前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される。前記計算リソースを特徴づけている前記リソース・メタデータは、前記処理エンティティが利用できる。リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない。
【０００８】
更にほかの実施例において、計算ワークロードを管理するシステムは、プロセッサと、前記プロセッサに結合された計算機可読媒体と、前記計算機可読媒体に格納された計算機実行可能な命令とを有する。この命令は、前記プロセッサによって読み取ることができる。この命令は、読み込まれ実行されると、プロセッサが、第１のワークロードのための第１のワークロード・メタデータを生成するステップと、第２のワークロードのための第２のワークロード・メタデータを生成するステップと、リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップと、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと、前記処理エンティティのうちの１つによる実行のための前記第２のワークロードを割り当てるステップとを実行する。前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づける。前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される。前記計算リソースを特徴づけている前記リソース・メタデータは、前記処理エンティティが利用できる。リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない。
【実施例】
【０００９】
図１は、計算ワークロード・メタデータの生成、分析、及び利用のためのシステム１００の実施例を示している。システム１００は、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２を含んでもよい。システム１００は、一つ以上の計算ノード１１０を含んでもよい。計算ノード１１０はプロセッサを含んでもよい。そして、例えば、電子デバイス、コンピュータ、サーバ、又はマザーボードにインプリメントされてもよい。このようなデバイスは複数の計算ノード１１０（例えばラックマウント・サーバ構成）を含んでもよい。そして、複数のブレード・サーバ・ボードを含む。そして、各々のボードが計算ノードを含む。マルチプロセッサ環境において、各々のプロセッサは、計算ノード１１０であってもよい。システム１１０は、一つ以上のコア１１４を含んでもよい。コア１１４は、命令を読込かつ実行するよう構成されたプロセッサの一部にインプリメントされてもよい。プロセッサ、又は、計算ノード１１０は、一つ以上のコア１１４を含んでもよい。システム１１０は、一つ以上のスレッド１１８を含んでもよい。スレッド１１８は、一連の命令でインプリメントされてもよい。この一連の命令は、例えば、コア１１４又は計算ノード１１８で実行されるオペレーティングシステムによってスケジュールされ得る。コア１１４は、一つ以上のスレッド１１８を含んでもよい。
【００１０】
ワークロード・キャラクタライザ１０１は、例えば計算ノード１１０、コア１１４、又は、スレッド１１８等の、１つ以上の計算又は処理エンティティのオペレーションを評価するように構成されてもよい。処理エンティティによって処理される一組の計算、又は、処理タスクは、ワークロードとして束ねられてもよい。計算、又は、処理エンティティは、並行に一つ以上のワークロードを実行するように構成されてもよい。このような構成によると、並行的に処理されるワークロードが共有しなければならない計算リソースの不足を生じさせる場合がある。ワークロード・キャラクタライザ１０１は、処理エンティティによって処理されるワークロードのために必要なリソースを決定するように構成されてもよい。ワークロード・キャラクタライザ１０１は、所定の利用限度で全ての処理エンティティに利用可能な全てのリソースを評価するよう構成されてもよい。ワークロード・キャラクタライザは、システム１００の処理エンティティの各種レベルのワークロードに対して必要とされる必要な計算リソースを測定してもよい。ワークロード・キャラクタライザ１０１は、このような測定の結果を記録し、かつ特徴メタデータの形でそれらをワークロードにアタッチするよう構成されてもよい。ワークロード・マネジャ１０２は、処理エンティティによる実行のためのワークロードを割り当て、優先付けするために、このような記録されたメタデータ情報を利用するよう構成されてもよい。一つの実施例において、ワークロード・マネジャ１０２は、処理エンティティによって同時実行するための、ワークロードを割り当て、かつ、優先付けしてもよい。
【００１１】
ワークロード・キャラクタライザ１０１は、システム１００のワークロードのリソース要求を特徴付けるための、いかなるスクリプト、実行形式、モジュール、ライブラリ、あるいはその他実行可能な適切なディジタルエンティティによってインプリメントされてもよい。ワークロード・マネジャ１０２は、ワークロードを割り当て、かつ優先付けするための、いかなるスクリプト、実行形式、モジュール、ライブラリ、あるいはその他実行可能なディジタルエンティティによってインプリメントされてもよい。ワークロード・キャラクタライザ１０１は、ワークロード・キャラクタライザ１０１をホスティングすることに適したシステム１００のいかなる電子デバイスに存在してもよい。ワークロード・マネジャ１０２は、ワークロード・マネジャ１０２をホスティングすることに適したシステム１００のいかなる電子デバイスに存在してもよい。実施例において、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、同じ電子デバイスに存在してもよい。別の実施例においては、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、異なる電子デバイスに存在してもよい。ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、一つ以上のサーバ１０５に存在してもよい。サーバ１０５は、システム１００の電子デバイスによってインプリメントされてもよい。サーバ１０５、又はワークロード・キャラクタライザ１０１又はワークロード・マネジャ１０２が存在している電子デバイスは、メモリ１０８に接続されたプロセッサ１０６を含んでもよい。ワークロード・キャラクタライザ１０１は、プロセッサ１０６によって実行され、かつ、メモリ１０８に記憶されるよう構成されてもよい。ワークロード・マネジャ１０２は、プロセッサ１０６によって実行され、かつメモリ１０８に記憶されるよう構成されてもよい。実施例において、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、同じ実行形式、スクリプト、ファイル、モジュール又はライブラリにインプリメントされてもよい。別の実施例において、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、異なる実行形式、スクリプト、ファイル、モジュール又はライブラリにインプリメントされてもよい。
【００１２】
プロセッサ１０６は、例えばマイクロプロセッサ、マイクロコントローラ、デジタルシグナルプロセッサ（ＤＳＰ）、特定用途向け集積回路（ＡＳＩＣ）、又は、プログラム命令及び／又はプロセス・データを解釈し、及び／又は実行するように構成された他のいかなるデジタル、又はアナログ回路をも含んでもよい。いくつかの実施例では、プロセッサ１０６は、メモリ１０８に記憶されたプログラム命令及び／又はプロセス・データを解釈してもよく、及び／又は実行してもよい。メモリ１０６は一部又は全てがアプリケーション・メモリ、又はシステムメモリ、又はその両方で構成されてもよい。メモリ１０６には、一つ以上のメモリーモジュールを持つよう構成された、いかなるシステム、デバイス、又は、装置を含んでもよい。各々のメモリーモジュールは、一定期間プログラム命令及び／又はデータ（例えばコンピュータ可読のメディア）を保持するように構成される、いかなるシステム、デバイス、又は、装置を含んでもよい。
【００１３】
ワークロード・キャラクタライザ１０１は、ワークロード・メタデータ１０３を生成するように構成されてもよい。ワークロード・キャラクタライザ１０１は、システム１００のリソースの状態を分析し、かつリソース・ステータス１０４において特徴づけるように構成されてもよい。ワークロード・マネジャ１０２は、ワークロード・メタデータ１０３及び／又はリソース・ステータス１０４にアクセスするように構成されてもよい。ワークロード・マネジャは、システム１００の処理エンティティ上のワークロードの実行を優先させ、かつ割り当てるために、ワークロード・メタデータ１０３及びリソース・ステータス１０４を使用するように構成されてもよい。
【００１４】
ワークロード・キャラクタライザ１０１は、システム１００の各種レベルから処理エンティティのワークロード及びリソースを特徴づけるように構成されてもよい。例えば、ワークロード・キャラクタライザ１０１は、ワークロード、及び一つ以上の計算ノード１１０のリソース特徴を分析するように構成されてもよい。計算ノード１１０は、ネットワーク１１２を介して通信するように構成されてもよい。ネットワーク１１２は、通信のためのいかなる適切なネットワークで実行されてもよい。例えば、インターネット、イントラネット、広域ネットワーク、ローカル・エリア・ネットワーク、バックホールネットワーク（ｂａｃｋ−ｈａｕｌ−ｎｅｔｗｏｒｋｓ）、ピアツーピア−ネットワーク、又は、これらのいかなる組合せであってもよい
別の実施例において、ワークロード・キャラクタライザ１０１は、与えられた処理ユニット（例えば計算ノード１１０）の一つ以上のコア１１４のワークロード及びリソースを分析するように構成されてもよい。このようなコアは単一の計算ノード１１０の各々で動作するものであってもよい、又は、複数のコアが単一の計算ノードで動作してもよい。さらに別の実施例では、ワークロード・キャラクタライザ１０１は、一つ以上のスレッド１１８のワークロード及びリソースを分析するように構成されてもよい。このようなスレッドは単一のコア１１４の各々で動作してもよい。あるいは、複数のスレッドは単一ＣＰＵで動作してもよい。このようなスレッドは、コア１１４、ＣＰＵ、又は、他の処理エンティティによって並行的な実行として同時に動作していてもよい。
【００１５】
各々のこれらの実施例において、処理エンティティは、システム・リソースとして有限値を有している。このようなリソースは、リソースの共有を試みる処理エンティティによって異なってもよい。例えば、コア１１４は、ＣＰＵ  １１６及び他の計算ノード１１０のリソースへのアクセスを共有しようとしてもよい。他の例では、スレッド１１８は、コア・リソース１２０、又は、コア１１４の他の部分を共有するように構成されてもよい。ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、コンピュータ計算ノード１１０、コア１１４、スレッド１１８、各々のレベル、例えばＣＰＵ  １１６、又は、コア・リソース１２０のリソースに通信接続されてもよい。ワークロード・キャラクタライザ１０１は、所定のレベルの利用可能リソースを分析するように構成されてもよい。例えば、ワークロード・キャラクタライザ１０１は、計算ノード１１０が利用できるリソースを分析するように構成されてもよい。他の例では、ワークロード・キャラクタライザ１０１は、コア１１４（例えばＣＰＵ  １１６）が利用できるリソースを分析するように構成されてもよい。他の例では、ワークロード・キャラクタライザ１０１は、スレッド１１８（例えばコア・リソース１２０）が利用できるリソースを分析するように構成されてもよい。ワークロード・キャラクタライザは、リソース・ステータス１０４にこの分析の結果を蓄積するように構成されてもよい。
【００１６】
ワークロード・マネジャ１０２は、所定のレベルの処理エンティティの実行の優先順位を決定するために、ワークロード・メタデータ１０３及びリソース・ステータス１０４にアクセスするように構成されてもよい。
【００１７】
図２は、ワークロード・キャラクタライザ１０１によって特徴づけられ、かつシステム１００の処理エンティティによってワークロードの実行を優先させるためにワークロード・マネジャ１０２によって利用され得るシステム・リソースの具体例である。このようなリソースは、処理エンティティの性質に従って、異なるレベルに分けられてもよい。例えば、計算ノードのリソース２０２は、計算ノード１１０が利用できるシステム・リソースを示してもよい。他の例では、ＣＰＵリソース２１２は、コア１１４が利用できるリソースを示してもよい。さらに別の例では、コア・リソース２２２は、スレッド１１８によって実行できるリソースを示してもよい。
【００１８】
計算ノードのリソース２０２は、実行するために、計算ノード１１０に役立ついかなるリソースを含んでもよい。このような計算ノードのリソースは、例えば、利用できるシステムメモリ２０４、ノード間バンド幅２０５、与えられた計算ノード２０６のＣＰＵ使用（ｃｐｕ  ｕｓａｇｅ）、パワー使用限度２０７及び／又はＩ／Ｏ接続２０８を含んでもよい。
【００１９】
ＣＰＵリソース２１２は、実行するために、コア１１４に適するいかなるリソースを含んでもよい。このようなリソースは、以下を含むが、これに限定されるものではない。すなわち、ＲＡＭとＣＰＵとのバンド幅２１４、ＣＰＵ間バンド幅２１５、共用キャッシュ２１６、メモリ使用状況２１７、パワー使用限度２１８及び／又はアドレス変換バッファ（「ＴＬＢ」）２１９が挙げられる。ＣＰＵリソース２１２は、与えられた計算ノード１１０のＣＰＵ使用状況２０６を示してもよい。
【００２０】
コア・リソース２２２は、実行するために、スレッド１１８に適したいかなるシステム・リソースを含んでもよい。このようなリソースには、浮動小数点ユニット２２４、整数ユニット２２５、コア間バンド幅２２６、パワー使用限度２２７、さまざまなレジスタ２２８、及びコア占有キャッシュ２２９が含まれ得る。なお、これらに制限されない。コア・リソース２２２は、ＣＰＵリソース２１２の与えられたコアのメモリ使用状況２１７を形成してもよい。
【００２１】
図３は、システムから発生したワークロードがどのように、非効率的にシステムの様々な処理ユニットに割り当てられるかを示す図である。ジョブスケジューラキュー３０２は、一つ以上のジョブ３１０、又は、システム１００で実行される予定のワークロードを含んでもよい。ジョブスケジューラキュー３０２は、ワークロード・マネジャ１０２によって維持されてもよい。図３の実施例において、ジョブスケジューラキュー３０２は、一つ以上の利用できるＣＰＵ  １１６上での実行のためのさまざまなワーク・ジョブを含んでもよい。ＣＰＵ０、ＣＰＵ１及びＣＰＵ２の３台のＣＰＵが実行に利用できる。各々のＣＰＵは、関連づけられたジョブキュー３０４−３０８を有してもよい。例えば、ＣＰＵ０はＣＰＵジョブキュー＃１  ３０４に対応してもよい。ＣＰＵ１はＣＰＵジョブキュー＃２  ３０６に対応してもよい。そして、ＣＰＵ２はＣＰＵジョブキュー＃３  ３０８に対応してもよい。各々のジョブキュー３０４−３０８は、一つ以上のワークロードを有し、指定されたＣＰＵで実行される。ワークロード・マネジャ１０２は、ジョブスケジューラキュー３０２から、一つ以上のワークロード３１２を利用できるジョブキュー３０４−３０８に割り当てるように構成されてもよい。ワークロード・マネジャがワークロード・メタデータ１０３、又はリソース・ステータス１０４にアクセスしない場合、ワークロード・マネジャ１０２は、特定のジョブが処理エンティティの、相当量のリソース、プールされた利用可能な特定のリソースにストレスを与え、これを要求している情報を持たないこととなる。例えば、いくつかのワークロード３１０は特にＣＰＵとＲＡＭとの間のバンド幅にストレスを与えてもよい。他のものは共用キャッシュにストレスを与えてもよい。そして、他のものはＣＰＵ間接続にストレスを与えてもよい。更に、各々のＣＰＵジョブキュー３０２−３０８には、異なるタイプのワークロードがロードされてもよい。ＣＰＵジョブキュー３０４−３０８においてすでにロードされるワークロードの性質、及びジョブスケジューラキュー３１０から割り当てられるワークロード３１２の性質に関する情報なしでは、ワークロード・マネジャ１０２は、ジョブスケジューラキュー３１０から、所定のＣＰＵジョブキューに、ワークロード３１２の効果的な割当てをすることができない。例えば、ＣＰＵジョブキュー３０４−３０８の中で、ＣＰＵジョブキュー＃２は、実行に指定された２つのワークロードしか持っていない。ＣＰＵジョブキュー＃２は、待機中ワークロードが最少の数であるため、次のワークロードの割り当てが受信されるであろう。しかしながら、この両者のワークロードは、ＣＰＵとＲＡＭとの間のバンド幅をかなり消費するワークロードである。ワークロード・スケジューラ３０２は、ＣＰＵとＲＡＭとの間のバンド幅をかなり消費するワークロード３１０にどのＣＰＵジョブキューを割り当てるべきかについて決めるが、ワークロード・マネジャ１０２は、ＣＰＵジョブキュー＃１、又は、ＣＰＵジョブキュー＃３の代わりにこのようなワークロードをＣＰＵジョブキュー＃２に送信する。これは、非効率的な割り当てである。そのようなワークロードがＣＰＵジョブキュー���２よりも大きなワークロードであり、ＣＰＵジョブキュー＃１及び＃３は、ワークロード３１２を効率的に処理できるにもかかわらず、ワークロード・マネジャ１０２は、ＣＰＵジョブキュー＃１及び＃３が実行のための３つの待機中ワークロードを有することしか判断できない。
【００２２】
図４は、ワークロード・マネジャ１０２が待機中ワークロードをジョブキューに割り当る効果的な割り当て方式についての実施例を示している。この実施例において、ワークロード・マネジャ１０２は、例えばワークロード・メタデータ１０３及びワークロード・マネジャ１０２がワークロード３１０をジョブキュー３０４−３０８に効率的に割り当るリソース・ステータス１０４の情報にアクセスする。例えば、ＣＰＵジョブキュー＃２は、ＣＰＵジョブキュー＃１又はＣＰＵジョブキュー＃３よりも多い３つの待機中のワークロードを持っているとする。ワークロード・マネジャ１０２は所定のワークロード３１０を、いずれのジョブキューに割り当てるべきかについて決定するように構成され、割当の際、リソースの競合を回避する。例えば、ワークロード３１０は、重要なＣＰＵとＲＡＭとの間のバンド幅リソースを消費する。ワークロード・メタデータ１０３及びリソース・ステータス１０４の情報を使用することにより、ワークロード・マネジャ１０２は、ワークロード３１０のメタデータの性質、これに加えて各々のジョブキュー３０４−３０８に待機中のワークロードの性質を確認し得る。その結果として、ワークロード・マネジャ１０２は、ＣＰＵジョブキュー＃２には、ＣＰＵジョブキュー＃１、又は、ＣＰＵジョブキュー＃３より多くのジョブが待機しているにもかかわらず、待機中ワークロード３１０をＣＰＵジョブキュー＃２に割り当てるように構成されてもよい。ＣＰＵジョブキュー＃１及び＃２の両方が既に、実行においてＣＰＵとＲＡＭとの間のバンド幅にストレスを与えるような待機中ワークロードを有しているため、ワークロード・マネジャ１０２は上述のような割り当てを与える構成としてもよい。実施例において、ワークロード３１０は、並行して処理エンティティによって実行されてもよい。
【００２３】
図１に戻る。ワークロード・キャラクタライザ１０１は、システム１００の処理エンティティのワークロードを特徴づけるよう、いかなる適切な方法によって構成されてもよい。図２で示すリソースだけでなく、ワークロード・キャラクタライザは、いかなる適切なリソースを特徴づけてもよい。一つの実施例において、ワークロード・キャラクタライザ１０１は、システム１００の処理エンティティから、待機中ワークロードを、ワークロードのリソースの利用のプロファイルを作り特徴づけるための適切な電子デバイス上にロードするように構成されてもよい。ワークロード・キャラクタライザ１０１は、ワークロードのリソースの消費レベルを平均するために異なるサンプルデータを使用して、特徴づけられる各々のワークロードを複数回実行するように構成されてもよい。ワークロード・キャラクタライザ１０１は、システム１００の仕様に基づいてこのような特徴づけを実行するように構成されてもよい。例えば、ワークロード・キャラクタライザ１０１が８０％のＣＰＵメモリ帯域幅を使用する所定のワークロードを分析した場合、ワークロード・キャラクタライザ１０１は、このように判断をするように構成されてもよい。すなわち、利用できるＣＰＵメモリ帯域幅が１秒につき２０ギガビット（「Ｇｂｐｓ」）であり、ワークロードは１６ＧＢ／ｓのＣＰＵメモリ帯域幅を使用していた場合が挙げられる。このような技術を用いて、ワークロード・キャラクタライザ１０１は、所定のワークロードの必要性に基づいて、ワークロードを特徴づけるように構成されてもよい。ワークロード・キャラクタライザ１０１は、ボトルネックの原因となるリソースを特定するように構成されてもよい。
【００２４】
実施例において、ワークロード・キャラクタライザ１０１は、さまざまなワークロードの要求、及び定性的又は相対的な観点から処理エンティティが利用できるリソースを分析するように構成されてもよい。このような実施例では、ワークロード・マネジャ１０２は、ワークロード・メタデータ１０３及びリソース・ステータス１０４からこのような相対的情報に基づいてワークロードの実行を優先させるように構成されてもよい。別の実施例において、ワークロード・キャラクタライザ１０１は、さまざまなワークロードの要求及び処理エンティティが利用できるリソースを定量的方法で分析するように構成されてもよい。このような実施例では、ワークロード・マネジャ１０２は、ワークロード・メタデータ１０３及びリソース・ステータス１０４から定量的情報に基づいてワークロードの実行を優先させるように構成されてもよい。
【００２５】
図５は、ワークロード・キャラクタライザ１０１による、定性的又は相対的な手法によるワークロード・メタデータ１０３及びリソース・ステータス１０４の生成の例を示す。その結果、ワークロード・マネジャ１０２は実行を優先させてもよい。コア・オペレーション・ステータス５０２は、システム１００の所定のレベルで利用できるリソースの状態を示してもよい。コア・オペレーション・ステータス５０２は、処理エンティティによってすでに実行に割り当てられたワークロードのリソース要求を含んでもよい。ワークロードキュー５０４は、システム１００の所定のレベルのさまざまな処理エンティティによって実行のために要求されるワークロードを含んでもよい。ワークロードキュー５０４は、一つ以上のワークロード５０６を含んでもよい。所定のワークロード５０６の、又は、コア・オペレーション・ステータス５０２のリソース情報は、ワークロード・キャラクタライザ１０１によって設定されるように構成されてもよい。このようなリソース情報は、ワークロード・メタデータ１０３及びリソース・ステータス１０４に対応してもよい。ワークロード・キャラクタライザ１０１は、定性的に所定のワークロード５０６の情報を特徴づけるように構成されてもよい。ワークロード・キャラクタライザ１０１は、例えば、ベンチマーク、他のワークロードの情報、又は、利用可能なシステム・リソースに関連して所定のワークロードの情報を特徴づけるように構成されてもよい。ワークロード・キャラクタライザ１０１は、所定のワークロードのリソース要求をいかなる適切な分割（ｓｅｇｍｅｎｔａｔｉｏｎ）によって特徴づけるように構成されてもよい。
【００２６】
例えば、ワークロード・キャラクタライザ１０１は、所定のワークロード５０６により必要とされるリソースを、１つ以上の可能な利用のカテゴリ（例えば、重い利用（ｈｅａｖｉｌｙ  ｕｓａｇｅ）、軽い利用（ｌｉｇｈｔ  ｕｓａｇｅ））に特徴付けるよう構成されてもよい。同様に、ワークロード・キャラクタライザ１０１は、利用に関する一つ以上の可能なカテゴリに、一つ以上の処理エンティティのオペレーションの状態を特徴づけるように構成されてもよい。ワークロード・キャラクタライザ１０１は、例えば、コア・オペレーション・ステータス５０２のコアにおいて利用できるリソースを、軽い利用、又は重い利用に特徴づけるように構成されてもよい。ワークロード・キャラクタライザ１０１は、ワークロードキュー５０４の各々のワークロード５０６のために、このような特徴を決定するように構成されてもよい。例えば、図５で、ワークロード・キャラクタライザ１０１は、コア・オペレーション・ステータス５０２によって示される所定のコアが、浮動小数点ユニット２２４、整数ユニット２２５、パワー利用限度２２７に関連づけられたそのリソースに関して、軽く利用されていると決定するように構成されてもよい。ワークロード・キャラクタライザ１０１は、そのコア間バンド幅２２６、さまざまなレジスタ２２８、及びコア占有キャッシュ２２９に関して、コアのリソースが重く利用されていると決定するように構成されてもよい。同様に、この例において、ワークロード・キャラクタライザ１０１は、ワークロードＡは不動小数点ユニット２２４，コア間バンド幅２２６，及びコア占有キャッシュ２２９を重く利用すると決定するよう構成されてもよく、その他のリソースに関しては軽く利用していると決定してもよい。ワークロード・キャラクタライザ１０１は、ワークロードＢ、Ｃ及びＤに対して、同様の決定を行うよう構成されてもよい。
【００２７】
ワークロード・マネジャ１０２は、例えばコア・オペレーション・ステータス５０２，及び例えばワークロードキュー４０４のようなワークロードキューから、最適化された、又は向上した所定のコアにおいて実行されるワークロードの割り当てを決定するよう構成されてもよい。ワークロード・マネジャ１０２は、所定の処理エンティティにおいてワークロードの実行を最適化するためのいかなる適切な方式を採用するよう構成されてもよい。一つの実施例において、ワークロード・マネジャ１０２は、重いリソースの利用特徴を有する複数のワークロード５０６を、所定の処理エンティティによる実行に割り当てることを回避するように構成されてもよい。別の実施例において、ワークロード・マネジャ１０２は、所定のリソース・カテゴリの重いリソースの利用特徴を持つワークロード５０６を、その特徴に対するリソースがすでに重く圧迫されているコアによる実行に割り当てることを回避するように構成されてもよい。別の実施例において、ワークロード・マネジャ１０２は、処理エンティティの実行のためのボトルネックを発生させることを回避するためにワークロードキュー５０４の一つ以上のワークロード５０６を評価するように構成されてもよい。例えば、コア・オペレーション・ステータス５０２により示されるリソース・ステータス、及びワークロード５０６により示されるリソース要求が与えられた場合、システム１００のより効率的な実行を提供するために、ワークロード・マネジャ１０２は、ワークロードＡ、又はワークロードＢを送る前にワークロードＣ、又はワークロードＤを送るように構成されてもよい。ワークロード・マネジャ１０２は、ワークロードＢをワークロードＣと比較するように構成されてもよい。ワークロードＢ及びワークロードＣは両方とも数値演算プロセッサの重い利用を必要とする。しかし、ワークロードＢはまた、コア占有キャッシュ２２９の重い利用を要求する。
ワークロードＢが、初期の優先順位に関してワークロードキュー５０４においてワークロードＣより前に位置するが、コア占有キャッシュの重い利用を行うワークロードＢの要求がコア・オペレーション・ステータス５０２に示す利用可能リソースと競合を起こすため、ワークロード・マネジャ１０２は、ワークロードＣの実行を優先させるように構成されてもよい。特に、コアのコア占有キャッシュ２２９は、すでに重く利用される。
【００２８】
図６は、定量的分類の例、及びワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２による優先順位である。所定の処理エンティティのリソースの利用ステータス、又はシステム１００のレベルは、ノードのオペレーション・ステータス６０２によって反映されてもよい。
ノードのオペレーション・ステータス６０２は、処理エンティティによってすでに実行に割り当てられるワークロードのリソース要求を含んでもよい。ノード・オペレーション・ステータス６０２は、リソース（例えばノード間バンド幅２０５、ＣＰＵ利用２０６、パワー利用限度２０７、利用できるシステムメモリ２０４及びＩ／Ｏ接続２０８）を反映した領域を含んでもよい。ノード・オペレーション・ステータス６０２は、このようなリソースの各々の利用の現在のレベルの表示、及びこのようなリソースの各々の最大能力の表示を含んでもよい。例えば、ＣＰＵ０の現在の利用は８５％、ＣＰＵ１は０％、ノード間バンド幅２ＧＢ／ｓ、パワー利用３００ワット、利用できるシステムメモリ３８４ギガバイト、及びＩ／Ｏ接続５ＧＢ／ｓである。ワークロード・キャラクタライザ１０１は、例えば、一つ以上の計算ノード１１０のオペレーションに基づいて、ノード・オペレーション・ステータス６０２を決定するように構成されてもよい。システム１００の他の処理エンティティのためのオペレーション・ステータスを作成するように構成されてもよい。
【００２９】
ワークロード・キャラクタライザ１０１は、ワークロードキュー６０４に存在する１つ以上のワークロード６０６を特徴付けるよう構成されてもよい。ワークロードキュー６０４は、システム１００のさまざまな処理エンティティによる実行のために待機中の、システム１００のさまざまなワークロードを優先させるように構成されるデータ構造であってもよい。所定のワークロード６０６に対応するワークロードキュー６０４の各々のエントリは、システム・リソースを指定する領域を含んでもよい。これは、ノード・オペレーション・ステータス６０２における指定に類似している。このような指定は、所定のワークロードのリソース要求を反映している。例えば、ワークロードＡは、７０％ＣＰＵのリソース、１０ＧＢ／ｓのノード間バンド幅、最小のパワー利用、２５６ギガバイトのシステムメモリ及び１．５ＧＢ／ｓのＩ／Ｏ接続を必要としている。
【００３０】
ワークロード・マネジャ１０２は、実行可能な利用できるそれらのリソース要求及びリソースと比較して、ワークロードキュー６０４の要素の優先順位を評価するように構成されてもよい。ワークロード・マネジャ１０２は、さまざまなワークロード６０６を実行するためのシステム・リソースの最も効率的な利用を決定するために、いかなる適切な優先順位メカニズムを利用するように構成されてもよい。一つの実施例において、ワークロード・マネジャ１０２は、ワークロード６０６を、ワークロードを適切に実行するための容量が存在するかどうかに基づいて、所定の処理エンティティによる実行に割り当てるように構成されてもよい。例えば、ワークロード・マネジャ１０２は、ノード・オペレーション・ステータス６０２において示されるように、利用可能リソースと比較してワークロードＡを評価してもよい。このような実施例において、ワークロード・マネジャ１０２は、ノードが、ＣＰＵリソース、Ｉ／Ｏ接続及びパワー利用に関してワークロードＡを実行する能力を有するが、リソースは、ノード間バンド幅及びシステムメモリに関しては、ワークロードＡを実行するために十分にないと決定するように構成されてもよい。これに対して、ワークロード・マネジャ１０２は、ノード・オペレーション・ステータス６０２において示されるように、充分なリソースが利用できるので、ワークロードＢ及びワークロードＣをワークロードＡの前に送るよう決定するように構成されてもよい。このような実施例において、ワークロードＢはＣＰＵ１によって実行に割り当てられ、かつワークロードＣはＣＰＵ０によって実行が割り当てられてもよい。ワークロード・マネジャ１０２はワークロードＤがＣＰＵ０上での実行のために送信されてもよいと決定するように構成されてもよい。しかしながら、ワークロードＢ、又はワークロードＣのどちらとも一緒には、実行されないようにしてもよい。
【００３１】
ワークロード・マネジャ１０２は、定性的、相対的、又は定量的評価のいずれの場合であっても、所定のワークロードキューのワークロードの当初の割り当てを考慮するように構成されてもよい。例えば、ワークロードＢ及びＣが当初からワークロードＤより高い優先順位でワークロードキュー５０４において配置されたために、ワークロードＢ及びワークロードＣはワークロードＤの前にコアによって実行されるよう割り当てられてもよい。
【００３２】
例えば図２に示すような所定のリソースを特徴づけるために利用される容量及び容量の単位は、システム１００の特定の特徴に従って異なってもよい。容量の単位、最大容量、最大容量に影響を与えるファクタ及び利用に関して、表１ないし表３に示す。
【００３３】
【表１】
0005853624.tif 000002
表１は、システムを形成している複数ノードで共有される多ノード・システムのサンプル・リソースを示す。このようなリソースに対するメタデータは、ワークロード・マネジャ１０２によって決定されてもよい。そして、その結果として、このようなメタデータは、オペレーション、又はノードに対するワークロードの、又はこのようなノードによる共用リソースへのアクセスの割当てを優先させるために利用されてもよい。
【００３４】
表１において、ＣＰＵ当たりのＣＰＵ利用は、最大の利用を１００％として、パーセントでの利用として測定されてもよい。利用に影響を与えるファクタ及び最大値は、クロックレート、特定のプロセッサデザイン、及びＣＰＵアイドリングにかかる時間を含んでもよい。ノード間バンド幅は、ＧＢ／ｓで測定されてもよい。例えば、最大１０ＧＢ／ｓである。ノード間バンド幅に影響を与えるファクタとして、接続に用いられる技術のタイプ（例えば、インフィニバンド（Ｉｎｆｉｎｉｂａｎｄ）、又は１０ギガバイトのイーサネット(登録商標)）、及び利用できるチャネル数が含まれてもよい。利用できるシステムメモリは、ギガバイトで計測されてもよい。例えば５１２ギガバイトである。利用できるシステムメモリは、システム１００の特定の設計、インストールされているメモリ数に影響される。パワー利用制限は、ワットで計測できる。例えば最大６００ワットが挙げられる。パワー利用制限は、リソースのアイドリング、リソース利用、及びシステム１００の特定の設計に影響される。Ｉ／Ｏ接続リソースは、ＧＢ／ｓによって計測されてもよい。例えば、最大Ｉ／Ｏ接続としては、５ＧＢ／ｓが挙げられる。Ｉ／Ｏ接続リソースは、入出力チャネル数、及び入出力接続に用いられる技術により制限される。
【００３５】
【表２】
0005853624.tif 000003
表２は、処理ユニットのサンプル・リソースを示し、マルチコア処理ユニットにおいて、複数のコアによって共有される。このようなリソースに対するメタデータは、ワークロード・マネジャ１０２によって決定されてもよい。そして、このようなメタデータは、オペレーション、コアに割り当てるワークロード、又はコアに共有されるリソースへのアクセスの割り当ての優先順位を決めるために利用されてもよい。
【００３６】
表２において、コア当たりで決定されるコア利用は、１００％を最大とするパーセント利用率で評価されてもよい。リソースの利用に影響するファクタは、いかなるプロセッサのクロックレート、このようなプロセッサの特定の設計、及びコアがアイドリングに要した時間を含んでもよい。ＣＰＵ間バンド幅は、ＧＢ／ｓとして測定されてもよい。例えば、３０ＧＢ／ｓである。クロックレート及び特定のコア又はプロセッサの設計は、ＣＰＵ間バンド幅に影響する。ＣＰＵとＲＡＭとの間のバンド幅は、ＧＢ／ｓにより測定されてもよい。例えば最大値２０ＧＢ／ｓが例として挙げられる。クロックレート、メモリチャネル数、及びプロセッサ又はコアの特定の設計は、ＣＰＵとＲＡＭとの間のバンド幅に影響する。共用キャッシュは、メガバイトで測定されてもよい。例としては１２メガバイトが挙げられる。共用キャッシュは、システム１００のプロセッサ又はコアの特定の設計に影響を受ける。パワー利用制限は、ワットで測定できる。例えば１２５ワットが挙げられる。クロックレート、電源電圧、システム１００のプロセッサの特定の設計、所定のコアのアイドリングにかかる時間は、利用及び最大パワー利用に影響する。ＴＬＢは、エントリの総数で測定され得る。最大１，０００が例として挙げられる。このようなバッファの最大は、システム１００の特定の設計によって決定されてもよい。
【００３７】
【表３】
0005853624.tif 000004
表３は、マルチスレッドのコアの複数のスレッドで共有し得るコアのサンプル・リソースを示す。このようなリソースに対するメタデータは、ワークロード・マネジャ１０２によって決定されてもよい。この結果、このようなメタデータは、スレッドのオペレーションの優先順位付け、又は、スレッドによる共有リソースへのアクセスのオペレーションの優先順位付けに用いられる。
【００３８】
表３において、数値演算プロセッサの利用は、１命令当たりのサイクル数（クロック数）によって測定されてもよい。浮動小数点ユニットのオペレーションの最大は、例えば１命令当たり２．０サイクルである。クロックレート及びシステム１００の特定の設計が不動小数点ユニットの利用及び最大値に影響する。整数ユニットは、１命令当たりのサイクル数で計測されてもよい。例えば、１命令当たり１．５サイクルが例としてあげられる。コア間バンド幅は、ＧＢ／ｓで測定されてもよい。最大値としては、１，０００ＧＢ／ｓが挙げられる。
コア間バンド幅と同様に、クロックレート及びシステム１００の特定の設計は、整数ユニットの最大及び利用に影響を及ぼす。
コア占有キャッシュは、キロバイトで測定されてもよい。例えば、最大１２８キロバイトを有する。システム１００の特定の設計は、コア占有キャッシュの利用及び最大値に影響を及ぼす。パワー利用制限は、ワットで測定されてもよい。例えば、最大２５ワットが例として挙げられる。クロックレート、電源電圧、システム１００の特定の設計は、利用及び最大パワー利用制限、システム１００のリソースによるアイドリングに費やされる時間に影響を与える。その他の、最大値は、システム１００の特定の設計に依存する。そして、このような利用、及びその最大は、システム１００の処理エンティティのオペレーションを評価するために用いられる特定のレジスタの性質に従って変化する。
【００３９】
動作において、ワークロード・キャラクタライザ１０１は、システム１００の一つ以上の処理エンティティによって実行される２つ以上のワークロードのオペレーションの要求、及び計算リソースの要求を特徴づけてもよい。ワークロード・キャラクタライザ１０１は、このようなワークロードの実行のための利用できる計算リソースを特徴づけてもよい。したがって、ワークロード・キャラクタライザ１０１は、ワークロード・メタデータ１０１及びリソース・ステータス１０４を生成してもよい。これらは、利用可能なリソースの効率的利用のために、ワークロードを処理エンティティに割り当てるためにワークロード・マネジャ１０２によって利用されてもよい。ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２はサーバ１０５、異なる電子デバイス、又は同じ電子デバイス上で動作してもよい。そして、この同じ電子デバイスは、サーバ１０５とは異なる電子デバイスであってもよい。
【００４０】
ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、ワークロード・リクエスト、システム・リソースを評価してもよく、かつ、所定のレベルのシステム１００のワークロード及び処理エンティティのために、ワークロードの実行を割り当ててもよい。例えば、ワークロード・キャラクタライザ１０１及びワークロード・マネジャ１０２は、一つ以上の計算ノード１１０、一つ以上のコア１１４、又は一つ以上のスレッド１１８の、ワークロード・リクエスト及びシステム・リソースを評価してもよい
計算ノード１１０は、ネットワーク化された構成、又は方式（例えばクラウド計算方式）において実行されてもよい。計算ノード１１０は、一部の共有リソースを共有しながら、効率的に一つ以上のこのようなワークロードを実行するために、ワークロード・マネジャ１０２によってワークロードを割り当てられてもよい。計算ノード１１０は、リソース、例えば利用できるシステムメモリ２０４、ノード間バンド幅２０５、所定の計算ノードのＣＰＵ利用２０６、パワー利用限度２０７、及び／又はＩ／Ｏ接続バンド幅２０８、を共有してもよい。計算ノード１１０の全体（プール）に利用できるこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。所定のワークロードによって必要なこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。
【００４１】
コア１１４は、単一の計算ノード１１４において動作する。各々のコア１１４は、一部の計算リソース（例えばＣＰＵ１１６）を共有してもよい。ワークロード・マネジャ１０２は、一部の共有リソースを共有しながら、効率的に一つ以上のこのようなワークロードを実行するために、ワークロードをコア１１４に割り当ててもよい。このようなリソースは、ＣＰＵとＲＡＭとの間のバンド幅２１４、ＣＰＵ間バンド幅２１５、共用キャッシュ２１６、メモリ利用２１７、パワー利用限度２１８及び／又はアドレス変換バッファ２１９を含んでもよい。コア１１４の全体（プール）で利用できるこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。所定のワークロードによって必要なこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。
【００４２】
スレッド１１８は、単一のコア１１４で動作してもよい。各々のスレッド１１８は、一部の計算リソース（例えばコア・リソース１２０）を共有してもよい。ワークロード・マネジャ１０２は、一部の計算リソースを共有しながら、効率的に一つ以上のこのようなワークロードを実行するために、ワークロードをスレッド１１４に割り当ててもよい。このようなリソースは、浮動小数点ユニット２２４、整数ユニット２２５、コア間バンド幅２２６、パワー利用限度２２７、様様なレジスタ２２８及び／又はコア占有キャッシュ２２９を含んでもよい。スレッド１１８の全体（プール）に利用できるこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。所定のスレッド１１８によって必要なこのようなリソースの量は、ワークロード・キャラクタライザ１０１によって特徴づけられてもよい。
【００４３】
ワークロード・マネジャ１０２は、例えば、ワークロード・メタデータ１０３、ワークロード５０６、又はワークロード６０６に、ワークロードリソース要求を特徴づける結果を記憶してもよい。ワークロード・マネジャ１０２は、処理エンティティのプールのための利用できる計算リソースを特徴づける結果を記憶してもよい。例えば、リソース・ステータス１０４、コア・オペレーション・ステータス５０２、又はノード・オペレーション・ステータス６０２が挙げられる。
【００４４】
ワークロード・マネジャ１０２は、所定のワークロードを電子デバイスにロードして実行することによって、そのワークロードの要求を分析してもよい。ワークロード・マネジャ１０２は、特定のリソースのワークロードの利用を測定してもよい。ワークロード・マネジャ１０２は、リソースの利用を記録してもよい。一実施例において、サンプルデータが、ワークロードを実行するために利用されてもよい。ワークロード・マネジャ１０２は、異なるデータでワークロードを複数回実行し、かつ、その後リソース要求を平均化してもよい。
【００４５】
一実施例において、ワークロード・マネジャ１０２は、ワークロードリソース要求及び利用できる計算リソースを定性的に特徴づけてもよい。別の実施例において、ワークロード・マネジャ１０２は、他のワークロードリソース要求に対して、ベンチマークに対して、又は利用できる計算リソースに対して相対的に、ワークロードリソース要求を特徴づけてもよい。ワークロード・マネジャ１０２は、所定のワークロード５０６のニーズを、一つ以上の閾値を用いて、リソース要求をセグメントに分けることによって、別個のセグメント又は利用のカテゴリに特徴付けてもよい。例えば、５０％を超えるＣＰＵ利用は「重い」利用として分類され、５０％未満のＣＰＵ利用が「低い」利用として分類されてもよい。同様に、ワークロード・マネジャ１０２は、リソースの利用可能性を、一つ以上の閾値を用いて、リソース要求をセグメントに分けることによって、たとえば、コア・オペレーション・ステータス５０２のように、別個のセグメント又は利用のカテゴリに特徴付けてもよい。例えば、ＣＰＵリソースが５０％の容量より大きいレートで利用されている場合、リソースの負荷は「重い」と分類されてもよい。そして、ＣＰＵリソースが５０％の容量より低いレートで利用されている場合、リソースの負荷は「低い」と分類されてもよい。
【００４６】
別の実施例において、ワークロード・マネジャ１０２は、定量的にワークロードリソース要求及び利用できる計算リソースを特徴づけてもよい。ワークロード・マネジャ１０２は、所定のワークロード６０６のニーズを、ワークロードを実行するために必要とする容量を単位とする量に特徴づけてもよい。所定のワークロード６０６のための計算リソースの必要とされる量を示す方法は、必要とするリソースの性質に依存する。この点は、表１ないし３に示されている。例えば、計算リソースの必要な量は、利用できる計算リソースのパーセンテージ又は標準単位によって与えられていてもよい。
【００４７】
１つ以上の処理エンティティの全体（プール）に利用できる、必要とされる計算リソースの量を特徴付けるために、例えば、ノード・オペレーション・ステータス６０２に見られるように、これらのリソースの容量を単位とする量にワークロードを特徴付けてもよい。上記表１ないし３に記載されているように、処理エンティティ又は処理エンティティのプールのために利用できる計算リソースの量、例えばノード・オペレーション・ステータス６０２は、特定のリソースに依存する。例えば、利用できる計算リソースの量は、利用できる計算リソースのパーセンテージ、又は標準単位によって与えられていてもよい。
【００４８】
ワークロード・マネジャ１０２は、一つ以上の特定の処理エンティティによって実行される一つ以上のワークロードを割り当てるために、システム１００の利用可能なリソース及び待機中ワークロードによって要求されるリソースに関する情報を利用してもよい。待機中ワークロードは、キュー（例えばワークロードキュー５０４及び６０４、又はジョブスケジューラキュー３１０）に存在してもよい。処理エンティティはキュー（例えばＣＰＵジョブキュー３０４−３０８）を含んでもよい。そして、このキューに、ワークロード・マネジャ１０２は実行のための待機中ワークロードを挿入してもよい。このような挿入は、処理エンティティに対するワークロードの割当てであってもよい。
【００４９】
ワークロード・マネジャ１０２は、利用可能なあらゆる形態のリソースが、潜在的な制限因子、又はボトルネックを形成するか否かを判断するために、処理エンティティのプールに利用可能なリソースに関する情報（例えばコア・オペレーション・ステータス５０２、ノード・オペレーション・ステータス６０２、又はリソース・ステータス１０２）を利用してもよい。
【００５０】
例えば図５で、ワークロード・マネジャ１０２は、コア・オペレーション・ステータス５０２において示されるように、ワークロードＡによって重い利用がなされるリソースのいずれかが、利用できるコアによってすでに重い利用がなされているかどうか判断するために、ワークロードキュー５０４（例えばワークロードＡ）の最上位のワークロード５０６で必要とするリソースに関する情報を利用してもよい。ワークロードＡは、数値演算プロセッサ２３４のリソースの重い利用と、コア間バンド幅２２６のリソースの重い利用との両方を必要とする。
【００５１】
コア・オペレーション・ステータス５０２は、現在の数値演算プロセッサ２２４の利用は軽く、コア間バンド幅２２６の利用が重いことを示している。したがって、ワークロード・マネジャ１０２は、コア間バンド幅２２６が潜在的なボトルネックであると判定してもよい。ワークロード・マネジャ１０２は、重い利用を呈するいかなるリソースも潜在的なボトルネックであると判断してもよい。例えば、ワークロード・マネジャ１０２は、様々なレジスタ２２８の現在の利用、及びコア占有キャッシュ２２９が、同様に潜在的なボトルネックであると判断してもよい。
【００５２】
他の例では、図６において、ワークロード・マネジャ１０２は、ノード・オペレーション・ステータス６０２によって示されるように、ワークロード６０６によって必要ないずれかのリソースが、利用可能なリソースを上回るか否かを判断するために、ワークロードキュー６０４の一つ以上のワークロード６０６によって必要とされるリソースに関する情報を利用してもよい。ワークロードＡは、２５６ギガバイトのシステムメモリ２０４及び１０ＧＢ／ｓのノード間バンド幅２０５を必要とし、これに対して、ノード・オペレーション・ステータス６０２に示されるように、ノードのプールのための利用可能リソースは、１２８メガバイトの利用できるシステムメモリ２０４（５１２メガバイトの最大容量、３８４メガバイトが現在使用中であり減少している）及び８ＧＢ／ｓの利用できるノード間バンド幅２０５となっている。ワークロード・マネジャ１０２は、したがって、ワークロードＡのアプリケーションが利用できるシステムメモリ２０４及びノード間バンド幅２０５に対して、リソースのボトルネックが発生すると判断してもよい。
【００５３】
ワークロード・マネジャ１０２は、一つ以上の処理エンティティ上での実行のための一つ以上のワークロードを選択するために、潜在的なボトルネックに関する情報、処理エンティティのプールが利用できる計算リソース、及び一つ以上のワークロードによって必要とされる計算リソースを利用してもよい。
【００５４】
一つの実施例において、ワークロード・マネジャ１０２は、利用できる処理エンティティ・リソースに対する潜在的な競合に基づいて、ワークロードを優先させてもよい。様々な実施例において、ワークロード・マネジャ１０２は、ワークロード要求と、利用可能システム・リソースとの、定性的な又は相対的評価を比較して判断し、競合を最小化することによって、このようなワークロードを優先させてもよい。例えば、図５において、ワークロード・マネジャ１０２は、所定のコア・オペレーション・ステータス５０２及びワークロードキュー５０４を与えられ、ワークロードＢの実行がワークロードＡよりも優先されることを決定してもよい。なぜなら、ワークロードＢは単に「軽い」コア間バンド幅を要求しているため、コア間バンド幅２２６の潜在的ボトルネックにより、ワークロードＡよりもワークロードＢは、不利に影響されないからである。なお、ワークロードＡは、処理エンティティに対して、コア間バンド幅で「重い」要求を行っており、かつ、このようなリソースの利用において既に「重い」要求をしている。しかしながら、ワークロードＡ及びＢは両者とも、利用可能なコア占有キャッシュ２２９で潜在的な競合を呈しており、ワークロードＡ及びＢは、両者ともそのリソースに「重い」利用を要求している。そして、処理エンティティにおいてそのリソースは既に「重い」状態となっている。このため、ワークロード・マネジャ１０２は、ワークロードＡ及びＢよりも、ワークロードＣ及びＤを優先させてもよい。ワークロードＣ及びＤは、コア占有キャッシュ２２９について、潜在的な競合を持っていない。なぜなら、これらは、コア占有キャッシュ（ｃｏｒｅ  ｓｐｅｃｉｆｉｃ  ｃａｃｈｅ）２２９への要求が「軽い」からである。ワークロード・マネジャ１０２は、ワークロードＤよりもワークロードＣを選択してもよい。なぜなら、ワークロードＣはワークロードＤより、当初から上位の優先順位であり、ワークロードＣ及びＤの要求を見る限り、潜在的なボトルネックを持っていないからである。
【００５５】
一実施例において、ワークロード・マネジャ１０２は、ワークロードの測定されたリソース要求、及び利用できる処理リソースに基づいて、ワークロードを優先させてもよく、又は所定のワークロードを所定の処理エンティティに割り当ててもよい。このような実施例において、ワークロード・マネジャは、さまざまな処理エンティティの容量を上回らないように、ワークロード及びターゲット処理エンティティを優先させてもよく、又は選択してもよい。例えば、ワークロード・マネジャ１０２は、図６で、ワークロードＡが、２５６ＧＢのシステムメモリ２０４及び１０ＧＢ／ｓのノード間バンド幅２０５を必要とし、それぞれ１２８ＧＢ及び８ＧＢ／ｓだけが利用できる状態になっているため、ワークロードＡがノード・オペレーション・ステータス６０２によって示されるノードのプールのＣＰＵによる実行のために送信されいよう決定してもよい。ワークロード・マネジャ１０２は、ワークロードＢ及びワークロードＣが、処理エンティティのプールによる実行のために送信されるよう決定してもよい。なぜなら、これらのワークロードの要求のいずれも処理エンティティのプールで利用可能リソースを越えないからである。このような場合、ワークロードＢはＣＰＵ１上での実行のために送信されてもよい。なぜなら、それは８５％のＣＰＵリソース２０６を必要とし、かつＣＰＵ１は１００％の利用できるリソースを有するからである。ワークロードＣはＣＰＵ０、又はＣＰＵ１のいずれに送信されてもよい。なぜなら、その追加によって、いずれのＣＰＵの容量を超えることもないからである。
【００５６】
図７は、計算ワークロード・メタデータの生成、分析及び利用のための方法７００に関する実施例を示している。
【００５７】
ステップ７０５において、システムの利用できる計算リソースが測定される。このようなリソースは、例えば、計算ノードの間で、コアの間で、又はスレッドの間で共有されるリソースを反映してもよい。ステップ７１０において、利用できる計算リソースが、特徴づけられる。一実施例において、利用できる計算リソースは、定量的方法で特徴づけられてもよい。別の実施例において、このような計算リソースは、定性的、又は、例えばベンチマークに対して、計算リソースの経時的な量（ｈｉｓｔｏｒｉｃａｌ  ａｍｏｕｎｔｓ）に対して、又は様々なワークロードに要求される計算リソースに対して相対的に特徴付けられてもよい。
【００５８】
ワークロードの実行に影響を及ぼすことがあり得る、いかなる適切な利用できる計算リソースが、測定され、かつ特徴づけられてもよい。このようなリソースは、所定のワークロードを実行している処理エンティティに従って変化してもよい。
【００５９】
一実施例において、このような利用できる計算リソースは、定性的、又は、例えばベンチマークに対して、計算リソースの経時的量に対して、又は様々なワークロードに要求される計算リソースに対して相対的に特徴付けられてもよい。このような実施例では、一つ以上の閾値が、一つ以上のカテゴリにリソースの部分利用可能性に適用されてもよい。例えば、処理エンティティの現在のＣＰＵ利用のための５０％の閾値が適用される。この閾値よりも大きければ、そのような現在の利用は「重い」と分類され、この閾値よりも小さければ、そのような現在の利用は「軽い」と分類される。別の実施例において、利用できる計算リソースは、定量的に特徴づけられてもよい。このような実施例では、利用できる計算リソースは、比較及び分析のために、単位当たりの量（ｑｕａｎｔｉｔｙ  ｏｆ  ｕｎｉｔ）、パーセンテージ、又は他の適切なメカニズムの量として評価されてもよい。
【００６０】
一つ以上の待機中ワークロード（処理エンティティによる実行のために待機中のワークロード）に対して、ワークロードによって必要な計算リソースは、測定され、かつ特徴づけられる。ステップ７１５において、ワークロードは、評価のためにロードされてもよい。ステップ７２０において、ワークロードは、サンプルデータを利用して実行されてもよい。ステップ７２５において、ワークロードをロードするために必要なリソース、及び実行のための必要なリソースが測定されてもよい。ステップ７３０において、ステップ７１５−７２５は、一つ以上のサンプル・データ・セットに対して繰り返されてもよい。
【００６１】
ステップ７３５において、ワークロードによって必要な計算リソースは、平均値が取られ、かつ特徴づけられてもよい。一実施例において、必要な計算リソースは、定性的に特徴づけられてもよく、又は例えば、他のワークロード、ベンチマーク、又は利用可能システム・リソースに対して相対的に特徴付けられてもよい。このような実施例では、リソースの利用を一つ以上の利用のカテゴリに分類するために、一つ以上の閾値が適用されてもよい。例えば、ＣＰＵ利用に対して５０％の閾値が適用され、その閾値より高ければ、「重い」と分類され、低ければ、そのような利用は、「軽い」と分類される。別の実施例において、必要な計算リソースは、定量的に特徴づけられてもよい。このような実施例では、必要な計算リソースは、比較及び分析のための単位当たりの量、割合、又は他の適切なメカニズムの量として評価されてもよい。
【００６２】
ステップ７４０において、ワークロード要求は、他のワークロード要求に対して比較されてもよい。一実施例において、リソースの利用要求に従って、ワークロード要求は、ランクを付けられてもよい。
【００６３】
ステップ７４５において、ワークロード要求は、利用できる計算リソースに対して比較されてもよい。ワークロード要求及び利用できる計算リソースが定性的又は相対的な手法で決定された場合、要求の各々の一組はこのような要求がシステム・リソースの重い利用を必要とするかどうか判定するために分析されてもよい。ここで、システム・リソースは、すでに重く利用されている。ワークロード要求及び利用できる計算リソースが定量的方法で決定された場合、要求の各々の一組はこのような要求が利用できるリソースを上回るかどうか判定するために分析されてもよい。
【００６４】
ステップ７５０において、ワークロード要求と利用できる計算リソースとの比較に基づいて、ワークロードは効率的な実行のために優先されてもよい。一実施例において、ワークロードは、また、前の指定された又は決定されたいかなる順番又は優先順位に基づいて優先されてもよい。例えば、優先する第１のワークロードが、利用可能なリソースを上回る場合、当初は優先順位の低かった第２のワークロードを、第１のワークロードよりも更に優先させてもよい。この場合、第２のワークロードの実行は、利用可能リソースを上回らないと評価されるとする。他の例では、低い利用可能性を持つ利用可能な計算リソースに対応する一つ以上のボトルネックが特定されてもよい。このような実施例において、ワークロードは、ボトルネックを形成している計算リソースのそれらの要求に基づいて、実行のために優先されてもよい。
【００６５】
さらに別の例では、第１のワークロードが、利用できる計算リソースの大量消費をするリソースであると特定された場合、第２のワークロードが第１のものよりも優先されてもよい。ここにおいて、第２のワークロードは、計算リソースのより低い消費要求をもつものとする。ステップ７５５において、前のステップの優先順位に基づいて、ワークロードは実行のための処理エンティティに割り当てられてもよい。
【００６６】
方法７００は図１ないし図３のシステム、又は方法７００を実行するために利用できるいかなる他のシステムを利用して実行されてもよい。このように、方法７００のための好適なイニシャライズの位置、及びそのステップの順番は、選択されるインプリメンテーションに依存してもよい。いくつかの実施例では、一部のステップは、任意に省略されてもよく、繰り返され、又は組み合わされてもよい。例えば、方法７００のオペレーションの最中に、新たに要求されたワークロードが受信されてもよい。そして、新たに要求されたワークロードのメタデータを計測しかつ分析するために、幾つかのステップ７１５−７５０は適切に繰り返されてもよい。いくつかの実施例では、方法７００の一部のステップは、方法７００の他のステップと並列に実行されてもよい。例えば、ステップ７０５−７１０は、ステップ７１０−７４０と並列に実行されてもよい。ある種の実施例では、方法７００は、コンピュータ可読のメディアに格納されたソフトウェアによって、部分的に、又は完全に実行されてもよい。
【００６７】
この開示された実施例のために、コンピュータ可読の媒体は、一定期間、データ及び／又は命令を保持する、いかなる手段、又は手段の集合をも含み得る。コンピュータ可読のメディアとしては、格納媒体、例えば、ダイレクトアクセス記憶媒体（例えば、ハードディスクドライブ、フロッピー(登録商標)ディスク）、シーケンシャルアクセス記憶デバイス（例えば、テープディスクドライブ）、コンパクトディスク、ＣＤ−ＲＯＭ、ＤＶＤ、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、及び／又は、フラッシュメモリを含む。加えて、通信媒体、例えば、電線、光ファイバ、及びその他の電磁気学的及び／又は光媒体、及び／又はこれらのいかなる組合せも含まれる。なお上記は、限定を目的とするものではない。本実施例が詳細に説明されたが、添付の請求項に定義された開示の精神及び技術的範囲を逸脱しない限り、これらに対して、様々な変更、置換、変形を行うことが可能である。
【００６８】
以上の実施例に関し、更に以下の付記を開示する。
（付記１）計算リソースを管理する方法であって、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づけ；
最初に、前記第１のワークロードのメタデータが、前記第２のワークロード・メタデータより優先され；かつ
前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される；
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップであって、前記計算リソースを特徴づけている前記リソース・メタデータは、一つ以上の前記処理エンティティにより利用可能である、ステップと、
リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を有する方法。
（付記２）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される計算リソースの相対的特徴を含む、付記１記載の方法。
（付記３）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される前記計算リソースの定量的特徴を含む、付記１記載の方法。
（付記４）前記一つ以上の処理エンティティは、計算ノードのプールを有する、付記１記載の方法。
（付記５）前記一つ以上の処理エンティティは、プロセッサ・コアのプールを有する、付記１記載の方法。
（付記６）前記一つ以上の処理エンティティは、プロセッサ・スレッドのプールを有する、付記１記載の方法。
（付記７）ワークロードのためのワークロード・メタデータを生成するステップは、
実行のために前記ワークロードをシステムにロードするステップと；
データの第１のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
を有する付記１記載の方法。
（付記８）ワークロードのためのワークロード・メタデータを生成するステップは、
データの第２のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
前記ワークロードによって使用された計算リソースを平均化するステップと；
を更に有する付記７記載の方法。
（付記９）
第１の処理エンティティ及び第２の処理エンティティに利用可能な計算リソースを特徴付けることによって、リソース・メタデータが生成され；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び第２のワークロード・メタデータを比較するステップは、第１のワークロード・メタデータ及び第２のワークロード・メタデータを、前記第１の計算エンティティ及び前記第２の計算エンティティに利用可能な前記リソースに対して比較するステップを含み、
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップは、
前記第１の処理エンティティが、前記第２のワークロードを実行するために、十分なリソースを持っているか否かを判断するステップと；
前記第１の処理エンティティが、不十分なリソースしか持たない場合、前記第２のワークロードを実行するために、前記第２の処理エンティティが十分なリソースを持つか否かを判断するステップと；
前記第２の処理エンティティが十分なリソースを持つ場合、前記第２の処理エンティティによる実行のために前記第２のワークロードを割り当てるステップと；
を含む、付記１記載の方法。
（付記１０）第１の処理エンティティによる前記第１のワークロードの実行が、前記処理エンティティに対して、利用可能な計算リソースの所定のカテゴリの１００パーセントを超えさせる場合、潜在的な競合が特定される、付記３記載の方法。
（付記１１）
コンピュータに、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づけ；
最初に、前記第１のワークロードのメタデータが、前記第２のワークロード・メタデータより優先され；かつ
前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される； 
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップであって、前記計算リソースを特徴づけている前記リソース・メタデータは、一つ以上の前記処理エンティティにより利用可能である、ステップと、
リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を実行させるプログラム。
（付記１２）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される計算リソースの相対的特徴を含む、付記１１記載のプログラム。
（付記１３）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される前記計算リソースの定量的特徴を含む、付記１１記載のプログラム。
（付記１４）前記一つ以上の処理エンティティは、計算ノードのプールを有する、付記１１記載のプログラム。
（付記１５）前記一つ以上の処理エンティティは、プロセッサ・コアのプールを有する、付記１１記載のプログラム。
（付記１６）前記一つ以上の処理エンティティは、プロセッサ・スレッドのプールを有する、付記１１記載のプログラム。
（付記１７）ワークロードのためのワークロード・メタデータを生成するステップは、
実行のために前記ワークロードをシステムにロードするステップと；
データの第１のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
を有する付記１１記載のプログラム。
（付記１８）ワークロードのためのワークロード・メタデータを生成するステップは、
データの第２のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
前記ワークロードによって使用された計算リソースを平均化するステップと；
を更に有する付記１７記載のプログラム。
（付記１９）
第１の処理エンティティ及び第２の処理エンティティに利用可能な計算リソースを特徴付けることによって、リソース・メタデータが生成され；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び第２のワークロード・メタデータを比較するステップは、第１のワークロード・メタデータ及び第２のワークロード・メタデータを、前記第１の計算エンティティ及び前記第２の計算エンティティに利用可能な前記リソースに対して比較するステップを含み、
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップは、
前記第１の処理エンティティが、前記第２のワークロードを実行するために、十分なリソースを持っているか否かを判断するステップと；
前記第１の処理エンティティが、不十分なリソースしか持たない場合、前記第２のワークロードを実行するために、前記第２の処理エンティティが十分なリソースを持つか否かを判断するステップと；
前記第２の処理エンティティが十分なリソースを持つ場合、前記第２の処理エンティティによる実行のために前記第２のワークロードを割り当てるステップと；
を含む、付記１１記載のプログラム。
（付記２０）第１の処理エンティティによる前記第１のワークロードの実行が、前記処理エンティティに対して、利用可能な計算リソースの所定のカテゴリの１００パーセントを超えさせる場合、潜在的な競合が特定される、付記１３記載のプログラム。
（付記２１）計算ワークロードを管理するシステムであって、
プロセッサと；
前記プロセッサに接続される計算機可読の媒体であって、コンピュータに、
第１のワークロードのための第１のワークロード・メタデータを生成するステップと；
第２のワークロードのための第２のワークロード・メタデータを生成するステップであって：
前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータの各々は、関連づけられたワークロードによって必要な計算リソースを特徴づけ；
前記第１のワークロード及び前記第２のワークロードは、一つ以上の処理エンティティによって実行される；
ステップと；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び前記第２のワークロード・メタデータを比較するステップであって、前記計算リソースを特徴づけている前記リソース・メタデータは、一つ以上の前記処理エンティティにより利用可能である、ステップと、
リソース・メタデータに対するワークロード・メタデータの前記比較に基づいて、前記第１のワークロードと前記処理エンティティが利用できる前記計算リソースとの間でのリソース要求の潜在的な競合を特定するステップと；
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップであって、リソース要求の前記潜在的な競合は、前記第２のワークロードの前記リソース要求と前記処理エンティティが利用できる前記計算リソースとの間に存在しない、ステップと、
を実行させるプログラムを格納した媒体と；
を有するシステム。
（付記２２）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される計算リソースの相対的特徴を含む、付記２１記載のシステム。
（付記２３）前記第１のワークロード・メタデータ及び第２のワークロード・メタデータは、各々のワークロードに要求される前記計算リソースの定量的特徴を含む、付記２１記載のシステム。
（付記２４）前記一つ以上の処理エンティティは、計算ノードのプールを有する、付記２１記載のシステム。
（付記２５）前記一つ以上の処理エンティティは、プロセッサ・コアのプールを有する、付記２１記載のシステム。
（付記２６）前記一つ以上の処理エンティティは、プロセッサ・スレッドのプールを有する、付記２１記載のシステム。
（付記２７）ワークロードのためのワークロード・メタデータを生成するステップは、
実行のために前記ワークロードをシステムにロードするステップと；
データの第１のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
を有する付記２１記載のシステム。
（付記２８）ワークロードのためのワークロード・メタデータを生成するステップは、
データの第２のサンプルによって前記ワークロードを実行するステップと；
前記ワークロードによって利用される前記計算リソースを測定するステップと；
前記ワークロードによって使用された計算リソースを平均化するステップと；
を更に有する付記２７記載のシステム。
（付記２９）
第１の処理エンティティ及び第２の処理エンティティに利用可能な計算リソースを特徴付けることによって、リソース・メタデータが生成され；
リソース・メタデータに対して前記第１のワークロード・メタデータ及び第２のワークロード・メタデータを比較するステップは、第１のワークロード・メタデータ及び第２のワークロード・メタデータを、前記第１の計算エンティティ及び前記第２の計算エンティティに利用可能な前記リソースに対して比較するステップを含み、
前記処理エンティティのうちの１つによる実行のために前記第２のワークロードを割り当てるステップは、
前記第１の処理エンティティが、前記第２のワークロードを実行するために、十分なリソースを持っているか否かを判断するステップと；
前記第１の処理エンティティが、不十分なリソースしか持たない場合、前記第２のワークロードを実行するために、前記第２の処理エンティティが十分なリソースを持つか否かを判断するステップと；
前記第２の処理エンティティが十分なリソースを持つ場合、前記第２の処理エンティティによる実行のために前記第２のワークロードを割り当てるステップと；
を含む、付記２１記載のプログラム。
（付記３０）第１の処理エンティティによる前記第１のワークロードの実行が、前記処理エンティティに対して、利用可能な計算リソースの所定のカテゴリの１００パーセントを超えさせる場合、潜在的な競合が特定される、付記２３記載のシステム。
【符号の説明】
【００６９】
１００  システム
１０５  サーバ
１１０  計算ノード
１１２  ネットワーク
１１４  コア
１１８  スレッド
【図１】
0005853624.tif 000005
【図２】
0005853624.tif 000006
【図３】
0005853624.tif 000007
【図４】
0005853624.tif 000008
【図５】
0005853624.tif 000009
【図６】
0005853624.tif 000010
【図７】
0005853624.tif 000011