(57)【要約】【課題】対象としている処理内の結合処理を特定しないで計算資源を手動で割り当てる場合に比べて、計算資源の利用効率低下を防ぐことができる情報処理装置を提供する。【解決手段】情報処理装置の抽出手段は、異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出し、特定手段は、前記結合処理を用いて、前記処理の隘路を特定し、割当手段は、前記隘路となる処理列に、前記計算資源のうち高速な計算資源を割り当て、前記処理列として、処理単位が直列に連結した処理単位群又は結合処理を含む。【選択図】図１
2020091558.tif 000002
【特許請求の範囲】
【請求項１】
異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出する抽出手段と、
前記結合処理を用いて、前記処理の隘路を特定する特定手段と、
前記隘路となる処理列に、前記計算資源のうち高速な計算資源を割り当てる割当手段
を有し、
前記処理列として、処理単位が直列に連結した処理単位群又は結合処理を含む、
情報処理装置。
【請求項２】
前記特定手段は、前記結合処理に結合している前記処理列のうち、処理時間の長い処理列を隘路として特定する、
請求項１に記載の情報処理装置。
【請求項３】
前記抽出手段は、前記結合処理と処理列における終了時間で降順の並び替えを行う、
請求項１に記載の情報処理装置。
【請求項４】
前記特定手段は、前記並び替えの結果を用いて隘路を特定する、
請求項３に記載の情報処理装置。
【請求項５】
前記特定手段は、前記並び替え結果の１位である結合処理を、最初の隘路として特定する、
請求項４に記載の情報処理装置。
【請求項６】
前記並び替え結果の１位である結合処理に結合する処理列を抽出し、処理時間の長い処理列を隘路として特定する、
請求項５に記載の情報処理装置。
【請求項７】
前記処理時間が同じである場合は、終了時間の遅い処理列を隘路として特定する、
請求項２から６のいずれか１項に記載の情報処理装置。
【請求項８】
前記処理を、試験的環境で実行した際の処理時間又は終了時間を記録する記録手段
をさらに有し、
前記処理時間又は前記終了時間は、前記記録手段に記録された処理時間又は終了時間を用いる、
請求項２から７のいずれか１項に記載の情報処理装置。
【請求項９】
前記試験的環境は、前記処理内の処理単位に同じ計算資源を割り当てたものであり、
前記処理時間又は前記終了時間は、前記処理内の処理単位についての該試験的環境における処理時間又は終了時間である、
請求項８に記載の情報処理装置。
【請求項１０】
コンピュータを、
異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出する抽出手段と、
前記結合処理を用いて、前記処理の隘路を特定する特定手段と、
前記隘路となる処理列に、前記計算資源のうち高速な計算資源を割り当てる割当手段
として機能させ、
前記処理列として、処理単位が直列に連結した処理単位群又は結合処理を含む、
情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、ネットワークおよびサーバの稼動状況に基づき、分散アプリケーションにおける適切なリクエスト転送を実現することを課題とし、複数のデータ転送装置と、それらに接続される複数のサーバと、を備える分散情報処理システムであって、前記データ転送装置は、前記複数のサーバが実行するサービスプログラムの依存関係を示す情報と、前記各サービスプログラムの実行に要するリソース量を示す情報と、前記各サービスプログラムを実行するパケットの送信先として指定できるアドレスを示す情報と、前記複数のサーバの状態を示す情報と、を保持し、前記情報に基づいて、要求されたサービスを提供するために実行する必要がある全てのサービスプログラムを特定し、サービスを要求するパケットの送信先の複数の組み合わせを特定し、処理が最適化される組み合わせを選択し、前記選択に従って、パケットの送信先を書き換えて送信することが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１２−０８９０１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
異なる複数の計算資源を用いて処理を実行する場合、処理と計算資源の関係を静的に手動で定義登録することが行われている。そのため、例えば、処理を変更したり、新しい処理を加えたりした場合、計算資源の利用効率低下を招くおそれがある。
本発明は、対象としている処理内の結合処理を特定しないで計算資源を手動で割り当てる場合に比べて、計算資源の利用効率低下を防ぐことができる情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出する抽出手段と、前記結合処理を用いて、前記処理の隘路を特定する特定手段と、前記隘路となる処理列に、前記計算資源のうち高速な計算資源を割り当てる割当手段を有し、前記処理列として、処理単位が直列に連結した処理単位群又は結合処理を含む、情報処理装置である。
【０００６】
請求項２の発明は、前記特定手段は、前記結合処理に結合している前記処理列のうち、処理時間の長い処理列を隘路として特定する、請求項１に記載の情報処理装置である。
【０００７】
請求項３の発明は、前記抽出手段は、前記結合処理と処理列における終了時間で降順の並び替えを行う、請求項１に記載の情報処理装置である。
【０００８】
請求項４の発明は、前記特定手段は、前記並び替えの結果を用いて隘路を特定する、請求項３に記載の情報処理装置である。
【０００９】
請求項５の発明は、前記特定手段は、前記並び替え結果の１位である結合処理を、最初の隘路として特定する、請求項４に記載の情報処理装置である。
【００１０】
請求項６の発明は、前記並び替え結果の１位である結合処理に結合する処理列を抽出し、処理時間の長い処理列を隘路として特定する、請求項５に記載の情報処理装置である。
【００１１】
請求項７の発明は、前記処理時間が同じである場合は、終了時間の遅い処理列を隘路として特定する、請求項２から６のいずれか１項に記載の情報処理装置である。
【００１２】
請求項８の発明は、前記処理を、試験的環境で実行した際の処理時間又は終了時間を記録する記録手段をさらに有し、前記処理時間又は前記終了時間は、前記記録手段に記録された処理時間又は終了時間を用いる、請求項２から７のいずれか１項に記載の情報処理装置である。
【００１３】
請求項９の発明は、前記試験的環境は、前記処理内の処理単位に同じ計算資源を割り当てたものであり、前記処理時間又は前記終了時間は、前記処理内の処理単位についての該試験的環境における処理時間又は終了時間である、請求項８に記載の情報処理装置である。
【００１４】
請求項１０の発明は、コンピュータを、異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出する抽出手段と、前記結合処理を用いて、前記処理の隘路を特定する特定手段と、前記隘路となる処理列に、前記計算資源のうち高速な計算資源を割り当てる割当手段として機能させ、前記処理列として、処理単位が直列に連結した処理単位群又は結合処理を含む、情報処理プログラムである。
【発明の効果】
【００１５】
請求項１の情報処理装置によれば、対象としている処理内の結合処理を特定しないで計算資源を手動で割り当てる場合に比べて、計算資源の利用効率低下を防ぐことができる。
【００１６】
請求項２の情報処理装置によれば、隘路として、結合処理に結合している処理列のうち、処理時間の長い処理列を用いることができる。
【００１７】
請求項３の情報処理装置によれば、結合処理と処理列における終了時間での降順の並び替えを用いて、隘路を抽出することができる。
【００１８】
請求項４の情報処理装置によれば、隘路を抽出するのに、並び替え結果を用いることができる。
【００１９】
請求項５の情報処理装置によれば、最初の隘路として、並び替え結果の１位である結合処理を抽出することができる。
【００２０】
請求項６の情報処理装置によれば、隘路として、並び替え結果の１位である結合処理に結合する処理列のうち、処理時間の長い処理列を抽出することができる。
【００２１】
請求項７の情報処理装置によれば、隘路として、処理時間が同じである場合は、終了時間の遅い処理列を抽出することができる。
【００２２】
請求項８の情報処理装置によれば、試験的環境で実行した際の処理時間又は終了時間を用いることができる。
【００２３】
請求項９の情報処理装置によれば、試験的環境として、処理内の処理単位に同じ計算資源を割り当てたものを用いることができる。
【００２４】
請求項１０の情報処理プログラムによれば、対象としている処理内の結合処理を特定しないで計算資源を手動で割り当てる場合に比べて、計算資源の利用効率低下を防ぐことができる。
【図面の簡単な説明】
【００２５】
【図１】本実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】本実施の形態よる処理例を示すフローチャートである。
【図４】本実施の形態による処理対象となるアプリケーショングラフの例を示す説明図である。
【図５】結合処理テーブルのデータ構造例を示す説明図である。
【図６】パス、リンク、結合処理の例を示す説明図である。
【図７】本実施の形態の処理例を示す説明図である。
【図８】結合処理テーブル（ソート結果）のデータ構造例を示す説明図である。
【図９】本実施の形態よる処理例を示すフローチャートである。
【図１０】結合処理テーブルのデータ構造例を示す説明図である。
【図１１】本実施の形態の処理例を示す説明図である。
【図１２】本実施の形態の処理例を示す説明図である。
【図１３】本実施の形態の処理例を示す説明図である。
【図１４】本実施の形態の処理例を示す説明図である。
【図１５】本実施の形態の処理例を示す説明図である。
【図１６】本実施の形態の処理例を示す説明図である。
【図１７】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００２６】
以下、図面に基づき本発明を実現するにあたっての好適な一実施の形態の例を説明する。
図１は、本実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係、ログイン等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態にしたがって、又はそれまでの状況・状態にしたがって定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。また、「Ａ、Ｂ、Ｃ」等のように事物を列挙した場合は、断りがない限り例示列挙であり、その１つのみを選んでいる場合（例えば、Ａのみ）を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスクドライブ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００２７】
本実施の形態である情報処理装置１００は、計算資源の再配置（リソースの割り当て）機能を有しており、図１の例に示すように、処理受付モジュール１０５、テスト実行モジュール１１０、記録モジュール１１５、計算資源情報取得モジュール１２０、解析・割当モジュール１２５を有している。
本実施の形態では、異なる複数の計算資源を用いて処理する場合において、その計算資源の割り当てを行う。ここで「異なる複数の計算資源」として、少なくとも２つの計算資源は異なるものであればよく、同じ計算資源が含まれていてもよい。異なる計算資源として、主に性能（その中でも特に計算速度）が異なっていればよい。計算資源（ｃｏｍｐｕｔａｔｉｏｎａｌ  ｒｅｓｏｕｒｃｅ）として、例えば、プロセッサ、記憶手段（メモリ、ハードディスク等）、通信回線、入出力装置、処理装置（計算機自体）等がある。
【００２８】
従来、複数のサービス群を、単一又は異種の、複数の計算資源において実行する場合に主として次の４つのケースが考えられる。（１）事前に計画された処理内容を事前に決められた計算資源で処理する場合、（２）事前に計画された処理内容を処理を求める時点で利用可能な計算資源で処理する場合、（３）任意の処理内容を事前に決められた計算資源で処理する場合、（４）任意の処理内容を処理を求める時点で利用可能な計算資源で処理する場合。
前記（２）、（３）、（４）の各ケースにおいて、実行環境における処理の負荷、処理データ量の違い、及び、処理間の順序依存性を考慮しない計算資源の配置を原因として、サービスを構成する個々の計算資源の利用効率が低くなる。このため、計算資源が不足する場合は常に計算資源を追加せねばならず、利用コスト、運用管理コスト等が増大することとなる。
本実施の形態は、前記（２）、（３）、（４）のケースに用いることができる。つまり、本実施の形態は、異種である、複数の計算資源を利用できる実行環境において、実行すべき処理（サービス）に対応して計算資源を割り当てる。特に、計算資源の利用効率を高めることによって、計算資源の追加をしなくても処理時間の短縮を図ることができる。
【００２９】
処理受付モジュール１０５は、テスト実行モジュール１１０と接続されている。処理受付モジュール１０５は、対象となる処理を受け取る。ここでの処理は、計算機資源を用いて実行されるプログラム（ソフトウェア）であって、例えば、アプリケーションプログラム等がある。なお、本実施の形態において対象となる「処理」（名詞としての処理であり、動詞としての処理は含まない）は、全体の処理をいい、複数の処理単位から構成されており、例えば、アプリケーションプログラム等が該当する。つまり、「処理」は、最小の構成単位としての処理単位を含み、処理列（以下、パスともいう）、結合処理等を構成要素として含む。処理単位は、例えば、プログラムモジュールと呼ばれる機能ごとのひとまとまりの機能を実現するものが該当する。また、「処理列」は、処理単位が直列に連結した処理単位群（１つ以上の処理単位）であり、処理単位の処理順が定まっているものである。そして、処理列には、その処理単位群の他に、結合処理を含む。また、結合処理は、処理単位の一種である。
また、情報処理装置１００が対象とする処理は、少なくとも結合処理を１つ以上含むものである。
【００３０】
テスト実行モジュール１１０は、処理受付モジュール１０５、記録モジュール１１５と接続されている。テスト実行モジュール１１０は、処理受付モジュール１０５によって受け付けられた処理を、試験的環境で実行し、その処理時間又は終了時間を計測する。なお、ここでの「処理時間又は終了時間」は、対象となっている処理を構成している各処理単位又は各処理列を実行した場合に、その各処理単位又は各処理列の実行に要した時間が「処理時間」であり、又は、その各処理単位又は各処理列の実行が完了した時間（時刻）が「終了時間」である。
また、ここでの「試験的環境」として、処理内の処理単位に同じ計算資源を割り当てたものとしてもよい。そして、並列可能な処理列に計算資源を割り当てる。つまり、計算資源は無尽蔵にあるとしている。また、その試験的環境は、現実に存在する試験的環境であってもよいし、仮想的なものであってもよいし、シミュレーションで行うものであってもよい。例えば、対象となっている処理内の各処理単位における計算量を算出し、予め定められた計算資源において各処理単位又は各処理列を実行した場合における処理時間又は終了時間を算出するようにしてもよい。
【００３１】
記録モジュール１１５は、テスト実行モジュール１１０、解析・割当モジュール１２５と接続されている。記録モジュール１１５は、テスト実行モジュール１１０によって試験的環境で実行した際の各処理単位又は各処理列の処理時間又は終了時間を記録する。そして、解析・割当モジュール１２５内のモジュール（特に、特定モジュール１３５）は、記録モジュール１１５に記録された処理時間又は終了時間を用いるようにしてもよい。そして、解析・割当モジュール１２５内のモジュールが用いる「処理時間又は終了時間」は、処理受付モジュール１０５によって受け付けられた処理内の処理単位についての試験的環境における処理時間又は終了時間としてもよい。
【００３２】
計算資源情報取得モジュール１２０は、解析・割当モジュール１２５と接続されている。計算資源情報取得モジュール１２０は、割り当て可能な（つまり、使用可能な）計算資源に関する情報を取得する。例えば、各計算資源に問い合わせるようにしてもよいし、予め定められた値としてもよい。計算資源に関する情報として、例えば、使用可能であるか否か、計算速度、メモリ容量、通信速度等がある。割当モジュール１４０は、計算資源情報取得モジュール１２０によって取得された計算資源に関する情報を用いて、高速な計算資源等を抽出する。
【００３３】
解析・割当モジュール１２５は、抽出モジュール１３０、特定モジュール１３５、割当モジュール１４０を有しており、記録モジュール１１５、計算資源情報取得モジュール１２０と接続されている。解析・割当モジュール１２５は、対象となっている処理に対して、異なる複数の計算資源を割り当てる。
抽出モジュール１３０は、異なる複数の計算資源で実行される処理から、複数の処理列の終了を待って実行される結合処理を抽出する。抽出すべき結合処理については、図６の例を用いて後述する。
また、抽出モジュール１３０は、結合処理と処理列における終了時間で降順の並び替え（いわゆるソート）を行うようにしてもよい。つまり、終了時間が遅いものを抽出するために行う。
【００３４】
特定モジュール１３５は、抽出モジュール１３０によって抽出された結合処理を用いて、処理の隘路を特定する。ここで「隘路」とは、一般的にボトルネックといわれるものであり、対象となっている処理の処理速度（又は、終了に要する時間）を律する処理列である。
また、特定モジュール１３５は、結合処理に結合している処理列のうち、処理時間の長い処理列を隘路として特定するようにしてもよい。ここで「結合処理に結合している処理列」とは、具体的には、結合処理の前方向にある複数の処理列（結合処理よりも前に処理される複数の処理列）である。つまり、その複数の処理列が終了した後に、結合処理が行われる。
また、特定モジュール１３５は、抽出モジュール１３０による並び替えの結果を用いて隘路を特定するようにしてもよい。具体的には、特定モジュール１３５は、抽出モジュール１３０による並び替え結果の１位である結合処理を、最初の隘路として特定するようにしてもよい。より具体的には、並び替え結果の１位である結合処理に結合する処理列を抽出し、処理時間の長い処理列を隘路として特定するようにしてもよい。
また、特定モジュール１３５は、処理時間が同じである場合は、終了時間の遅い処理列を隘路として特定するようにしてもよい。
【００３５】
割当モジュール１４０は、特定モジュール１３５によって特定された隘路となる処理列に、計算資源のうち高速な計算資源を割り当てる。ここで「高速な計算資源」は、割り当て可能な計算資源のなかにおいての高速であればよい。
【００３６】
図２は、本実施の形態を利用したシステム構成例を示す説明図である。
情報処理装置１００Ａ、計算資源装置２１０Ａ、計算資源装置２１０Ｂ、計算資源装置２１０Ｃ、ユーザー端末２５０は、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよいし、専用の通信回線（高速通信回線）であってもよい。また、情報処理装置１００Ａによる機能は、クラウドサービスとして実現してもよい。
計算資源装置２１０は、１つ以上の計算資源を有している。つまり、計算資源装置２１０単独で１つの計算資源としてもよいし、計算資源装置２１０内に複数の計算資源があるようにしてもよい。また、これらの計算資源は同一の性能を有しているものだけでなく、少なくとも、異なる性能を有している計算資源がある。したがって、どの計算資源で実行するかによって、対象となる処理の終了時間が異なることになる。一般的に、早く終了することが望ましい。
また、情報処理装置１００Ｃを有している計算資源装置２１０Ｃのように、計算資源装置２１０自身が情報処理装置１００を有しているようにしてもよい。
例えば、ユーザー端末２５０のユーザーの操作にしたがって、あるアプリケーション（処理の一例）の実行を、情報処理装置１００に依頼する。情報処理装置１００は、そのアプリケーションを実行するのに、処理列毎に適した計算資源（計算資源装置２１０）を割り当てる。もちろんのことながら、性能の異なる計算資源が割り当てられることがある。そして、それらの複数の計算資源での処理結果を、情報処理装置１００に返信する。
【００３７】
図３は、本実施の形態による処理例を示すフローチャートである。
ステップＳ３０２では、テスト実行モジュール１１０が、実行時間を計測する。対象とする処理をテスト実行することで処理の流れを計測／記録する。具体的には、逐次処理時間、処理待ち時間の計測を行う。
ステップＳ３０４では、抽出モジュール１３０が、抽出処理を行う。処理内容を解析することで、処理列の結合点（結合処理）を探索する。各結合点に接続するパス（処理列）の実行時間を抽出したうえでソートを行う。
ステップＳ３０６では、特定モジュール１３５、割当モジュール１４０が、解析処理／再割当を行う。パス解析を行って、処理時間が最長のパスを高速な計算資源により実行することで、全体の処理時間を短縮する。ステップＳ３０６の詳細な処理については、図９の例に示すフローチャートを用いて後述する。
【００３８】
図４は、本実施の形態による処理対象となる処理のアプリケーショングラフの例を示す説明図である。処理受付モジュール１０５が受け付ける処理の一例である。なお、アプリケーショングラフは、処理内の処理単位の関係を示したものである。
図４において、小文字のアルファベットを囲む丸印は、処理単位（Ｍｉｃｒｏ  Ｓｅｒｖｉｃｅ  Ｍｏｄｕｌｅ）に該当する。そして、それらの処理単位を結ぶ矢印は、処理順序（Ｐｒｏｃｅｓｓ  Ｆｌｏｗ）を示している。例えば、図４では処理単位（ａ）４１２の次に処理単位（ｂ）４１４を実行することを示している。また、角丸四角で囲まれた処理群は、処理列（パス）の一例である。例えば、図４では処理単位（ａ）４１２、処理単位（ｂ）４１４、処理単位（ｃ）４１６、処理単位（ｄ）４１８を囲んでいるパス（Ａ）４１０が該当する。そして、処理単位、パスの上部に記載されている数値（Ｐｒｏｃｅｓｓｉｎｇ  Ｔｙｐｅ）は、その処理単位又はパスを実行するのに必要な処理時間を示している。なお、この数値は、テスト実行モジュール１１０によってテスト的に実行した場合の計測値であり、予め定められた計算資源を一律に適用した場合の数値である。したがって、その処理単位、パスにおける計算量として解釈してもよい。
なお、図４の例において、各処理単位の実行順序は変更できないものとする。また、パス内の処理群は不可分の単位とする。もちろんのことながら、各処理単位、各パスを実行する計算資源は変更可能である。
【００３９】
アプリケーショングラフは、具体的には以下の通りである。
処理単位（ａ）４１２、処理単位（ｂ）４１４、処理単位（ｃ）４１６、処理単位（ｄ）４１８の順に実行し、これらをパス（Ａ）４１０とする。
処理単位（ｅ）４２２、処理単位（ｆ）４２４の順に実行し、これらをパス（Ｂ）４２０とする。
処理単位（ｈ）４３２、処理単位（ｉ）４３４の順に実行し、これらをパス（Ｃ）４３０とする。
処理単位（ｊ）４４２、処理単位（ｋ）４４４の順に実行し、これらをパス（Ｄ）４４０とする。
処理単位（ｌ）４５０は、パス（Ｃ）４３０とパス（Ｄ）４４０の処理終了を待って実行する。具体的には、処理単位（ｉ）４３４と処理単位（ｋ）４４４の処理結果を用いて、処理単位（ｌ）４５０を実行する。
処理単位（ｇ）４６０は、パス（Ｂ）４２０と処理単位（ｌ）４５０の処理終了を待って実行する。具体的には、処理単位（ｆ）４２４と処理単位（ｌ）４５０の処理結果を用いて、処理単位（ｇ）４６０を実行する。
処理単位（ｍ）４７０は、パス（Ａ）４１０と処理単位（ｇ）４６０の処理終了を待って実行する。具体的には、処理単位（ｄ）４１８と処理単位（ｇ）４６０の処理結果を用いて、処理単位（ｍ）４７０を実行する。
そして、最後に、処理単位（ｍ）４７０はＯｕｔｐｕｔ４９０を出力する。
【００４０】
図５は、結合処理テーブル５００のデータ構造例を示す説明図である。結合処理テーブル５００は、図４の例に示したアプリケーショングラフを表したものである。
結合処理テーブル５００は、パス欄５１０、開始欄５２０、終了欄５３０、パス長欄５４０、リンク欄５５０を有しており、リンク欄５５０は、ＩＮ欄５５２、ＯＵＴ欄５５４を有している。パス欄５１０は、パスを記憶している。前述したように、パス（処理列）には、結合処理を含む。つまり、パス（Ａ）４１０等の他に処理単位（ｌ）４５０等が含まれている。開始欄５２０は、そのパスの実行を開始する時刻を記憶している。終了欄５３０は、そのパスの実行が終了する時刻を記憶している。パス長欄５４０は、そのパスの処理時間（パス長）を記憶している。リンク欄５５０は、そのパスとリンクされている処理列を記憶している。ＩＮ欄５５２は、リンクのＩＮ（入力）側のパスを記憶している。ＯＵＴ欄５５４は、リンクのＯＵＴ（出力）側のパスを記憶している。
対象としているアプリケーショングラフから結合処理テーブル５００を生成するのに、既存の技術を用いればよい。例えば、Ｚｉｐｋｉｎ（Ｔｗｉｔｔｅｒ社）、ＡＷＳ  Ｘ−Ｒａｙ（Ａｍａｚｏｎ社）等を用いればよい。
【００４１】
図６は、パス、リンク、結合処理の例を示す説明図である。
パス６１２の実行後に結合処理６５０が実行され、パス６１４の実行後に結合処理６５０が実行され、パス６１６の実行後に結合処理６５０が実行される。一般的には、パス６１２、パス６１４、パス６１６による処理結果を結合処理６５０が用いる場合が該当する。この状態を図示すると、パス６１２、パス６１４、パス６１６は、結合処理６５０とリンクしている。このように、複数のパスの実行された後に、実行される処理単位を結合処理と呼ぶ。なお、結合処理６５０は、処理単位でもあり、パス（処理列）でもある。
【００４２】
図７は、本実施の形態の処理例を示す説明図である。
抽出モジュール１３０は、アプリケーショングラフから結合処理を抽出する。例えば、図４に示したアプリケーショングラフを対象とした場合、図７の例に示すように、結合処理７５０、結合処理７６０、結合処理７７０を抽出する。
そして、抽出モジュール１３０は、結合処理テーブル（ソート結果）８００を生成する。図８は、結合処理テーブル（ソート結果）８００のデータ構造例を示す説明図である。結合処理テーブル（ソート結果）８００は、パス欄８１０、結合処理欄８１５、開始欄８２０、終了欄８３０、パス長欄８４０、リンク欄８５０、ソート結果欄８６０を有しており、リンク欄８５０は、ＩＮ欄８５２、ＯＵＴ欄８５４を有している。
結合処理テーブル（ソート結果）８００は、結合処理テーブル５００に結合処理欄８１５、ソート結果欄８６０を追加したものである。結合処理欄８１５には、抽出モジュール１３０が抽出した結合処理にフラグをたてる。つまり、処理単位（ｌ）、処理単位（ｇ）、処理単位（ｍ）は、それぞれ結合処理であることを示している。
そして、ソート結果欄８６０は、終了欄８３０欄の値の大きい順にソートした結果を記憶している。つまり、終了時間で降順のソートであり、意味するところは、実行時間の遅い順にソートして、クリティカルパスを抽出するものである（特定モジュール１３５による処理）。図８の例では、以下の通りとなる。
総コスト：  パス
４５：  Ａ  →  ｍ    クリティカルパス
１７：  Ｂ  →  ｇ  →  ｍ
３０：  Ｃ  →  ｌ  →  ｇ  →  ｍ
３５：  Ｄ  →  ｌ  →  ｇ  →  ｍ
【００４３】
図９は、本実施の形態（割当モジュール１４０）による処理例を示すフローチャートである。
なお、計算資源として、高速な計算資源と標準速の計算資源の２種類の計算資源の例を挙げているが、３種類以上の計算資源を用いるようにしてもよい。
ステップＳ９０２では、結合処理テーブル１０００から次の結合処理を抽出する。図１０は、結合処理テーブル１０００のデータ構造例を示す説明図である。結合処理テーブル１０００は、パス欄１０１０、結合処理欄１０１５、開始欄１０２０、終了欄１０３０、パス長欄１０４０、リンク欄１０５０を有している。つまり、結合処理テーブル１０００は、結合処理テーブル（ソート結果）８００の行をソート結果欄８６０にしたがって並びかえたものであり、ソート結果欄８６０を省略している。
【００４４】
ステップＳ９０４では、ステップＳ９０２による抽出の結果、結合処理があるか否かを判断し、ある場合はステップＳ９０６へ進み、それ以外の場合は処理を終了する（ステップＳ９９９）。
ステップＳ９０６では、最初の結合処理は高速な計算資源へ割り当てる。
ステップＳ９０８では、結合処理にリンクするパス、又は結合処理を抽出する。
ステップＳ９１０では、ステップＳ９０８による抽出の結果、パス、又は結合処理があるか否かを判断し、ある場合はステップＳ９１２へ進み、それ以外の場合はステップＳ９０２へ戻る。
【００４５】
ステップＳ９１２では、「一方のパス又は結合処理における処理時間」と「他方のパス又は結合処理における処理時間」とが等しいか否かを判断し、「一方のパス又は結合処理における処理時間」と「他方のパス又は結合処理における処理時間」とが等しい場合はステップＳ９１４へ進み、それ以外の場合はステップＳ９１６へ進む。
ステップＳ９１４では、終了時刻が遅いパス又は結合処理を高速な計算資源へ割り当て、他方を標準速の計算資源へ割り当て、ステップＳ９０２へ戻る。
ステップＳ９１６では、処理時間が長いパス又は結合処理を高速な計算資源へ割り当て、処理時間が短いパス又は結合処理を標準速の計算資源へ割り当て、ステップＳ９０２へ戻る。
【００４６】
図１１は、本実施の形態の処理例を示す説明図である。結合処理テーブル１０００を用いて、図９の例に示したフローチャートによる処理例を示すものである。
具体的には、（１）１回目のループでは、ステップＳ９０４で結合処理ｍを取得し、ステップＳ９０６で結合処理ｍに高速な計算資源を割り当て、ステップＳ９０８−ステップＳ９１０でパスＡと結合処理ｇを取得し、ステップＳ９１２−ステップＳ９１６でパスＡに高速の計算資源を割り当て、結合処理ｇに標準速の計算資源を割り当てる。（２）２回目のループでは、ステップＳ９０４で結合処理ｇを取得し、ステップＳ９０６では最初の結合処理ではないので何もせず、ステップＳ９０８−ステップＳ９１０でパスＢと結合処理ｌを取得し、ステップＳ９１２−ステップＳ９１６で結合処理ｌに高速の計算資源を割り当て、パスＢに標準速の計算資源を割り当てる。（３）３回目のループでは、ステップＳ９０４で結合処理ｌを取得し、ステップＳ９０６では最初の結合処理ではないので何もせず、ステップＳ９０８−ステップＳ９１０でパスＣとパスＤを取得し、ステップＳ９１２−ステップＳ９１６でパスＤに高速の計算資源を割り当て、パスＣに標準速の計算資源を割り当てる。
【００４７】
図１２は、本実施の形態の処理例を示す説明図である。
図１１の例に示した処理例について、計算資源Ａ（２倍速）１２００と計算資源Ｂ（標準速）１２０２に分けて、割り当てられたパス、結合処理を示したものである。具体的には、計算資源Ａ（２倍速）１２００には、パスＤ（７．５）１２４０、結合処理ｌ（５）１２３０、パスＡ（２０）１２２０、結合処理ｍ（２．５）１２１０が割り当てられ、計算資源Ｂ（標準速）１２０２には、パスＣ（１０）１２４５、パスＢ（７）１２３５、結合処理ｇ（５）１２２５が割り当てられる。なお、結合処理ｇ（５）１２２５の後、結合処理ｍ（２．５）１２１０の実行開始までに待ち時間１２９０が生じる。また、ここでの高速な計算資源（計算資源Ａ（２倍速）１２００）は２倍速であるので、処理時間（結合処理テーブル１０００のパス長欄１０４０内の値に相当）は、２分の１になっている。本実施の形態の割り当てによって全体の処理時間は３５（７．５＋５＋２０＋２．５）となっている。
【００４８】
図１３は、本実施の形態の処理例を示す説明図である。
前述の例では、２つの計算資源を用いているので、２つのパスを並列して処理可能である。つまり、図１３（ａ）の例に示すアプリケーショングラフを、２つのパスを並列して実行させることを観点とした場合、図１３（ｂ）の例に示すようになる。そして、降順（終了時刻の遅い順）で、結合処理の入力を比較して、より時間がかかるパスを高速な計算資源（計算資源Ａ（２倍速）１２００）に割り当てる。具体的には、最後（終了時間で降順のソート結果で１位）の結合処理である処理単位（ｍ）４７０を選択し、その処理単位（ｍ）４７０の入力となっているパス（Ａ）４１０と処理単位（ｇ）４６０のうち、より時間がかかるパス（Ａ）４１０を選択し、次に処理単位（ｇ）４６０の入力となっているパス（Ｂ）４２０と処理単位（ｌ）４５０のうち、より時間がかかる処理単位（ｌ）４５０を選択し、処理単位（ｌ）４５０の入力となっているパス（Ｃ）４３０とパス（Ｄ）４４０のうち、より時間がかかるパス（Ｄ）４４０を選択し、それら選択したパス（結合処理を含む）に計算資源Ａ（２倍速）１２００を割り当てる。
【００４９】
図１４は、本実施の形態の処理例を示す説明図である。テスト実行モジュール１１０による処理結果（割当モジュール１４０の割り当て前の状態）を示すものである。つまり、均一の計算資源を５つ並列に実行させた場合と同等のものである。
処理時間１４１０は、パス（Ａ）４１０（処理単位（ａ）４１２、処理単位（ｂ）４１４、処理単位（ｃ）４１６、処理単位（ｄ）４１８）の処理時間を示しており、処理時間１４２０は、パス（Ｂ）４２０（処理単位（ｅ）４２２、処理単位（ｆ）４２４）の処理時間を示しており、処理時間１４３０は、パス（Ｃ）４３０（処理単位（ｈ）４３２、処理単位（ｉ）４３４）の処理時間を示しており、処理時間１４４０は、パス（Ｄ）４４０（処理単位（ｊ）４４２、処理単位（ｋ）４４４）の処理時間を示しており、処理時間１４５０は、処理単位（ｌ）４５０の処理時間を示しており、処理時間１４６０は、処理単位（ｇ）４６０の処理時間を示しており、処理時間１４７０は、処理単位（ｍ）４７０の処理時間を示している。
【００５０】
図１５は、本実施の形態の処理例を示す説明図である。本実施の形態（特に、割当モジュール１４０）による割り当て処理の結果を示すものである。ここでは、割り当て可能な計算資源として、計算資源Ａ（２倍速）１２００と計算資源Ｂ（標準速）１２０２の２つある。なお、この割り当て可能な計算資源は、計算資源情報取得モジュール１２０によって取得されるものである。例えば、計算資源情報取得モジュール１２０が各計算資源の状況を把握し、実行可能な計算資源（つまり、現在使用されていない計算資源）を割り当て可能な計算資源として取得する。
計算資源Ａ（２倍速）１２００に処理単位（ｊ）１５４２、処理単位（ｋ）１５４４、処理単位（ｌ）１５５０、処理単位（ａ）１５１２、処理単位（ｂ）１５１４、処理単位（ｃ）１５１６、処理単位（ｄ）１５１８、処理単位（ｍ）１５７０を割り当て、計算資源Ｂ（標準速）１２０２に処理単位（ｈ）１５３２、処理単位（ｉ）１５３４、処理単位（ｅ）１５２２、処理単位（ｆ）１５２４、処理単位（ｇ）１５６０を割り当てている。そして、処理単位（ｊ）１５４２、処理単位（ｋ）１５４４、処理単位（ｌ）１５５０、処理単位（ａ）１５１２、処理単位（ｂ）１５１４、処理単位（ｃ）１５１６、処理単位（ｄ）１５１８、処理単位（ｍ）１５７０は、それぞれ処理単位（ｊ）４４２、処理単位（ｋ）４４４、処理単位（ｌ）４５０、処理単位（ａ）４１２、処理単位（ｂ）４１４、処理単位（ｃ）４１６、処理単位（ｄ）４１８、処理単位（ｍ）４７０の半分の処理時間である。
したがって、図１４に示す例では逐次処理長（前）１５９０であったが、割当モジュール１４０の割り当てによって逐次処理長（後）１５９２となっている。これは、総合の処理時間が７８％（４５から３５に短縮）に減少したことを示している。
【００５１】
図１６は、本実施の形態の処理例を示す説明図である。
図９の例に示したフローチャートのステップＳ９１０からステップＳ９１６を以下のようにしてもよい。つまり、比較するパスの処理時間が等しい場合の処理例を示すものである。
結合処理の入力のパスの処理時間を比較し、処理時間の長いパスを高速な計算資源へ、短いパスを標準の計算資源へ各々割り当てる。
そして、処理時間が等しい場合は、終了時間が遅い処理を高速な処理装置へ割り当てる。例えば、図１６に示すような場合、結合処理Ｄ１６０８の入力はパスＡ１６０２と結合処理Ｅ１６１０がある。そして、パスＡ１６０２の処理時間（５）と結合処理Ｅ１６１０の処理時間（５）は等しいので、パスＡ１６０２の終了時間（ｔ１）と結合処理Ｅ１６１０の終了時間（ｔ２）を比較対象とする。そして、遅い終了時間であるパス（結合処理）に高速な計算資源を割り当てるようにしてもよい。図１６の場合、ｔ１＜ｔ２なので、結合処理Ｅ１６１０に高速な計算資源を割り当て、パスＡ１６０２に標準速の計算資源を割り当てる。
【００５２】
なお、本実施の形態としてのプログラムが実行されるコンピュータのハードウェア構成は、図１７に例示するように、一般的なコンピュータであり、具体的にはパーソナルコンピュータ、サーバーとなり得るコンピュータ等である。つまり、具体例として、処理部（演算部）としてＣＰＵ１７０１を用い、記憶装置としてＲＡＭ１７０２、ＲＯＭ１７０３、ＨＤＤ１７０４を用いている。ＨＤＤ１７０４として、例えば、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュ・メモリであるＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等を用いてもよい。処理受付モジュール１０５、テスト実行モジュール１１０、計算資源情報取得モジュール１２０、解析・割当モジュール１２５、抽出モジュール１３０、特定モジュール１３５、割当モジュール１４０等のプログラムを実行するＣＰＵ１７０１と、そのプログラムやデータを記憶するＲＡＭ１７０２と、本コンピュータを起動するためのプログラム等が格納されているＲＯＭ１７０３と、記録モジュール１１５等としての機能を有する補助記憶装置であるＨＤＤ１７０４と、キーボード、マウス、タッチスクリーン、マイク、カメラ（視線検知カメラ等を含む）等に対する利用者の操作（動作、音声、視線等を含む）に基づいてデータを受け付ける受付装置１７０６と、ＣＲＴ、液晶ディスプレイ、スピーカー等の出力装置１７０５と、ネットワークインタフェースカード等の通信ネットワークと接続するための通信回線インタフェース１７０７、そして、それらをつないでデータのやりとりをするためのバス１７０８により構成されている。これらのコンピュータが複数台互いにネットワークによって接続されていてもよい。
【００５３】
前述の実施の形態のうち、コンピュータ・プログラムによるものについては、本ハードウェア構成のシステムにソフトウェアであるコンピュータ・プログラムを読み込ませ、ソフトウェアとハードウェア資源とが協働して、前述の実施の形態が実現される。
なお、図１７に示すハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１７に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）や再構成可能な集積回路（ｆｉｅｌｄ−ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ：ＦＰＧＡ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続している形態でもよく、さらに図１７に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器（携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む）、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００５４】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラムの全体又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分若しくは全部であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００５５】
１００…情報処理装置
１０５…処理受付モジュール
１１０…テスト実行モジュール
１１５…記録モジュール
１２０…計算資源情報取得モジュール
１２５…解析・割当モジュール
１３０…抽出モジュール
１３５…特定モジュール
１４０…割当モジュール
２１０…計算資源装置
２５０…ユーザー端末
２９０…通信回線
【図１】
2020091558.tif 000003
【図２】
2020091558.tif 000004
【図３】
2020091558.tif 000005
【図４】
2020091558.tif 000006
【図５】
2020091558.tif 000007
【図６】
2020091558.tif 000008
【図７】
2020091558.tif 000009
【図８】
2020091558.tif 000010
【図９】
2020091558.tif 000011
【図１０】
2020091558.tif 000012
【図１１】
2020091558.tif 000013
【図１２】
2020091558.tif 000014
【図１３】
2020091558.tif 000015
【図１４】
2020091558.tif 000016
【図１５】
2020091558.tif 000017
【図１６】
2020091558.tif 000018
【図１７】
2020091558.tif 000019