(57)【要約】【課題】ジョブ消費電力の推定精度を向上させる。【解決手段】処理部１２は、ジョブ１３の起動に使用するファイルの格納場所を示すファイルパスからファイル名１４を抽出する。処理部１２は、実行済みであるジョブ１３ａ，１３ｂに対して、起動に使用したファイルに対応するファイル名１４ａ，１４ｂに含まれる部分文字列１５ａ，１５ｂとファイル名１４に含まれる部分文字列１５との比較に基づいて、類似度１７ａ，１７ｂを算出する。処理部１２は、類似度１７ａ，１７ｂに応じて、ジョブ１３ａ，１３ｂの実績消費電力１６ａ，１６ｂを示す履歴情報の中から少なくとも１つのジョブの実績消費電力を取得し、取得した実績消費電力に基づいてジョブ１３の消費電力１８を推定する。【選択図】図１
2018084907.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１のジョブの起動に使用する第１のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分である第１のファイル名を抽出し、
実行済みである複数の第２のジョブそれぞれに対して、当該第２のジョブの起動に使用した第２のファイルに対応する第２のファイル名に含まれる部分文字列と前記第１のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、
前記類似度に応じて、前記複数の第２のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも１つの第２のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第１のジョブの消費電力を推定する、
処理を実行させるジョブ消費電力推定プログラム。
【請求項２】
前記第１のファイル名は、前記第１のファイルの直上の階層のディレクトリを示す第１のディレクトリ名を含み、前記第２のファイル名は、前記第２のファイルの直上の階層のディレクトリを示す第２のディレクトリ名を含む、
請求項１記載のジョブ消費電力推定プログラム。
【請求項３】
前記類似度の算出では、前記第１のファイル名に含まれる連続するｎ文字（ｎは２以上の整数）の集合と前記第２のファイル名に含まれる連続するｎ文字の集合とを比較する、
請求項１記載のジョブ消費電力推定プログラム。
【請求項４】
実行済みである複数の第２のジョブそれぞれについて、当該第２のジョブの起動に使用した第２のファイルに対応する第２のファイル名または前記第２のファイル名に含まれる部分文字列と、当該第２のジョブの実績消費電力とを示す履歴情報を記憶する記憶部と、
第１のジョブの起動に使用する第１のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分である第１のファイル名を抽出し、前記複数の第２のジョブそれぞれに対して、前記第２のファイル名に含まれる部分文字列と前記第１のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、前記類似度に応じて前記履歴情報の中から少なくとも１つの第２のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第１のジョブの消費電力を推定する処理部と、
を有する並列処理装置。
【請求項５】
コンピュータが実行するジョブ消費電力推定方法であって、
第１のジョブの起動に使用する第１のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分である第１のファイル名を抽出し、
実行済みである複数の第２のジョブそれぞれに対して、当該第２のジョブの起動に使用した第２のファイルに対応する第２のファイル名に含まれる部分文字列と前記第１のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、
前記類似度に応じて、前記複数の第２のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも１つの第２のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第１のジョブの消費電力を推定する、
ジョブ消費電力推定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法に関する。
【背景技術】
【０００２】
ネットワークに接続された複数のコンピュータ（計算ノードと言うことがある）を有しており、これら複数の計算ノードを並列に動作させて大規模計算を行うことができる並列処理システムが利用されている。並列処理システムに対しては、１以上のユーザから適宜ジョブが投入される。ジョブ投入時には、起動させるユーザプログラムのファイル名などの起動情報が指定され、使用ノード数などの実行条件が更に指定されることがある。並列処理システムは、指定された実行条件を考慮して、投入された複数のジョブそれぞれに対して１以上の計算ノードを割り当てる「ジョブスケジューリング」を行う。
【０００３】
なお、複数のオペレータに作業を割り当てる管理サーバが提案されている。提案の管理サーバは、新規作業が発生するとその新規作業と類似する既存作業を検索し、類似する既存作業を割り当てたオペレータに対して優先的にその新規作業を割り当てる。類似度を算出するために、管理サーバは、既存作業に関する文字情報と新規作業に関する文字情報とを取得する。管理サーバは、形態素解析により文字情報から単語を抽出し、既存作業と新規作業との間で共通して出現する単語の割合に基づいて類似度を算出する。または、管理サーバは、ｎ−ｇｒａｍ法や編集距離法などにより類似度を算出する。
【０００４】
また、新規ジョブのリソース使用量を推定する並列処理システムが提案されている。提案の並列処理システムは、実行済みジョブについてジョブ属性とリソース使用状況とを含む実行履歴を保存しておく。並列処理システムは、新規ジョブとジョブ属性が類似する実行済みジョブを検索し、類似する実行済みジョブのリソース使用状況に基づいて新規ジョブのリソース使用量を推定する。ジョブ属性にはプログラム名が含まれている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】国際公開第２０１３／１２８５５５号
【特許文献２】特開２０１６−４２２８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、計算ノードの使用率（何れかのジョブに割り当てられており空いていない計算ノードの割合）が高くなるほど、並列処理システムの消費電力は大きくなる。一方、設備上の理由や経済的理由などにより、並列処理システムが電力を無制限に使用できるわけではない。そこで、並列処理システムはジョブスケジューリングにおいて、合計消費電力が上限値を超えないように、同時実行するジョブの組み合わせを調整することが好ましい。このとき、並列処理システムは、実行前にジョブの消費電力を推定することになる。
【０００７】
しかし、各ジョブの消費電力は、使用ノード数に加えて起動するユーザプログラムの特性にも依存する。例えば、ジョブの消費電力は、メモリアクセス頻度やディスクアクセス頻度や通信頻度に依存することがあり、また、ユーザプログラムのパイプライン処理効率やＳＩＭＤ（Single Instruction Multiple Data）化率に依存することがある。また、並列処理システムには、同じプログラム名を指定したジョブが反復して投入されるとは限らず、プログラム名を少しずつ代えながらジョブが投入されることがある。そのため、実行前にジョブの消費電力をどのように推定すればよいかが問題となる。
【０００８】
１つの側面では、本発明は、ジョブ消費電力の推定精度が向上するジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、コンピュータに以下の処理を実行させるジョブ消費電力推定プログラムが提供される。第１のジョブの起動に使用する第１のファイルの格納場所を示すファイルパスから、ファイルパスの一部分である第１のファイル名を抽出する。実行済みである複数の第２のジョブそれぞれに対して、当該第２のジョブの起動に使用した第２のファイルに対応する第２のファイル名に含まれる部分文字列と第１のファイル名に含まれる部分文字列との比較に基づいて類似度を算出する。類似度に応じて、複数の第２のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも１つの第２のジョブの実績消費電力を取得し、取得した実績消費電力に基づいて第１のジョブの消費電力を推定する。
【００１０】
また、１つの態様では、記憶部と処理部とを有する並列処理装置が提供される。また、１つの態様では、コンピュータが実行するジョブ消費電力推定方法が提供される。
【発明の効果】
【００１１】
１つの側面では、ジョブ消費電力の推定精度が向上する。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態の並列処理システムの例を示す図である。
【図２】第２の実施の形態の並列処理システムの例を示す図である。
【図３】ジョブ管理ノードのハードウェア例を示すブロック図である。
【図４】ジョブスケジューリング例を示す図である。
【図５】ファイルシステムのディレクトリ構造の例を示す図である。
【図６】消費電力履歴テーブルの例を示す図である。
【図７】ファイル名類似度の判定例を示す図である。
【図８】ログインノードとジョブ管理ノードの機能例を示すブロック図である。
【図９】ジョブスケジューリングの手順例を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
第１の実施の形態を説明する。
【００１４】
図１は、第１の実施の形態の並列処理システムの例を示す図である。
第１の実施の形態の並列処理システムは、並列処理装置１０を含む。並列処理装置１０は、複数の計算ノードを利用した並列分散処理を制御する。並列処理装置１０の中に計算ノードが含まれてもよいし、並列処理装置１０の外部に計算ノードが存在してもよい。
【００１５】
並列処理装置１０は、１以上の計算ノードを使用して情報処理を行うジョブの消費電力を、そのジョブの実行前に推定する。推定した消費電量はジョブスケジューリングに利用されてもよい。例えば、並列処理装置１０は、ジョブの実行要求を受け付け、推定した消費電力を考慮して、受け付けた各ジョブに対して１以上の計算ノードを割り当てる。この場合、並列処理装置１０は、各時間帯の並列処理システムの合計消費電力が所定の上限値を超えないようにジョブスケジューリングを行うことが好ましい。
【００１６】
ここで、各ジョブの消費電力は、使用ノード数およびユーザプログラムの特性に依存する。ユーザプログラムの特性には、メモリアクセス頻度、ディスクアクセス頻度、通信頻度、パイプライン処理効率、ＳＩＭＤ化率などが含まれる。そこで、並列処理装置１０は、以下のようにして各ジョブの消費電力を推定する。
【００１７】
並列処理装置１０は、記憶部１１および処理部１２を有する。記憶部１１は、例えば、ＲＡＭ（Random Access Memory）などの揮発性の記憶装置、または、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性の記憶装置である。処理部１２は、例えば、ＣＰＵ（Central Processing Unit）やＤＳＰ（Digital Signal Processor）などのプロセッサである。ただし、処理部１２は、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの特定用途の電子回路を含んでもよい。プロセッサは、ＲＡＭなどのメモリに記憶されたプログラムを実行する。例えば、プロセッサは、ジョブ消費電力推定プログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
【００１８】
記憶部１１は、実行済みのジョブ１３ａ，１３ｂに関する履歴情報を記憶する。履歴情報は、ファイル名１４ａ，１４ｂまたはファイル名１４ａ，１４ｂから抽出された部分文字列１５ａ，１５ｂと、実績消費電力１６ａ，１６ｂとを含む。ファイル名１４ａ、部分文字列１５ａおよび実績消費電力１６ａはジョブ１３ａに対応し、ファイル名１４ｂ、部分文字列１５ｂおよび実績消費電力１６ｂはジョブ１３ｂに対応する。
【００１９】
ファイル名１４ａは、ジョブ１３ａの起動に使用したファイルの格納場所を示すファイルパスの一部分である。ファイル名１４ｂは、ジョブ１３ｂの起動に使用したファイルの格納場所を示すファイルパスの一部分である。ファイルは、例えば、実行条件や実行手順などを記述したスクリプトファイルである。ただし、ファイルは、ユーザプログラムを記述したプログラムファイルでもよい。ファイル名１４ａ，１４ｂは、例えば、「ａａａ．ｓｈ」のように、ディレクトリ名を含まないファイル本体の名称である。ただし、ファイル名１４ａ，１４ｂは、「ｕｓｅｒ／ａａａ．ｓｈ」のように、ファイルの直上のディレクトリを示すディレクトリ名とファイル本体の名称とを結合したものでもよい。
【００２０】
部分文字列１５ａは、ファイル名１４ａを示す文字列の一部分である。部分文字列１５ｂは、ファイル名１４ｂを示す文字列の一部分である。部分文字列１５ａ，１５ｂは、例えば、連続するｎ文字（ｎは２以上の整数）を示すｎ−ｇｒａｍである。通常、１つのファイル名からは複数の部分文字列が抽出される。その場合、ジョブ１３ａ，１３ｂそれぞれに対して部分文字列の集合が対応付けられる。
【００２１】
実績消費電力１６ａは、例えば、ジョブ１３ａの実行中に測定された、ジョブ１３ａに割り当てられた計算ノードの消費電力である。実績消費電力１６ｂは、例えば、ジョブ１３ｂの実行中に測定された、ジョブ１３ｂに割り当てられた計算ノードの消費電力である。実績消費電力は、プロセッサの消費電力やメモリの消費電力を含んでもよい。また、実績消費電力１６ａ，１６ｂは、ジョブ実行期間中の平均消費電力でもよいし、ジョブ実行期間中の特定時点での消費電力でもよい。また、実績消費電力１６ａ，１６ｂは、２以上の計算ノードが使用された場合、計算ノード１つ当たりの平均消費電力でもよい。また、実績消費電力１６ａ，１６ｂは、ファイル名が同じファイルに基づくジョブが複数回実行された場合、複数回の実行を通じた平均消費電力でもよい。
【００２２】
処理部１２は、未実行のジョブ１３を検出する。すると、処理部１２は、ジョブ１３の起動に使用するファイルの格納場所を示すファイルパスから、ファイルパスの一部分であるファイル名１４を抽出する。ファイルは、スクリプトファイルでもよいしプログラムファイルでもよい。ファイル名１４は、ファイル本体の名称でもよいし、直上のディレクトリ名とファイル本体の名称とを結合したものでもよい。処理部１２は、ファイル名１４を示す文字列の一部分である部分文字列１５を抽出する。部分文字列１５は、例えば、ｎ−ｇｒａｍである。ファイル名１４から部分文字列の集合が抽出されてもよい。
【００２３】
処理部１２は、履歴情報が示すジョブ１３ａに対して、部分文字列１５ａと部分文字列１５との比較に基づいて類似度１７ａを算出する。また、処理部１２は、履歴情報が示すジョブ１３ｂに対して、部分文字列１５ｂと部分文字列１５との比較に基づいて類似度１７ｂを算出する。部分文字列の比較は、一致する部分文字列の個数を算出することを含んでもよい。類似度１７ａは、ファイル名１４ａとファイル名１４の間の類似度を示す。類似度１７ｂは、ファイル名１４ｂとファイル名１４の間の類似度を示す。類似度１７ａ，１７ｂは、２つのファイル名が完全一致しているか否かを示す２値指標ではなく、部分的な一致の程度を示す多値指標である。類似度１７ａ，１７ｂを示す指標として、例えば、２つのファイル名の間の距離が用いられる。距離の指標値が小さいほど２つのファイル名は類似しており、距離の指標値が大きいほど２つのファイル名は類似していない。
【００２４】
処理部１２は、類似度１７ａ，１７ｂに応じて、履歴情報の中から少なくとも１つの実行済みジョブの実績消費電力を取得する。例えば、処理部１２は、類似度が最も高い実行済みジョブの実績消費電力を取得する。ここでは、ジョブ１３ａに対応する実績消費電力１６ａが取得されたとする。そして、処理部１２は、取得した実績消費電力１６ａに基づいて、未実行のジョブ１３の消費電力１８を推定する。例えば、処理部１２は、実績消費電力１６ａをジョブ１３の消費電力１８であるとみなす。
【００２５】
第１の実施の形態の並列処理システムによれば、未実行のジョブ１３の起動に使用するファイルの格納場所を示すファイルパスからファイル名１４が抽出される。実行済みのジョブ１３ａ，１３ｂに対して、ファイル名１４ａ，１４ｂに含まれる部分文字列１５ａ，１５ｂとファイル名１４に含まれる部分文字列１５との比較に基づいて類似度１７ａ，１７ｂが算出される。そして、類似度１７ａ，１７ｂに応じて少なくとも１つのジョブの実績消費電力が取得され、取得した実績消費電力に基づいて消費電力１８が推定される。
【００２６】
これにより、使用ノード数のみから消費電力１８を推定する場合と比べて、ユーザプログラムの特性の違いが消費電力１８に与える影響を考慮することができる。また、ファイル名１４が何れの過去ジョブのファイル名とも完全一致しない場合であっても、ユーザプログラムの特性が近い過去ジョブを検索することができる。
【００２７】
例えば、あるユーザが、ユーザプログラムを微修正しながらジョブを繰り返し実行させる場合や、ユーザプログラムに与えるパラメータ値を変えながらジョブを繰り返し実行させる場合が考えられる。このとき、ユーザプログラムのバージョンやパラメータ値の違いを区別できるようにファイル名の一部分が変更されることがある。この場合、ファイル名には、変化しない基幹部分と、シリアル番号や日付やパラメータ値などを示す可変部分とが含まれることが多い。よって、情報処理の内容が極めて近いジョブの間でもファイル名が完全一致するとは限らない。これに対し、ファイル名の部分一致を判定することで、類似する過去ジョブを検索できる。その結果、ジョブ消費電力の推定精度が向上する。
【００２８】
［第２の実施の形態］
次に、第２の実施の形態を説明する。
図２は、第２の実施の形態の並列処理システムの例を示す図である。
【００２９】
第２の実施の形態の並列処理システムは、端末装置３４、計算ノード４１〜４４、制御装置５１〜５４、ジョブ管理ノード１００およびログインノード２００を有する。ジョブ管理ノード１００は、第１の実施の形態の並列処理装置１０の一例である。
【００３０】
計算ノード４１〜４４、ジョブ管理ノード１００およびログインノード２００は、ネットワーク３１に接続されている。ネットワーク３１は、例えば、データ通信用のローカルネットワークである。端末装置３４は、ネットワーク３３に接続されている。ネットワーク３３は、例えば、インターネットなどの広域ネットワークである。制御装置５１〜５４およびジョブ管理ノード１００は、ネットワーク３２に接続されている。ネットワーク３２は、例えば、管理用のローカルネットワークである。制御装置５１は計算ノード４１に接続され、制御装置５２は計算ノード４２に接続され、制御装置５３は計算ノード４３に接続され、制御装置５４は計算ノード４４に接続されている。
【００３１】
端末装置３４は、ユーザが使用するクライアントコンピュータである。端末装置３４は、ネットワーク３３およびネットワーク３１を介してログインノード２００にアクセスすることができる。端末装置３４は、ジョブの情報を記述したスクリプトファイルやユーザプログラムをログインノード２００に送信し、ジョブの実行をログインノード２００に要求する。スクリプトファイルには、ジョブの実行条件や実行手順などが記述される。例えば、スクリプトファイルには、使用する計算ノードの数や実行するユーザプログラムのファイル名などが記述されている。ただし、使用する計算ノードの数は、スクリプトファイルとは別に端末装置３４からログインノード２００に通知されてもよい。
【００３２】
計算ノード４１〜４４は、ユーザプログラムを並列に実行するサーバコンピュータである。１つの時間帯において１つの計算ノードは高々１つのジョブに割り当てられる。ジョブが完了すると当該ジョブに割り当てられていた計算ノードは解放される。ジョブの実行に用いるユーザプログラムは、例えば、ジョブ管理ノード１００から計算ノード４１〜４４に送信される。ただし、計算ノード４１〜４４がジョブ管理ノード１００からの指示に応じて、ログインノード２００からユーザプログラムを取得してもよい。
【００３３】
制御装置５１〜５４は、ジョブ管理ノード１００からの指示に応じて、接続されている計算ノードの電源のオン／オフを制御する。制御装置５１〜５４は、ジョブ管理ノード１００から起動指示を受け付けると、接続されている計算ノードの電源をオフからオンに変更する。また、制御装置５１〜５４は、ジョブ管理ノード１００から停止指示を受け付けると、接続されている計算ノードの電源をオンからオフに変更する。また、制御装置５１〜５４は、接続されている計算ノードの消費電力を測定し、測定した消費電力をネットワーク３２を介して定期的にジョブ管理ノード１００に通知する。
【００３４】
すなわち、制御装置５１は計算ノード４１の電源を管理し、計算ノード４１の消費電力を測定する。制御装置５２は計算ノード４２の電源を管理し、計算ノード４２の消費電力を測定する。制御装置５３は計算ノード４３の電源を管理し、計算ノード４３の消費電力を測定する。制御装置５４は計算ノード４４の電源を管理し、計算ノード４４の消費電力を測定する。制御装置５１〜５４が測定する消費電力は、接続されている計算ノード全体の消費電力であり、プロセッサやメモリやファンなどの消費電力を含んでいる。
【００３５】
ただし、制御装置５１〜５４によって測定された消費電力は、計算ノード４１〜４４およびネットワーク３１を介してジョブ管理ノード１００に通知されてもよい。また、制御装置５１〜５４が消費電力を測定する代わりに、計算ノード４１〜４４に組み込まれた電力測定部品を用いて計算ノード４１〜４４が消費電力を測定してもよい。計算ノード４１〜４４がプロセッサやメモリなど構成部品毎に消費電力を測定している場合、それら構成部品毎の消費電力を合計した値を計算ノード全体の消費電力とすればよい。
【００３６】
ジョブ管理ノード１００は、１以上のジョブに計算ノード４１〜４４を割り振るジョブスケジューリングを行うサーバコンピュータである。ジョブ管理ノード１００には、ログインノード２００が有する記憶装置が論理的にマウントされている。すなわち、ジョブ管理ノード１００は、ログインノード２００が有する記憶装置の記憶領域を、ジョブ管理ノード１００が管理する記憶領域の一部として仮想的に認識する。よって、ジョブ管理ノード１００は、ユーザがログインノード２００に書き込んだスクリプトファイルやユーザプログラムを、ジョブ管理ノード１００のファイルシステム上で認識することができる。
【００３７】
ジョブ管理ノード１００は、実行待ちの各ジョブが要求する計算ノード数に基づいて、計算ノード４１〜４４の使用率が高くなるようにジョブスケジューリングを行う。ただし、ジョブ管理ノード１００は、計算ノード４１〜４４全体の消費電力が所定の上限値を超えないようにジョブスケジューリングを行う。このとき、ジョブ管理ノード１００は、実行待ちの各ジョブについて、計算ノード１つ当たりの消費電力の推定値を算出し、計算ノード１つ当たりの消費電力に計算ノード数をかけて当該ジョブの消費電力を推定する。
【００３８】
ジョブ管理ノード１００は、割り当てた計算ノードに対して、ログインノード２００に記憶されているユーザプログラムを送信する。または、ジョブ管理ノード１００は、割り当てた計算ノードに対して、ログインノード２００のルートディレクトリまたは特定の下位ディレクトリを一時的にマウントし、計算ノード４１〜４４がログインノード２００からユーザプログラムを取得できるようにする。ジョブ管理ノード１００は、割り当てた計算ノードに対してユーザプログラムを起動させるコマンドを送信する。
【００３９】
ログインノード２００は、ユーザからジョブの実行要求を受け付ける窓口となるサーバコンピュータである。ログインノード２００は、端末装置３４から受信したスクリプトファイルやユーザプログラムを、ログインノード２００が有する記憶装置に格納する。ログインノード２００は、ジョブ管理ノード１００にジョブ要求を通知する。
【００４０】
図３は、ジョブ管理ノードのハードウェア例を示すブロック図である。
ジョブ管理ノード１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７，１０８を有する。上記ユニットはバスに接続される。ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。ＣＰＵ１０１は、第１の実施の形態の処理部１２の一例である。
【００４１】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されたプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、ジョブ管理ノード１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。複数のプロセッサの集合を「マルチプロセッサ」または「プロセッサ」と言うことがある。
【００４２】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、ジョブ管理ノード１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００４３】
ＨＤＤ１０３は、ＯＳ（Operating System）やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムにはジョブ消費電力推定プログラムが含まれる。なお、ジョブ管理ノード１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４４】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、ジョブ管理ノード１００に接続されたディスプレイ１１１に画像を出力する。ディスプレイ１１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４５】
入力信号処理部１０５は、ジョブ管理ノード１００に接続された入力デバイス１１２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス１１２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、ジョブ管理ノード１００に複数の種類の入力デバイスが接続されていてもよい。
【００４６】
媒体リーダ１０６は、記録媒体１１３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体１１３として、例えば、磁気ディスク、光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤが含まれる。光ディスクには、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）が含まれる。
【００４７】
媒体リーダ１０６は、例えば、記録媒体１１３から読み取ったプログラムやデータを、ＲＡＭ１０２やＨＤＤ１０３などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、ＣＰＵ１０１によって実行される。なお、記録媒体１１３は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体１１３やＨＤＤ１０３を、コンピュータ読み取り可能な記録媒体と言うことがある。
【００４８】
通信インタフェース１０７は、ネットワーク３１に接続され、ネットワーク３１を介してログインノード２００や計算ノード４１〜４４と通信するインタフェースである。通信インタフェース１０８は、ネットワーク３２に接続され、ネットワーク３２を介して制御装置５１〜５４と通信するインタフェースである。通信インタフェース１０７，１０８は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００４９】
端末装置３４、計算ノード４１〜４４およびログインノード２００も、ジョブ管理ノード１００と同様のハードウェアを用いて実装することができる。ただし、計算ノード４１〜４４はそれぞれ、制御装置と接続されるインタフェースを有している。
【００５０】
次に、ジョブスケジューリングとジョブ消費電力の推定について説明する。
図４は、ジョブスケジューリング例を示す図である。
ここでは、同一または異なるユーザからジョブ６１〜６６が投入され、投入されたジョブ６１〜６６が実行待ちである場合を考える。
【００５１】
ジョブ６１（ジョブＡ）は、２個の計算ノードを１単位時間だけ使用する予定である。ジョブ６２（ジョブＢ）は、２個の計算ノードを１単位時間だけ使用する予定である。ジョブ６３（ジョブＣ）は、１個の計算ノードを３単位時間だけ使用する予定である。ジョブ６４（ジョブＤ）は、２個の計算ノードを１単位時間だけ使用する予定である。ジョブ６５（ジョブＥ）は、１個の計算ノードを２単位時間だけ使用する予定である。ジョブ６６（ジョブＦ）は、３個の計算ノードを１単位時間だけ使用する予定である。
【００５２】
ジョブ管理ノード１００は、このような実行条件に基づいて、ジョブ６１〜６６に計算ノードおよび時間帯を割り当てる。例えば、ジョブ６１に、時間帯ｔ１の計算ノード４３，４４が割り当てられる。ジョブ６２に、時間帯ｔ１の計算ノード４１，４２が割り当てられる。ジョブ６３に、時間帯ｔ２〜ｔ４の計算ノード４４が割り当てられる。ジョブ６４に、時間帯ｔ２の計算ノード４２，４３が割り当てられる。ジョブ６５に、時間帯ｔ２，ｔ３の計算ノード４１が割り当てられる。ジョブ６６に、時間帯ｔ４の計算ノード４１〜４３が割り当てられる。並列処理システムのスループットを大きくするため、空きノードが少なくなるようにジョブスケジューリングを行うことが好ましい。
【００５３】
ただし、時間帯ｔ１〜ｔ４それぞれにおいて計算ノード４１〜４４の消費電力の合計が所定の上限値を超えないことを条件とする。時間帯ｔ１では、ジョブ６１，６２の消費電力の合計が上限値を超えないことが条件である。時間帯ｔ２では、ジョブ６３，６４，６５の消費電力の合計が上限値を超えないことが条件である。時間帯ｔ３では、ジョブ６３，６５の消費電力の合計が上限値を超えないことが条件である。時間帯ｔ４では、ジョブ６３，６６の消費電力の合計が上限値を超えないことが条件である。
【００５４】
ジョブ管理ノード１００は、ジョブ６１〜６６それぞれの計算ノード１つ当たりの消費電力を、類似する過去ジョブの計算ノード１つ当たりの消費電力の実績値から推定する。ジョブ６１〜６６それぞれの消費電力は、計算ノード１つ当たりの消費電力に計算ノード数をかけることで算出できる。第２の実施の形態では、類似する過去ジョブをファイル名が類似するジョブとする。ファイル名として、ディレクトリ名を含まないジョブスクリプト名か、または、直上の階層のディレクトリ名とジョブスクリプト名とを結合した名称を用いる。類似度の指標としては、文字列の部分的な一致度を反映した指標を用いる。
【００５５】
図５は、ファイルシステムのディレクトリ構造の例を示す図である。
ログインノード２００は、階層構造のファイルシステムによってスクリプトファイルを管理している。ディレクトリ７１は、ルートディレクトリの直下にあるディレクトリである。ディレクトリ７１のディレクトリ名は「ｈｏｍｅ」である。ディレクトリ７２，７３は、ディレクトリ７１の直下にあるディレクトリである。ディレクトリ７２のディレクトリ名は「ｕｓｅｒ１」、ディレクトリ７３のディレクトリ名は「ｕｓｅｒ２」である。
【００５６】
スクリプトファイル７４，７５は、ディレクトリ７２の直下に格納されている。スクリプトファイル７４のスクリプトファイル名は「ａｂｃａｂｃ．ｓｈ」、スクリプトファイル７５のスクリプトファイル名は「ａｂｃｎｎｎ．ｓｈ」である。スクリプトファイル７６，７７は、ディレクトリ７３の直下に格納されている。スクリプトファイル７６のスクリプトファイル名は「ＮＢ−ｐ＝２０，ｑ＝２０．ｓｈ」、スクリプトファイル７７のスクリプトファイル名は「ＮＢ−ｐ＝２５，ｑ＝２０．ｓｈ」である。
【００５７】
スクリプトファイル７４のファイルパスは「／ｈｏｍｅ／ｕｓｅｒ１／ａｂｃａｂｃ．ｓｈ」になる。スクリプトファイル７５のファイルパスは「／ｈｏｍｅ／ｕｓｅｒ１／ａｂｃｎｎｎ．ｓｈ」になる。スクリプトファイル７６のファイルパスは「／ｈｏｍｅ／ｕｓｅｒ２／ＮＢ−ｐ＝２０，ｑ＝２０．ｓｈ」になる。スクリプトファイル７７のファイルパスは「／ｈｏｍｅ／ｕｓｅｒ２／ＮＢ−ｐ＝２５，ｑ＝２０．ｓｈ」になる。
【００５８】
ここで、ファイルシステムのディレクトリ構造やディレクトリ名は、並列処理システムの管理者が定めるシステム運用方針に従う。ただし、スクリプトファイルの直上のディレクトリは、ログインアカウント名、研究グループ名、組織名などのユーザ識別名が使われることが多い。この場合、端末装置３４のユーザは、自身に割り当てられたディレクトリの直下にスクリプトファイルを格納することが多い。例えば、スクリプトファイル７４，７５はユーザｕｓｅｒ１によって作成されたスクリプトファイルであり、スクリプトファイル７６，７７はユーザｕｓｅｒ２によって作成されたスクリプトファイルである。
【００５９】
また、情報処理内容が類似するジョブを複数回投入するユーザは、変化しない基幹部分とジョブ毎に異なる可変部分とを含むスクリプトファイル名を使用することが多い。可変部分には、ユーザが決めたシリアル番号、ジョブを実行する日付、ユーザプログラムに与えるパラメータ値などが使用される。例えば、スクリプトファイル７６のスクリプトファイル名のうち、「ＮＢ」が基幹部分であり、「ｐ＝２０，ｑ＝２０」が可変部分である。また、スクリプトファイル７７のスクリプトファイル名のうち、「ＮＢ」が基幹部分であり、「ｐ＝２５，ｑ＝２０」が可変部分である。
【００６０】
ここで、ジョブ管理ノード１００は、ジョブの類似度を判定するためにファイル名を使用する。使用するファイル名は、ディレクトリ名を含まないスクリプトファイル名、または、スクリプトファイルの直上のディレクトリ名とスクリプトファイル名の結合である。
【００６１】
よって、スクリプトファイル７４を用いるジョブについては、「ａｂｃａｂｃ．ｓｈ」または「ｕｓｅｒ１／ａｂｃａｂｃ．ｓｈ」が使用される。スクリプトファイル７５を用いるジョブについては、「ａｂｃｎｎｎ．ｓｈ」または「ｕｓｅｒ１／ａｂｃｎｎｎ．ｓｈ」が使用される。スクリプトファイル７６を用いるジョブについては、「ＮＢ−ｑ＝２０，ｑ＝２０．ｓｈ」または「ｕｓｅｒ２／ＮＢ−ｑ＝２０，ｑ＝２０．ｓｈ」が使用される。スクリプトファイル７７を用いるジョブについては、「ＮＢ−ｑ＝２５，ｑ＝２０．ｓｈ」または「ｕｓｅｒ２／ＮＢ−ｑ＝２５，ｑ＝２０．ｓｈ」が使用される。
【００６２】
ジョブ管理ノード１００は、２つのファイル名の間の部分的な一致度を考慮して２つのファイル名の「距離」を算出する。ジョブ管理ノード１００は、距離が閾値未満である２つのファイル名を類似していると判定する。第２の実施の形態では、２つのファイル名の距離を、ｔｒｉ−ｇｒａｍ（３−ｇｒａｍ）の集合を用いて算出する。ｔｒｉ−ｇｒａｍは、ファイル名に含まれる連続する３文字である。ただし、ファイル名の前後にそれぞれ２文字の空白（スペース）が存在していると仮定する。よって、ｍ文字のファイル名からはｍ＋２個のｔｒｉ−ｇｒａｍを抽出することができる。
【００６３】
なお、ｔｒｉ−ｇｒａｍに代えて、ｂｉ−ｇｒａｍ（２−ｇｒａｍ）、４−ｇｒａｍ、５−ｇｒａｍなどを用いてもよい。ｎ−ｇｒａｍを使用する場合、ファイル名の前後にはそれぞれｎ−１個の空白が存在するものと仮定する。ファイル名に直上のディレクトリ名が含まれている場合、「／」などのディレクトリ区切り記号を含めてｎ−ｇｒａｍを生成してもよいし、ディレクトリ区切り記号を除外してｎ−ｇｒａｍを生成してもよい。
【００６４】
図６は、消費電力履歴テーブルの例を示す図である。
ジョブ管理ノード１００は、消費電力履歴テーブル１２１を保持する。消費電力履歴テーブル１２１は、ファイル名、ｔｒｉ−ｇｒａｍおよび消費電力の項目を有する。
【００６５】
ファイル名の項目には、過去に実行されたジョブで使用されたスクリプトファイルについて、ディレクトリ名を含まないスクリプトファイル名、または、直上のディレクトリ名とスクリプトファイル名とを結合した名称が登録される。図６では、ファイル名が、ディレクトリ名を含まないスクリプトファイル名であることを想定している。
【００６６】
ｔｒｉ−ｇｒａｍの項目には、ファイル名から抽出されたｔｒｉ−ｇｒａｍの集合が登録される。具体的には、ｔｒｉ−ｇｒａｍの項目には、ｔｒｉ−ｇｒａｍの種類（キー）とその個数の組が、キーの数だけ列挙される。検索を容易にするため、キーは昇順にソートされている。例えば、「ａｂｃａｂｃ．ｓｈ」からは、「＿＿ａ」が１個、「＿ａｂ」が１個、「．ｓｈ」が１個、「ａｂｃ」が２個、「ｂｃ．」が１個、「ｂｃａ」が１個、「ｃ．ｓ」が１個、「ｃａｂ」が１個、「ｈ＿＿」が１個、「ｓｈ＿」が１個抽出される。ｔｒｉ−ｇｒａｍの中の「＿」は空白を表している。なお、ｔｒｉ−ｇｒａｍはファイル名から生成可能であるため、消費電力履歴テーブル１２１にはファイル名とｔｒｉ−ｇｒａｍの何れか一方のみ登録するようにしてもよい。
【００６７】
消費電力の項目には、ジョブ実行時に測定された消費電力の実績値が登録される。１つのジョブの実行期間中に消費電力が複数回測定された場合、消費電力履歴テーブル１２１に登録される消費電力は、複数回測定された消費電力の平均値である。また、１つのジョブが複数の計算ノードを使用した場合、消費電力履歴テーブル１２１に登録される消費電力は、計算ノード１つ当たりの平均消費電力である。また、ファイル名が同じジョブが複数回実行された場合、消費電力履歴テーブル１２１に登録される消費電力は、複数回のジョブの消費電力を平均化した平均消費電力である。例えば、ファイル名「ａｂｃａｂｃ．ｓｈ」に対して、消費電力「１２０Ｗ」が登録される。
【００６８】
図７は、ファイル名類似度の判定例を示す図である。
ここでは、ファイル名８１とファイル名８２とが類似しているか否か判定する場合を考える。ファイル名８１は「ａｂｃｄｅ」であり、ファイル名８２は「ａｂｃｄｄ」である。ファイル名８１からはｔｒｉ−ｇｒａｍ集合８３が生成される。ファイル名８２からはｔｒｉ−ｇｒａｍ集合８４が生成される。ｔｒｉ−ｇｒａｍ集合８３は、「＿＿ａ」、「＿ａｂ」、「ａｂｃ」、「ｂｃｄ」、「ｃｄｅ」「ｄｅ＿」、「ｅ＿＿」というキーを含む。これらキーの出現回数は１回ずつである。ｔｒｉ−ｇｒａｍ集合８４は、「＿＿ａ」、「＿ａｂ」、「ａｂｃ」、「ｂｃｄ」、「ｃｄｄ」、「ｄｄ＿」、「ｄ＿＿」というキーを含む。これらキーの出現回数は１回ずつである。
【００６９】
ジョブ管理ノード１００は、ｔｒｉ−ｇｒａｍ集合８３とｔｒｉ−ｇｒａｍ集合８４とを比較して、ファイル名８１とファイル名８２の距離を算出する。具体的には、ジョブ管理ノード１００は、同じキー毎に出現回数の差の絶対値を求め、差の絶対値の合計を距離とする。ｔｒｉ−ｇｒａｍ集合８３，８４の間では、「＿＿ａ」、「＿ａｂ」、「ａｂｃ」、「ｂｃｄ」の出現回数は同じである一方、「ｃｄｅ」、「ｃｄｄ」、「ｄｅ＿」、「ｄｄ＿」、「ｅ＿＿」、「ｄ＿＿」の出現回数は１ずつ異なる。よって、ファイル名８１とファイル名８２の距離は「６」と算出される。
【００７０】
また、ジョブ管理ノード１００は、未実行のジョブのｔｒｉ−ｇｒａｍ集合に基づいて閾値を決定する。具体的には、ジョブ管理ノード１００は、未実行のジョブのｔｒｉ−ｇｒａｍ集合に含まれるキーの数を閾値とする。ここでは、ファイル名８１が未実行のジョブのファイル名であり、ファイル名８２が過去のジョブのファイル名であるとする。すると、ｔｒｉ−ｇｒａｍ集合８３に含まれるキーの数である「７」が閾値となる。そして、ジョブ管理ノード１００は、距離が閾値より小さいときに２つのファイル名が類似していると判定する。よって、ファイル名８１とファイル名８２とは類似すると判定される。
【００７１】
上記では各ファイル名から抽出されるｎ−ｇｒａｍ集合を用いて２つのファイル名の距離を算出した。これに対し、他の方法で２つのファイル名の距離を算出するようにしてもよい。例えば、距離の指標としてレーベンシュタイン距離（編集距離）を用いてもよい。レーベンシュタイン距離は、一方の文字列を他方の文字列に変換するのに要する文字編集の最小回数である。１回の文字編集は、１文字の挿入、１文字の削除および１文字の置換の何れかである。例えば、文字列「ａｄ」は、「ｄ」を「ｂ」に置換して「ｃ」を挿入することで、文字列「ａｂｃ」に変換することができる。よって、「ａｄ」と「ａｂｃ」の距離は「２」である。レーベンシュタイン距離は、動的計画法により算出できる。
【００７２】
次に、並列処理システムの機能および処理手順について説明する。
図８は、ログインノードとジョブ管理ノードの機能例を示すブロック図である。
ログインノード２００は、ファイル記憶部２２０およびジョブ受付部２３１を有する。ファイル記憶部２２０は、例えば、ＨＤＤに確保した記憶領域を用いて実装される。ジョブ受付部２３１は、例えば、プログラムモジュールを用いて実装される。
【００７３】
ファイル記憶部２２０は、階層的なディレクトリ構造によって管理されているファイル群を記憶する。ファイル群には、スクリプトファイルやユーザプログラムが含まれる。ファイル記憶部２２０は、ジョブ管理ノード１００からアクセスすることができる。ジョブ受付部２３１は、端末装置３４からスクリプトファイルやユーザプログラムを受信する。ジョブ受付部２３１は、受信したファイル記憶部２２０に格納する。また、ログインノード２００は、端末装置３４からジョブの実行要求を受信する。ログインノード２００は、ジョブの実行要求をジョブ管理ノード１００に通知する。
【００７４】
ジョブ管理ノード１００は、履歴記憶部１２０、消費電力推定部１３１、スケジューリング部１３２および消費電力取得部１３３を有する。履歴記憶部１２０は、例えば、ＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域を用いて実装される。消費電力推定部１３１、スケジューリング部１３２および消費電力取得部１３３は、ＣＰＵ１０１が実行するプログラムモジュールを用いて実装される。
【００７５】
履歴記憶部１２０は、消費電力履歴テーブル１２１を記憶する。消費電力推定部１３１は、ログインノード２００から通知された実行待ちジョブについて、消費電力履歴テーブル１２１を参照して計算ノード１つ当たりの消費電力を推定する。このとき、消費電力推定部１３１は、実行待ちジョブのファイル名と過去ジョブそれぞれのファイル名とを比較して２つのファイル名の距離を算出し、距離が最小の過去ジョブの実績消費電力を推定消費電力として用いる。ただし、距離が閾値未満のジョブが１つも存在しない場合、消費電力推定部１３１は、推定消費電力を予め決めたデフォルト値とする。消費電力推定部１３１は、推定消費電力をスケジューリング部１３２に通知する。
【００７６】
スケジューリング部１３２は、消費電力推定部１３１から推定消費電力を取得し、実行待ちジョブそれぞれの推定消費電力と使用ノード数に基づいてジョブスケジューリングを行う。ジョブスケジューリングは、各時間帯の合計消費電力が所定の上限値を超えないことを条件として、できる限り空き計算ノードが少なくなる（計算ノード４１〜４４の稼働率が高くなる）ように、実行待ちジョブそれぞれに対して１以上の計算ノードが割り当てられる。スケジューリング部１３２は、決定したジョブスケジュールに基づいて計算ノード４１〜４４にユーザプログラムの実行を指示する。
【００７７】
また、スケジューリング部１３２は、あるジョブの実行が完了したことを検出すると、消費電力取得部１３３にジョブ終了を通知する。ジョブの実行が完了したことは、例えば、当該ジョブに割り当てた全ての計算ノードからユーザプログラムの終了の通知を受け取ったことによって検出される。ジョブ終了の通知では、例えば、ジョブの実行に使用したスクリプトファイルのファイル名が通知される。
【００７８】
消費電力取得部１３３は、制御装置５１〜５４から計算ノード４１〜４４の消費電力の情報を取得する。ただし、消費電力取得部１３３は、計算ノード４１〜４４から消費電力の情報を取得してもよい。消費電力の情報は、定期的に取得してもよいし、ジョブの実行期間中だけ当該ジョブに割り当てられた計算ノードから１回または複数回取得してもよい。また、複数回測定した消費電力の情報を計算ノード４１〜４４に溜めておき、溜めた情報を消費電力取得部１３３がジョブ終了時に纏めて取得してもよい。
【００７９】
消費電力取得部１３３は、スケジューリング部１３２からジョブ終了が通知されると消費電力履歴テーブル１２１を更新する。このとき、消費電力取得部１３３は、終了したジョブが使用した１以上の計算ノードを特定し、特定した計算ノードの消費電力の情報に基づいて、消費電力履歴テーブル１２１に登録すべき消費電力を計算する。また、消費電力取得部１３３は、終了したジョブのファイル名からｔｒｉ−ｇｒａｍ集合を生成する。
【００８０】
消費電力履歴テーブル１２１に登録すべき消費電力は、例えば、異なるタイミングで測定された消費電力の平均化や、複数の計算ノードについて測定された消費電力の平均化などを行って算出される平均消費電力である。終了したジョブのファイル名と同一のファイル名が消費電力履歴テーブル１２１に存在しない場合、消費電力取得部１３３は、ファイル名やｔｒｉ−ｇｒａｍや消費電力を含むレコードを消費電力履歴テーブル１２１に追加すればよい。一方、終了したジョブのファイル名と同一のファイル名が消費電力履歴テーブル１２１に存在する場合、消費電力取得部１３３は、複数回のジョブの実行を通した平均消費電力（移動平均や総平均など）を算出して、消費電力の項目を更新する。
【００８１】
図９は、ジョブスケジューリングの手順例を示すフローチャートである。
（Ｓ１０）消費電力推定部１３１は、ジョブ管理ノード１００から認識できるようにマウントされたファイル記憶部２２０からスクリプトファイルを取得する。
【００８２】
（Ｓ１１）消費電力推定部１３１は、ステップＳ１０で取得したスクリプトファイルが格納されているファイルシステム上の場所を示すファイルパスとして、ルートディレクトリからの絶対パスを特定する。消費電力推定部１３１は、ファイルパスからディレクトリ名を除いたファイル名を抽出する。例えば、消費電力推定部１３１は、ファイルパスの末尾から先頭に向かってディレクトリ区切り記号（「／」など）を探し、最初に見つけたディレクトリ区切り記号の１つ後ろの文字から末尾までをファイル名とする。
【００８３】
ただし、消費電力推定部１３１は、ディレクトリ名のうちスクリプトファイルの直上のディレクトリのディレクトリ名のみがファイル名に含まれるように、ファイルパスからファイル名を抽出してもよい。例えば、消費電力推定部１３１は、ファイルパスの末尾から先頭に向かってディレクトリ区切り記号を探し、２番目に見つけたディレクトリ区切り記号の１つ後ろの文字から末尾までをファイル名とする。
【００８４】
（Ｓ１２）消費電力推定部１３１は、ステップＳ１１で抽出したファイル名から、連続する３文字の集合であるｔｒｉ−ｇｒａｍ集合を生成する。ｍ文字のファイル名からはｍ＋２個のｔｒｉ−ｇｒａｍを抽出することができる。また、消費電力推定部１３１は、ここで生成したｔｒｉ−ｇｒａｍ集合に含まれるキーの数（重複を除いたｔｒｉ−ｇｒａｍの種類の数）を閾値Ｔｈとして決定する。
【００８５】
（Ｓ１３）消費電力推定部１３１は、消費電力履歴テーブル１２１に登録された過去ジョブの中から１つ過去ジョブを選択する。
（Ｓ１４）消費電力推定部１３１は、ステップＳ１３で選択した過去ジョブのｔｒｉ−ｇｒａｍ集合を消費電力履歴テーブル１２１から取得する。消費電力推定部１３１は、ステップＳ１２のｔｒｉ−ｇｒａｍ集合（投入ジョブのｔｒｉ−ｇｒａｍ集合）と、ここで取得したｔｒｉ−ｇｒａｍ集合（過去ジョブのｔｒｉ−ｇｒａｍ集合）とを比較する。そして、消費電力推定部１３１は、２つのファイル名の距離ｄを算出する。距離ｄが小さいほど２つのファイル名は類似しており、距離ｄが大きいほど２つのファイル名は類似していないことを示している。例えば、消費電力推定部１３１は、複数のキーそれぞれについて出現回数の差の絶対値を求め、求めた差の絶対値を合計した値を距離ｄとする。
【００８６】
（Ｓ１５）消費電力推定部１３１は、消費電力履歴テーブル１２１に登録された全ての過去ジョブを選択したか判断する。全ての過去ジョブを選択した場合はステップＳ１６に処理が進み、未選択の過去ジョブがある場合はステップＳ１３に処理が進む。
【００８７】
（Ｓ１６）消費電力推定部１３１は、ステップＳ１４で算出した距離ｄのうちの最小値を最小距離ｄminとして特定する。また、消費電力推定部１３１は、最小距離ｄminが算出された過去ジョブを過去ジョブＪminとして特定する。
【００８８】
（Ｓ１７）消費電力推定部１３１は、ステップＳ１６で特定した最小距離ｄminとステップＳ１２で決定した閾値Ｔｈとを比較し、最小距離ｄminが閾値Ｔｈ未満（ｄmin＜Ｔｈ）であるか判断する。最小距離ｄminが閾値Ｔｈ未満である場合はステップＳ１８に処理が進み、最小距離ｄminが閾値Ｔｈ以上である場合はステップＳ１９に処理が進む。
【００８９】
（Ｓ１８）消費電力推定部１３１は、過去ジョブＪminのファイル名は投入ジョブのファイル名に十分類似していると判定する。すると、消費電力推定部１３１は、消費電力履歴テーブル１２１から過去ジョブＪminの消費電力を取得する。消費電力推定部１３１は、投入ジョブの計算ノード１つ当たりの消費電力を過去ジョブＪminの消費電力に等しいと推定する。そして、ステップＳ２０に処理が進む。
【００９０】
（Ｓ１９）消費電力推定部１３１は、ファイル名が投入ジョブと十分類似している過去ジョブは存在しないと判定する。すると、消費電力推定部１３１は、投入ジョブの計算ノード１つ当たりの消費電力を所定のデフォルト値（例えば、１００Ｗなど）と推定する。
【００９１】
（Ｓ２０）スケジューリング部１３２は、ステップＳ１８またはステップＳ１９で推定された消費電力に基づいて、投入ジョブのスケジュールを決定する。このとき、スケジューリング部１３２は、各時間帯において合計消費電力が所定の上限値を超えないように、投入ジョブに割り当てる計算ノードおよび実行開始時刻を決定する。
【００９２】
（Ｓ２１）消費電力取得部１３３は、制御装置５１〜５４から実績消費電力を取得する。上記の投入ジョブの実行が終了すると、消費電力取得部１３３は、測定された実績消費電力から、投入ジョブが使用した計算ノード１つ当たりの平均消費電力を算出する。また、消費電力取得部１３３は、投入ジョブのファイル名からｔｒｉ−ｇｒａｍ集合を生成する。ただし、消費電力取得部１３３は、消費電力推定部１３１からステップＳ１２のｔｒｉ−ｇｒａｍを取得するようにしてもよい。消費電力取得部１３３は、ｔｒｉ−ｇｒａｍ集合や平均消費電力を用いて消費電力履歴テーブル１２１を更新する。
【００９３】
第２の実施の形態の並列処理システムによれば、実行待ちジョブが使用するスクリプトファイルのファイル名と過去ジョブが使用したスクリプトファイルのファイル名との間の距離が算出され、距離が小さい過去ジョブの実績消費電力が参照される。よって、ユーザプログラムの特性の違いが実行待ちジョブの消費電力に与える影響を考慮することができ、実行待ちジョブの消費電力の推定精度が向上する。
【００９４】
また、２つのファイル名が完全一致しなくても部分的な一致度に基づいて、２つのファイル名の距離が算出される。よって、実行待ちジョブのファイル名が並列処理システムにおいて過去に使用されたことがない新規ファイル名である場合であっても、消費電力の推定が可能となる。例えば、シリアル番号や日付やパラメータ値などの可変部分を除いた不変部分の一致度に基づいて、実行待ちジョブと過去ジョブの間の類似度を評価することができる。また、２つのファイル名の距離としてｔｒｉ−ｇｒａｍに基づく距離やレーベンシュタイン距離を用いることで、辞書を使わずに距離を算出することができる。
【００９５】
また、ファイル名にスクリプトファイルの直上の階層のディレクトリ名を含めることで、異なるユーザや異なるグループが各自のスクリプトファイルに類似する名称を偶然付与した場合であっても、これらのジョブを区別することができる。
【符号の説明】
【００９６】
１０  並列処理装置
１１  記憶部
１２  処理部
１３，１３ａ，１３ｂ  ジョブ
１４，１４ａ，１４ｂ  ファイル名
１５，１５ａ，１５ｂ  部分文字列
１６ａ，１６ｂ  実績消費電力
１７ａ，１７ｂ  類似度
１８  消費電力
【図１】
2018084907.tif 000003
【図２】
2018084907.tif 000004
【図３】
2018084907.tif 000005
【図４】
2018084907.tif 000006
【図５】
2018084907.tif 000007
【図６】
2018084907.tif 000008
【図７】
2018084907.tif 000009
【図８】
2018084907.tif 000010
【図９】
2018084907.tif 000011