(57)【要約】【課題】  アクセラレータ・リソースを動的に管理するため方法、情報処理システム、およびコンピュータ可読記憶媒体を提供する。【解決手段】  第１の組のハードウェア・アクセラレータ・リソースが第１の情報処理システムに初めに割り当てられ、第２の組のハードウェア・アクセラレータ・リソースが第２の情報処理システムに初めに割り当てられる。第１および第２の情報処理システム上で実行されるジョブがモニターされる。ジョブの１つが目標を満足し損なったときに、第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースが第２の情報処理システムから第１の情報処理システムに動的に再割り当てされる。【選択図】  図１
2013515991.tif 000002
【特許請求の範囲】
【請求項１】
アクセラレータ・リソースを動的に管理するための方法であって、前記コンピュータによって実行される方法が、
初めに、第１の組のハードウェア・アクセラレータ・リソースを第１の情報処理システムに割り当て、第２の組のハードウェア・アクセラレータ・リソースを第２の情報処理システムに割り当てるステップと、
少なくとも１つのプロセッサにより、前記第１および第２の情報処理システム上で実行される複数のジョブをモニターするステップと、
前記ジョブの１つが目標を満足し損なったときに、前記第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースを前記第２の情報処理システムから前記第１の情報処理システムに動的に再割り当てするステップと
を含む、方法。
【請求項２】
前記モニターするステップが、前記ジョブに関連するランタイム統計情報を分析することを含む、請求項１記載の方法。
【請求項３】
前記動的に再割り当てするステップが、前記１つのジョブに関連する優先レベルがしきい値を上回るときに実行される、請求項１または請求項２記載の方法。
【請求項４】
前記モニターするステップが、
前記ジョブに関連するランタイム統計情報を分析するサブステップと、
１つまたは複数のハードウェア・アクセラレータ・リソースを前記第１の情報処理システムに再割り当てすると、前記１つのジョブが前記目標を満足する可能性が高まるかどうかを判断するサブステップと
を含む、請求項１ないし３のいずれかに記載の方法。
【請求項５】
前記動的に再割り当てするステップが、前記可能性がしきい値を上回る場合に実行される、請求項４記載の方法。
【請求項６】
前記モニターするステップが、
１つまたは複数のハードウェア・アクセラレータ・リソースが前記第１の情報処理システムに再割り当てされる場合に前記第１の情報処理システムが獲得する値と、前記１つまたは複数のハードウェア・アクセラレータ・リソースが前記第１の情報処理システムに再割り当てされる場合に前記第２の情報処理システムが喪失する値を比較するサブステップを含み、
前記動的に再割り当てするステップが、前記第１の情報処理システムが獲得する前記値が前記第２の情報処理システムが喪失する前記値より高い場合に実行される、請求項１ないし５のいずれかに記載の方法。
【請求項７】
前記動的に再割り当てするステップが、
前記少なくとも１つのハードウェア・アクセラレータ・リソースに対して新しいジョブを発行するのを停止するよう前記第２の情報処理システムに指示するサブステップと、
前記第２の情報処理システムによって前記少なくとも１つのハードウェア・アクセラレータ・リソースに発行された前記ジョブのすべてが完了した時期を判断するサブステップと
を含む、請求項１ないし６のいずれかに記載の方法。
【請求項８】
アクセラレータ・リソースを動的に管理するための情報処理システムであって、前記情報処理システムが、
メモリと、
前記メモリに通信可能に結合されたプロセッサと、
前記メモリおよび前記プロセッサに通信可能に結合された割り当てマネージャであって、
初めに、第１の組のハードウェア・アクセラレータ・リソースを第１の情報処理システムに割り当て、第２の組のハードウェア・アクセラレータ・リソースを第２の情報処理システムに割り当て、
前記第１および第２の情報処理システム上で実行される複数のジョブをモニターし、
前記ジョブの１つが目標を満足し損なったときに、前記第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースを前記第２の情報処理システムから前記第１の情報処理システムに動的に再割り当てする
ように構成される、割り当てマネージャと
を含む、情報処理システム。
【請求項９】
前記複数のジョブをモニターすることが、前記ジョブに関連するランタイム統計情報を分析することを含む、請求項８記載の情報処理システム。
【請求項１０】
前記動的に再割り当てすることが、前記１つのジョブに関連する優先レベルがしきい値を上回るときに実行される、請求項８または請求項９記載の情報処理システム。
【請求項１１】
前記複数のジョブをモニターすることが、
前記ジョブに関連するランタイム統計情報を分析することと、
１つまたは複数のハードウェア・アクセラレータ・リソースを前記第１の情報処理システムに再割り当てすると、前記１つのジョブが前記目標を満足する可能性が高まるかどうかを判断すること
を含む、請求項８ないし１０のいずれかに記載の情報処理システム。
【請求項１２】
前記動的に再割り当てすることが、前記可能性がしきい値を上回る場合に実行される、請求項１１記載の情報処理システム。
【請求項１３】
前記複数のジョブをモニターすることが、
１つまたは複数のハードウェア・アクセラレータ・リソースが前記第１の情報処理システムに再割り当てされる場合に前記第１の情報処理システムが獲得する値と、前記１つまたは複数のハードウェア・アクセラレータ・リソースが前記第１の情報処理システムに再割り当てされる場合に前記第２の情報処理システムが喪失する値を比較することを含み、
前記動的に再割り当てすることが、前記第１の情報処理システムが獲得する前記値が前記第２の情報処理システムが喪失する前記値より高い場合に実行される、請求項８ないし１２のいずれかに記載の情報処理システム。
【請求項１４】
前記動的に再割り当てすることが、
前記少なくとも１つのハードウェア・アクセラレータ・リソースに対して新しいジョブを発行するのを停止するよう前記第２の情報処理システムに指示することと、
前記第２の情報処理システムによって前記少なくとも１つのハードウェア・アクセラレータ・リソースに発行された前記ジョブのすべてが完了した時期を判断すること
を含む、請求項８ないし１３のいずれかに記載の情報処理システム。
【請求項１５】
コンピュータ・システムにロードされ、そこで実行されたときに、請求項１ないし７のいずれかに記載の方法の前記ステップのすべてを前記コンピュータ・システムに実行させるコンピュータ・プログラム・コードを含むコンピュータ可読記憶媒体上に保管されたコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、作業負荷管理の分野に関し、詳細には、ハードウェア・アクセラレータを使用して作業負荷を管理することに関する。
【背景技術】
【０００２】
Ｉｎｔｅｌ（Ｒ）、ＡＭＤ（Ｒ）、およびＩＢＭ  ＰＯＷＥＲ（Ｒ）などの汎用プロセッサは、広範囲の作業負荷をサポートするように設計されている。既存の能力を上回る処理能力が必要な場合、特定の適用例の要件を満たすために、ハードウェア・アクセラレータをコンピュータ・システムに接続することができる。また、パフォーマンス上のボトルネックに対処するためにハードウェア・アクセラレータを使用することもできる。このようなアクセラレータは、システムによって使用可能なコンピューティング・リソースと見なされる。ハードウェア・アクセラレータの例としては、フィールド・プログラマブル・アレイ（ＦＰＧＡ）、ＩＢＭ  Ｃｅｌｌ  Ｂ．Ｅ．（ブロードバンド・エンジン）プロセッサ、およびグラフィック処理ユニット（ＧＰＵ）を含む。アクセラレータは、その特定のタスクに関する価格／パフォーマンスの点でシステムの汎用プロセッサより優れている。ハードウェア・アクセラレータは、ＰＣＩエクスプレス入出力スロットによるかまたはイーサネットおよびインフィニバンド（Ｒ）などの高速ネットワークの使用などにより、プロセッサ複合体またはネストに直接接続することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第５４７３７７３号
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来の作業負荷管理システムは、特定のホスト・システムに割り当てられたアクセラレータ・リソースをそのホスト上で実行されるジョブ間に分散する。しかし、このような従来の作業負荷管理システムは、一般に、複数システム間で割り当てられた使用可能アクセラレータ・リソースを効果的かつ効率的に使用するわけではない。
【課題を解決するための手段】
【０００５】
したがって、本発明は、第１の態様では、アクセラレータ・リソースを動的に管理するための方法を提供し、このコンピュータによって実行される方法は、初めに、第１の組のハードウェア・アクセラレータ・リソースを第１の情報処理システムに割り当て、第２の組のハードウェア・アクセラレータ・リソースを第２の情報処理システムに割り当てるステップと、少なくとも１つのプロセッサにより、第１および第２の情報処理システム上で実行される複数のジョブをモニターするステップと、ジョブの１つが目標を満足し損なったときに、第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースを第２の情報処理システムから第１の情報処理システムに動的に再割り当てするステップとを含む。
【０００６】
好ましくは、モニターするステップは、ジョブに関連するランタイム統計情報を分析することを含む。好ましくは、動的に再割り当てするステップは、１つのジョブに関連する優先レベルがしきい値を上回るときに実行される。好ましくは、モニターするステップは、ジョブに関連するランタイム統計情報を分析するサブステップと、１つまたは複数のハードウェア・アクセラレータ・リソースを第１の情報処理システムに再割り当てすると、１つのジョブが目標を満足する可能性が高まるかどうかを判断するサブステップとを含む。好ましくは、動的に再割り当てするステップは、その可能性がしきい値を上回る場合に実行される。好ましくは、モニターするステップは、１つまたは複数のハードウェア・アクセラレータ・リソースが第１の情報処理システムに再割り当てされる場合に第１の情報処理システムが獲得する値と、１つまたは複数のハードウェア・アクセラレータ・リソースが第１の情報処理システムに再割り当てされる場合に第２の情報処理システムが喪失する値を比較するサブステップを含み、動的に再割り当てするステップは、第１の情報処理システムが獲得する値が第２の情報処理システムが喪失する値より高い場合に実行される。好ましくは、動的に再割り当てするステップは、少なくとも１つのハードウェア・アクセラレータ・リソースに対して新しいジョブを発行するのを停止するよう第２の情報処理システムに指示するサブステップと、第２の情報処理システムによって少なくとも１つのハードウェア・アクセラレータ・リソースに発行されたジョブのすべてが完了した時期を判断するサブステップとを含む。
【０００７】
第２の態様では、アクセラレータ・リソースを動的に管理するための情報処理システムが提供され、この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサと、メモリおよびプロセッサに通信可能に結合された割り当てマネージャ（assignment manager）であって、初めに、第１の組のハードウェア・アクセラレータ・リソースを第１の情報処理システムに割り当て、第２の組のハードウェア・アクセラレータ・リソースを第２の情報処理システムに割り当て、第１および第２の情報処理システム上で実行される複数のジョブをモニターし、ジョブの１つが目標を満足し損なったときに、第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースを第２の情報処理システムから第１の情報処理システムに動的に再割り当てするように構成される、割り当てマネージャとを含む。
【０００８】
好ましくは、複数のジョブをモニターすることは、ジョブに関連するランタイム統計情報を分析することを含む。好ましくは、動的に再割り当てすることは、１つのジョブに関連する優先レベルがしきい値を上回るときに実行される。好ましくは、複数のジョブをモニターすることは、ジョブに関連するランタイム統計情報を分析することと、１つまたは複数のハードウェア・アクセラレータ・リソースを第１の情報処理システムに再割り当てすると、１つのジョブが目標を満足する可能性が高まるかどうかを判断することを含む。好ましくは、動的に再割り当てすることは、その可能性がしきい値を上回る場合に実行される。好ましくは、複数のジョブをモニターすることは、１つまたは複数のハードウェア・アクセラレータ・リソースが第１の情報処理システムに再割り当てされる場合に第１の情報処理システムが獲得する値と、１つまたは複数のハードウェア・アクセラレータ・リソースが第１の情報処理システムに再割り当てされる場合に第２の情報処理システムが喪失する値を比較することを含み、動的に再割り当てすることは、第１の情報処理システムが獲得する値が第２の情報処理システムが喪失する値より高い場合に実行される。好ましくは、動的に再割り当てすることは、少なくとも１つのハードウェア・アクセラレータ・リソースに対して新しいジョブを発行するのを停止するよう第２の情報処理システムに指示することと、第２の情報処理システムによって少なくとも１つのハードウェア・アクセラレータ・リソースに発行されたジョブのすべてが完了した時期を判断することを含む。
【０００９】
第３の態様では、コンピュータ・システムにロードされ、そこで実行されたときに、第１の態様の方法のステップのすべてをコンピュータ・システムに実行させるコンピュータ・プログラム・コードを含むコンピュータ可読記憶媒体上に保管されたコンピュータ・プログラムが提供される。第１の態様の方法の好ましい特徴は、対応する好ましいコンピュータ・プログラム・コードの特徴を有する。
【００１０】
本発明の一実施形態は、アクセラレータ・リソースを動的に管理するためのコンピュータによって実行される方法を提供する。この方法により、第１の組のハードウェア・アクセラレータ・リソースが第１の情報処理システムに初めに割り当てられ、第２の組のハードウェア・アクセラレータ・リソースが第２の情報処理システムに初めに割り当てられる。少なくとも１つのプロセッサにより、第１および第２の情報処理システム上で実行されるジョブがモニターされる。ジョブの１つが目標を満足し損なったときに、第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースが第２の情報処理システムから第１の情報処理システムに動的に再割り当てされる。
【００１１】
本発明の他の実施形態は、アクセラレータ・リソースを動的に管理するための情報処理システムを提供する。この情報処理システムは、メモリと、メモリに通信可能に結合されたプロセッサとを含む。また、この情報処理システムは、メモリおよびプロセッサに通信可能に結合された割り当てマネージャも含む。割り当てマネージャは、初めに、第１の組のハードウェア・アクセラレータ・リソースを第１の情報処理システムに割り当て、第２の組のハードウェア・アクセラレータ・リソースを第２の情報処理システムに割り当てるように構成される。第１および第２の情報処理システム上で実行されるジョブがモニターされる。ジョブの１つが目標を満足し損なったときに、第２の組のハードウェア・アクセラレータ・リソース内の少なくとも１つのハードウェア・アクセラレータ・リソースが第２の情報処理システムから第１の情報処理システムに動的に再割り当てされる。
【００１２】
次に、添付図面に関連して、一例としてのみ、本発明の好ましい一実施形態について説明する。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態による動作環境を示すブロック図である。
【図２】本発明の一実施形態によるホスト・システムへのアクセラレータ・リソースの初期割り当てを示すブロック図である。
【図３】本発明の一実施形態によるホスト・システムへのアクセラレータ・リソースの動的再割り当てを示すブロック図である。
【図４】本発明の一実施形態によりアクセラレータ・リソースを動的に管理するためのプロセスを示す動作流れ図である。
【図５】本発明の一実施形態によりアクセラレータ・リソースを動的に管理するためのプロセスを示す動作流れ図である。
【図６】本発明の一実施形態によりアクセラレータ・リソースを動的に管理するためのプロセスを示す動作流れ図である。
【図７】本発明の一実施形態による情報処理システムを示すブロック図である。
【図８】本発明の一実施形態により、サービス・クラス内のジョブがアクセラレータの使用を待っている長さと、ホスト・システムに割り当てられたアクセラレータの数との関係を示す図である。
【発明を実施するための形態】
【００１４】
動作環境
図１は、本発明の諸実施形態に適用可能な模範的な動作環境を示している。図１の模範的な環境１００は、ＳＭＰコンピューティング環境で動作する並列分散処理システムである。ＳＭＰコンピューティング環境では、並列アプリケーションは、同じ処理ノード上の複数のプロセッサ上で実行される、いくつかのジョブ（プロセス）を有することができる。図１の模範的な環境はＳＭＰ環境であるが、本発明はこのように限定されない。その他のアーキテクチャも適用可能であり、本発明のいくつかの実施形態は単一システム内で動作する。
【００１５】
図１は、複数のホスト・システム１０２、１０４、および１０６を示している。各ホスト・システム１０２、１０４、および１０６は、それぞれが実行すべき１つまたは複数のジョブ１１４、１１６、および１１８を含む、１つまたは複数の作業負荷１０８、１１０、および１１２を有する。また、各ホスト・システム１０２、１０４、および１０６は、そのホスト・システムに現在割り当てられているハードウェア・アクセラレータを識別するアクセラレータ割り当て情報１１９も有する。ホスト・システム１０２、１０４、および１０６のそれぞれは、イーサネット・ネットワークまたはインフィニバンド（Ｒ）などの相互接続ファブリック（interconnect fabric）１２０に通信可能に結合される。また、複数のハードウェア・アクセラレータ１２２、１２４、および１２６も相互接続ファブリック１２０に通信可能に結合される。各ハードウェア・アクセラレータ１２２、１２４、および１２６は、（汎用プロセッサと比べると）最適化したパフォーマンスを有する限られた１組の特定の機能を実行することができる特殊目的ハードウェア・コンポーネントまたは電気製品である。ホスト・システム１０２、１０４、および１０６のうちの１つまたは複数は、アクセラレータ１２２、１２４、および１２６のうちの１つまたは複数を使用して、その作業負荷の少なくとも一部分を実行する。
【００１６】
図１は、割り当てマネージャ１３０を有する情報処理システム１２８も示している。割り当てマネージャ１３０は、１つまたは複数のアクセラレータ１２２、１２４、および１２６をホスト・システム１０２、１０４、および１０６に動的に割り当てる。このアクセラレータの動的再割り当てにより、それぞれのホスト上で実行されるサービス・クラス／ジョブのパフォーマンスおよび重要性に基づいて、アクセラレータを様々なホストに割り当てることができる。ホストがそのパフォーマンス目標を満たしていない優先順位の高いジョブを実行している場合、割り当てマネージャは、優先順位のより低いジョブまたはこの動的再割り当てによって影響されないジョブを実行している他のホストからアクセラレータ・リソースを動的に再割り当てすることができる。作業負荷に基づいてアクセラレータ・リソースのバランスを取るこの能力により、より高い全体使用率を達成することができる。また、アクセラレータ・リソースが制約される状況では、最も重要なジョブを優先することができる。
【００１７】
割り当てマネージャ１３０は、ジョブ・モニター（job monitor）１３２と、ジョブ選別器（job classifier）１３４と、ホスト照会モジュール（host queryingmodule）１３６と、アクセラレータ割り当て器（accelerator assigner）１３８と、初期割り当て構成データ１４０とを含む。また、情報処理システム１２８は、ジョブ統計１４２と、ジョブ分類情報１４４と、サービス・クラス情報１４６も含む。他の諸実施形態では、割り当てマネージャ１３０は、ホスト・システムのうちの１つまたは複数に常駐することができる。
【００１８】
アクセラレータ・リソースの動的再割り当て
例示されている実施形態では、割り当てマネージャ１３０のジョブ選別器１３４は、ホスト・システム１０２、１０４、および１０６に常駐するジョブ１１４、１１６、および１１８のそれぞれを分析し、その「サービス・クラス」と呼ばれる特定タイプの作業として各ジョブを分類する。それぞれのサービス・クラスは関連の目標および優先順位を有する。たとえば、目標は、「５秒以内に終了する」などのターゲット付きの応答時間にすることができる。この実施形態では、サービス・クラスの目標および重要性は管理者によって設定される。この情報はサービス・クラス情報１４６内に保管される。ジョブ選別器１３４は、ジョブの属性（ジョブ名、ジョブをサブミットしたユーザのユーザＩＤなど）を分析し、ジョブの属性とサービス・クラス情報１４６に基づいて、そのジョブがどのサービス・クラスに分類されるかを識別する。代替実施形態では、ジョブ選別器１３４は、ジョブに関連する統計情報１４２を使用して、どのサービス・クラスをそのジョブに関連付けるかを判断する。その他の関連属性にも基づいて、ジョブをサービス・クラスに分類することができる。
【００１９】
例示されている実施形態では、割り当てマネージャは、初めに、初期割り当て構成データ１４０に基づいて、アクセラレータ１２２、１２４、および１２６をホスト・システム１０２、１０４、および１０６に割り当てる。この実施形態では、初期割り当て構成データ１４０は、その特定のシステムにどのアクセラレータが割り振られているかをホスト・システムに通知する、事前定義アクセラレータ割り振りである。図２の例に示されているように、アクセラレータＷ１２２は初めにホスト・システムＡ１０２に割り当てられ、アクセラレータＸ１２４は初めにホスト・システムＢ１０４に割り当てられ、アクセラレータＹはホスト・システムＮ１０６に割り当てられる。
【００２０】
割り当てマネージャ１３０によってアクセラレータがホスト・システムに割り当てられた後、ホスト・システムはその作業負荷の一部を割り当てられたアクセラレータに送信することができる。この実施形態では、割り当てマネージャのジョブ・モニター１３２は、それぞれの作業負荷１０８、１１０、１１２内のそれぞれのジョブ１１４、１１６、および１１８をモニターして、ジョブ統計１４２を決定する。ジョブ・モニター１３２は、アクセラレータにおけるジョブの実行時間、ジョブによって使用されるアクセラレータの数、アクセラレータによって実行される前にアクセラレータのキュー内にジョブが保持されていた長さなどの統計をモニターする。この情報はジョブ統計情報１４２として保管される。ジョブ選別器１３４が統計情報を使用してジョブをサービス・クラスに割り当てる実施形態では、ジョブ選別器１３４はジョブ統計情報１４２を使用して、ジョブに関連付けるサービス・クラスを決定する。一例では、あるジョブが完了するのに３秒を要し、２つのアクセラレータを使用した場合、ジョブ選別器１３４は、実質的にこの統計に一致するサービス・クラスをこのジョブに関連付け、この分類をジョブ分類情報１４４に保管する。
【００２１】
サービス・クラスの優先順位は、事前定義することができるが、事前定義する必要があるわけではない。一例では、ジョブ・モニター１３２は、各ジョブが実行されるのを待ってアクセラレータ・キュー内に在留する時間、ジョブがアクセラレータによって完了されるのに要する時間、ジョブが使用するアクセラレータの数などのパラメータをモニターする。次に、ジョブ・モニター１３２は、この統計情報に基づいてジョブに関連するサービス・クラスの平均を決定する。次に、割り当てマネージャは、所与のサービス・クラスのジョブに関連する平均に基づいて、その所与のサービス・クラスについて、完了目標、キュー時間平均などを決定することができる。一例では、所与のサービス・クラスのすべてのジョブがアクセラレータによって完了される平均時間が５秒であった場合、これはそのサービス・クラスのパフォーマンス目標として設定することができる。代替一実施形態では、ホスト・システムのそれぞれは、割り当てマネージャ１３０にこれらの動作を実行させる代わりに、それ自体のジョブをモニターし、統計情報を記録する。次に、この情報は、必要なときに割り当てマネージャ１３０に渡される。割り当てマネージャ１３０は、サービス・クラスに関連する情報（たとえば、目標および優先順位）を使用して、アクセラレータをホスト・システムに動的に割り当てる方法を決定する。
【００２２】
ジョブがサービス・クラスに割り当てられた後、各ホスト・システムがそれに割り当てられたアクセラレータ（複数も可）にジョブを送信するときに、ジョブ・モニター１３２は各ジョブをモニターして、そのサービス・クラスがそれぞれの目標を満足していることを保証する。たとえば、サービス・クラスの各ジョブについて、実行中のジョブからの統計データ（たとえば、ジョブ統計情報１４２）が収集され、集約される。この集約されたパフォーマンス・データにより、そのサービス・クラスに割り当てられるすべてのジョブの平均として、サービス・クラスのパフォーマンスを決定することができる。ジョブ・モニター１３２はサービス・クラスの目標（複数も可）を識別する。一例では、これらの目標は、アクセラレータ・キュー時間、実行時間などに関連する。集約された統計情報に基づいて、割り当てマネージャ１３０は、サービス・クラスがその目標（複数も可）を逸しているかどうかを判断する。たとえば、あるサービス・クラスは、そのサービス・クラス内のジョブの平均応答時間が１０秒でなければならないことを指定する目標を有する。そのサービス・クラス内の３つのジョブが５秒、１０秒、および３０秒の応答時間を有する場合、平均応答時間は１５秒であり、そのサービス・クラスは目標を満足し損なっている。
【００２３】
このような情報に基づいて、割り当てマネージャ１３０は、その目標を達成し損なったサービス・クラスのジョブを発行したホスト・システムに関するアクセラレータ割り当て構成を動的に変更すべきかどうかを判断する。
【００２４】
この実施形態では、割り当てマネージャ１３０は、追加のアクセラレータ・リソースを追加すべきかどうかを判断するときにサービス・クラスの優先順位を決定する。たとえば、各サービス・クラスは（したがって、そのジョブも）優先レベルを有する。サービス・クラスの優先レベルがしきい値を上回る場合、割り当てマネージャ１３０は、アクセラレータ・リソースの動的再割り当てを行うことを決定することができる。優先レベルが所与のしきい値を下回る場合、割り当てマネージャ１３０は、アクセラレータ・リソースの動的再割り当てがまったく必要ないと決定する。実施形態によっては、サービス・クラスが優先レベルを持っていないこともある。
【００２５】
所与のホストに追加のアクセラレータを動的に再割り当てするべきかどうかを判断するときに、割り当てマネージャ１３０は、そのホストに対するこの再割り当ての影響を判断する。割り当てマネージャ１３０は、サービス・クラスのジョブ（複数も可）に関連する統計情報１４２を使用して、追加のアクセラレータを追加することによりサービス・クラスに関連する目標が達成されることが保証されるかどうかを判断する。一例では、割り当てマネージャ１３０は、ホスト・システムの１つまたは複数のサービス・クラスのジョブをモニターして、そのサービス・クラス内の各ジョブに関するキュー時間、実行時間、平均時間などを識別し、この情報をそのジョブのサービス・クラスに集約する。この情報は、これらの統計に基づいて追加のアクセラレータを追加することの影響を推定するために使用される。
【００２６】
たとえば、割り当てマネージャ１３０は、サービス・クラスについて収集されたデータ（すなわち、アクセラレータのジョブの使用を示す、サービス・クラス内の各ジョブに関するキュー時間、実行時間、平均時間などのジョブ統計情報１４２）を使用し、図８に示されている模範的なグラフ８００などの各サービス・クラスに関するグラフを生成する。このグラフは、ホスト・システムに割り当てられたアクセラレータの数を示すＸ軸と、サービス・クラス内のジョブがアクセラレータに関するキュー内にある時間を示すＹ軸とを有する。この情報により、割り当てマネージャ１３０は、サービス・クラスに関するジョブがアクセラレータの使用を待っている長さと、ホスト・システムに割り当てられたアクセラレータの数との関係を学習することができる。図８に示されているものなどのキューイング・モデルから、割り当てマネージャ１３０は、アクセラレータの動的割り振りが実行された場合のサービス・クラスの平均応答時間に対する影響を予測することができる。より多くのアクセラレータがホスト・システムに追加される場合、ジョブがキュー内で待っている時間は減少する。ホスト・システムからアクセラレータが取り去られる場合、ジョブがキュー内で待っている時間は増加する。サービス・クラス内のジョブが平均してキュー上で待っている時間の変化は、サービス・クラスの平均応答時間に直接影響する。
【００２７】
他の実施形態では、割り当てマネージャ１３０の代わりに、ホスト・システム自体がこの推定を実行する。このような実施形態では、追加のアクセラレータが割り当てられることから利得が得られるとホスト・システムが判断した場合、ホスト・システムは割り当てマネージャ１３０から追加のアクセラレータ・リソースを要求する。
【００２８】
所与のホスト・システムに１つまたは複数の追加のアクセラレータを割り当てることから利得が得られると割り当てマネージャが判断した場合（または割り当てマネージャがホスト・システムから追加のアクセラレータ・リソースを求める要求を受信した場合）、割り当てマネージャ１３０は、所与のホスト・システムに追加のアクセラレータ・リソースを動的に再割り当てすることによる他のホスト・システムへの影響を判断する。一例では、１つまたは複数の追加のアクセラレータ・リソースを動的に再割り当てすることにより、（結果的に完了時間がより速くなるように）その目標を逸しているサービス・クラスに関する平均キュー待ち時間が減少すると割り当てマネージャ１３０（または所与のホスト・システム）が判断した場合、割り当てマネージャ１３０は、他のホスト・システムに対するこのアクセラレータ割り当ての影響を判断する。所与のホスト・システムに対する追加のアクセラレータ・リソースの動的再割り当ての結果、他のホスト・システムに現在割り当てられているアクセラレータ・リソースが所与のホスト・システムに動的に再割り当てされるので、他のホスト・システムに対する影響が存在する。この実施形態では、割り当てマネージャ１３０は、１つまたは複数のサービス・クラス／ホスト・システムに関連するグラフ８００を分析することにより、他のシステムからの１つまたは複数のアクセラレータ・リソースの割り振り解除がその作業負荷にどのように影響するかを推定する。割り当てマネージャ１３０は、グラフを分析し、ホスト・システムからアクセラレータ・リソースを割り振り解除することと、そのリソースを他のシステムに割り振ることが、これらのホスト・システムの両方にどのように影響するかを判断する。
【００２９】
ホスト・システムがそのジョブ／サービス・クラスについてそれ自体の統計情報を維持する実施形態では、割り当てマネージャ１３０はホスト照会モジュール１３６を介して他のホスト・システムに照会する。この照会は、他のホスト・システムのそれぞれからの影響推定を要求する。あるホスト・システムが割り当てマネージャからこの照会を受信すると、そのホスト・システムは影響推定を実行する。一例では、それぞれのホスト・システムはそのジョブに関連するその統計情報１４２を分析し、１つまたは複数のアクセラレータ・リソースの割り振り解除がその作業負荷にどのように影響するかを判断する。統計情報は、キュー待ち時間、実行時間、使用されるアクセラレータの数などを含むことができる。各ホスト・システムは、そのサービス・クラスのそれぞれに関連する統計情報またはグラフを分析することにより、１つまたは複数のアクセラレータ・リソースの割り振り解除がその作業負荷にどのように影響するかを推定することができる。次に、他のホスト・システムはその推定を割り当てマネージャに送信する。
【００３０】
それぞれの推定は、割り振り解除および再割り当てがシステムに否定的な影響を及ぼすかまたは中立的な影響を及ぼすかを示し、その影響を定量化することもできる。一例では、あるホスト・システムに関する影響推定は、キュー待ち時間が５％、５秒など増加すること、完了時間が同じままであるかまたは所与の量だけ増加すること、ならびにジョブがその目標を満足し損なう確率が所与の量だけ増加することを示す。
【００３１】
次に、割り当てマネージャ１３０は、追加のアクセラレータ・リソースを所与のホスト・システムに追加することの影響と、他のホスト・システムからアクセラレータ・リソースを割り振り解除することの影響とを比較する。所与のシステムに対する肯定的な影響が他のシステムに対する否定的な影響より大きい場合、割り当てマネージャ１３０は、他のホスト・システムに現在割り当てられている１つまたは複数のアクセラレータ・リソースを所与のホスト・システムに動的に再割り当てする。
【００３２】
この実施形態では、この比較プロセスは様々な割り当てしきい値を使用する。一例では、所与のホスト・システムに関連する肯定的な影響が第１のしきい値を上回り（キュー待ち時間の減少が３秒を超えることまたはジョブ目標が満足される確率が８０％より高いことなど）、他のホスト・システムに対する否定的な影響が第２のしきい値を下回る（キュー待ち時間が３秒だけ増加することなど）と割り当てマネージャ１３０が判断した場合、割り当てマネージャ１３０は、アクセラレータ・リソースを所与のホスト・システムに動的に再割り当てする。
【００３３】
また、割り当てマネージャ１３０は、他のホスト・システムの影響推定同士を比較して、そこからアクセラレータ・リソースを取るホスト・システムを決定することができる。一例では、２つの他のホスト・システムが存在し、第１のホスト・システムに関する割り振り解除の影響が第２のホスト・システムに関するものより大きい場合、割り当てマネージャ１３０は、所与のホスト・システムに再割り当てするために、第２のホスト・システムに関連するアクセラレータ・リソースを選択する。これにより、他のホスト・システムに対する再割り当ての否定的な影響が低減される。
【００３４】
一実施形態では、動的に再割り当てするためにアクセラレータ・リソースを識別した後、割り当てマネージャ１３０は、これらのアクセラレータ・リソースに現在割り当てられているホスト・システムに対し、これらのアクセラレータ・リソースに新しいジョブを送信するのを停止するよう通知する。すべての既存のジョブを完了した後、割り当てマネージャ１３０は現行ホスト・システムからアクセラレータ・リソースを割り振り解除し、そのホスト・システムはこの割り振り解除を反映するようにその割り当て情報を更新する。次に、割り当てマネージャ１３０はこれらのアクセラレータ・リソースを所与のホスト・システムに割り当て、その後、このホスト・システムはこの割り当てを反映するようにその割り当て情報を更新する。次に、所与のホスト・システムは、その作業負荷から新たに割り当てられたアクセラレータ・リソースにジョブを発行し始める。
【００３５】
図３は、図２に示されているように元々ホスト・システムＢ１０４に割り当てられていたアクセラレータＸ１２４がホスト・システムＡ１０２に動的に再割り当てされた例を示している。ここで、ホスト・システムＡ１０２は、その作業負荷からその初期アクセラレータであるアクセラレータＷ１２２ならびに新たに割り当てられたアクセラレータであるアクセラレータＸ１２４にジョブを発行することができる。
【００３６】
したがって、本発明は、アクセラレータ・リソースのプールを効率的かつ効果的に管理する。これらのアクセラレータ・リソースは初めに様々なホスト・システムに割り当てられる。次に、これらのシステムのそれぞれで実行されるジョブのパフォーマンスおよび優先順位などの要因に基づいて、これらのアクセラレータ・リソースを他のホスト・システムに再割り当てすることができる。
【００３７】
動作流れ図
図４、図５、および図６は、本発明の一実施形態によりアクセラレータ・リソースを動的に管理するためのプロセスを示す動作流れ図である。図４の動作流れ図は、ステップ４０２から始まり、ステップ４０４に直接流れる。割り当てマネージャ１３０は、ステップ４０４で、初めにアクセラレータ・リソースを複数のホスト・システム１０２、１０４、および１０６に割り当てる。割り当てマネージャは、ステップ４０６で、各ホスト・システム１０２、１０４、および１０６の各ジョブ１１４、１１６、および１１８にサービス・クラスを割り当てる。
【００３８】
割り当てマネージャは、ステップ４０８で、第１のホスト・システム上の各ジョブ１１４に関連する統計情報１４２を収集し、この統計情報を各ジョブのサービス・クラスに集約する。各サービス・クラスに集約された統計情報に基づいて、割り当てマネージャ１３０は、ステップ４１０で、各サービス・クラスが第１のホスト・システム上でその目標をどの程度十分に達成しているかを判断する。割り当てマネージャ１３０は、ステップ４１２で、アクセラレータ・リソースを追加することによって最近支援されていないサービス・クラスがその目標を逸しているかどうかを判断する。この判断が否定である場合、割り当てマネージャ１３０は、ステップ４１４で、次のモニター間隔を待つ。次のモニター間隔が始まると、割り当てマネージャ１３０はステップ４０８に戻る。ステップ４１２の判断の結果が肯定である場合、割り当てマネージャ１３０は、ステップ４１６で、その目標を逸している最も重要なサービス・クラスを選択する。上述の通り、「重要性」は、優先レベル、追加のアクセラレータ・リソースを追加することにより最も多くの恩恵を得ることになるサービス・クラスなどによって測定することができる。選択されたサービス・クラスは受信側サービス・クラスと呼ばれる。この時点で制御は図５の入口点Ａ（５０２）に流れる。
【００３９】
ステップ５０４では、割り当てマネージャ１３０は受信側サービス・クラスに関する統計情報を分析する。割り当てマネージャ１３０は、ステップ５０６で、この分析に基づいて、１つまたは複数のアクセラレータ・リソースを第１のホスト・システムに追加することによる受信側サービス・クラスのパフォーマンスに対する影響を判断する。割り当てマネージャ１３０は、ステップ５０８で、リソースの再割り振りを正当化するためにこの影響が十分な値を提供するかどうか（たとえば、所与のホスト・システムの利得が、リソースが割り振り解除されたシステムに対する損失より大きいかどうか）を判断する。米国特許第５４７３７７３号では、受信側クラス値についてより詳細に論じている。この判断の結果が否定である場合、割り当てマネージャ１３０は、ステップ５０９で、リソースを再割り振りしないことを決定し、制御は入口点Ｂでステップ４１２に戻り、他のサービス・クラスがその目標を逸しているかどうかを判断する。
【００４０】
ステップ５０８の判断の結果が肯定である場合、割り当てマネージャ１３０は、ステップ５１０で、第２のホスト・システムに関連する統計情報１４２を分析する。割り当てマネージャ１３０は、ステップ５１２で、この統計情報１４２に基づいて、第２のホスト・システムから１つまたは複数のアクセラレータ・リソースを割り振り解除することが第２のホスト・システム上のジョブを有するサービス・クラスに対して及ぼす影響を判断する。割り当てマネージャ１３０は、ステップ５１４で、これらのリソースを第１のホスト・システムに追加することが獲得する値と、これらのリソースの再割り当てにより第２のホスト・システムから取り去られる値を比較する。
【００４１】
割り当てマネージャ１３０は、ステップ５１６で、獲得した値が喪失した値より大きいかどうかを判断する。この判断の結果が否定である場合、制御の流れは入口点Ｂでステップ４１２に戻り、他のサービス・クラスがその目標を逸しているかどうかを判断する。この判断の結果が肯定である場合、制御は図６の入口点Ｃ（６０２）に流れる。割り当てマネージャ１３０は、ステップ６０４で、初めに第２のホスト・システムに割り当てられた１つまたは複数のアクセラレータ・リソースにジョブが新しい要求を発行するのを停止するよう、第２のホスト・システムに指示する。割り当てマネージャ１３０は、ステップ６０６で、これらのアクセラレータ・リソースで現行作業が完了したかどうかを判断する。この判断の結果が否定である場合、割り当てマネージャ１３０は、その作業が完了したかどうかを判断し続ける。この判断の結果が肯定である場合、割り当てマネージャは、ステップ６０８で、１つまたは複数のアクセラレータ・リソースを第１のホスト・システムに動的に再割り当てする。第１のホスト・システム上のジョブは、ステップ６１０で、初めに割り当てられたアクセラレータ・リソースと新たに割り当てられたアクセラレータ・リソースの両方を使用する。制御の流れは入口点Ｄでステップ４１４に戻り、次のモニター間隔を待つ。
【００４２】
情報処理システム
図７は、本発明の諸実施形態において使用するための模範的な情報処理システムを示すブロック図である。適切に構成された処理システムであれば、どのような処理システムでも同様に本発明の他の諸実施形態で情報処理システムとして使用することができる（たとえば、パーソナル・コンピュータ、ワークステーションなど）。情報処理システムはコンピュータ７０２を含む。
【００４３】
コンピュータ７０２は、システム・バス７１２を介してメイン・メモリ７０６に通信可能に結合された１つまたは複数のプロセッサ７０４を含む。
【００４４】
また、コンピュータ７０２は、大容量記憶インターフェース７０８と、ネットワーク・アダプタ・ハードウェア７１０も含む。大容量記憶インターフェース７０８は大容量記憶装置７１４を情報処理システムに接続するために使用される。データ記憶装置の特定のタイプの１つは光学式ドライブ・ディスクであり、これはＣＤ７１６またはＤＶＤなどのコンピュータ可読記憶媒体にデータを保管し、そこからデータを読み取るために使用することができる。もう１つのタイプのデータ記憶装置は、たとえば、ＪＦＳタイプ・ファイル・システム動作をサポートするように構成されたハード・ディスクである。この実施形態では、メイン・メモリ７０６はランダム・アクセス・メモリ（「ＲＡＭ」）などの揮発性メモリである。この実施形態のメイン・メモリ７０６は、割り当てマネージャ、そのコンポーネント、ジョブ統計、ジョブ分類情報、およびサービス・クラス情報を含む。
【００４５】
ネットワーク・アダプタ・ハードウェア７１０は、他のコンピュータとのデータ通信を実現する相互接続ファブリックへのインターフェースを提供する。本発明の諸実施形態は、現代のアナログあるいはデジタルまたはその両方の技法を含むかもしくは将来のネットワーキング・メカニズムを介する任意のデータ通信接続とともに機能するように適合させることができる。
【００４６】
完全に機能的なコンピュータ・システムに関連して本発明の模範的な諸実施形態について説明してきたが、他の諸実施形態は、ＣＤおよびそれと同等のもの、フレキシブル・ディスク、またはその他の形式の記録可能媒体を介して、あるいは任意のタイプの電子伝送メカニズムを介して、プログラム（program product）として配布することができる。
【００４７】
本発明の好ましい実施形態であると現在考えられているものが例示し説明されているが、当業者であれば、本発明の真の範囲を逸脱せずに、様々なその他の変更を行うことができ、同等のものを代用することができることを理解するであろう。
【図１】
2013515991.tif 000003
【図２】
2013515991.tif 000004
【図３】
2013515991.tif 000005
【図４】
2013515991.tif 000006
【図５】
2013515991.tif 000007
【図６】
2013515991.tif 000008
【図７】
2013515991.tif 000009
【図８】
2013515991.tif 000010
【国際調査報告】
2013515991.tif 000011
2013515991.tif 000012
2013515991.tif 000013