特許第6799255号(P6799255)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

特許6799255ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法
<>
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000002
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000003
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000004
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000005
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000006
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000007
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000008
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000009
  • 特許6799255-ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6799255
(24)【登録日】2020年11月25日
(45)【発行日】2020年12月16日
(54)【発明の名称】ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法
(51)【国際特許分類】
   G06F 1/28 20060101AFI20201207BHJP
【FI】
   G06F1/28
【請求項の数】4
【全頁数】18
(21)【出願番号】特願2016-226838(P2016-226838)
(22)【出願日】2016年11月22日
(65)【公開番号】特開2018-84907(P2018-84907A)
(43)【公開日】2018年5月31日
【審査請求日】2019年8月7日
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】特許業務法人扶桑国際特許事務所
(72)【発明者】
【氏名】師尾 潤
【審査官】 豊田 真弓
(56)【参考文献】
【文献】 特開2015−049562(JP,A)
【文献】 国際公開第2016/001991(WO,A1)
【文献】 特開2005−148901(JP,A)
【文献】 特開2014−106727(JP,A)
【文献】 特開2014−063540(JP,A)
【文献】 特開2014−136348(JP,A)
【文献】 特開2002−324080(JP,A)
【文献】 特開2005−078612(JP,A)
【文献】 特開2012−033093(JP,A)
【文献】 iPentec,「[C#]ファイルパスからファイル名を取得する」,[online],日本,iPentec.com,2015年 8月19日,URL,https://www.ipentec.com/document/csharp-get-file-name-from-full-path
【文献】 popopompom, temtecomai2,「フルパスから最後のディレクトリ名を取得したい」,[online],日本,NTT Resonant Inc.,2006年 4月 6日,URL,https://oshiete.goo.ne.jp/qa/2076181.html
(58)【調査した分野】(Int.Cl.,DB名)
G06F 1/28
(57)【特許請求の範囲】
【請求項1】
コンピュータに、
第1のジョブの起動に使用する第1のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分であり、前記第1のファイルの直上の階層のディレクトリを示す第1のディレクトリ名を含む第1のファイル名を抽出し、
実行済みである複数の第2のジョブそれぞれに対して、当該第2のジョブの起動に使用した第2のファイルに対応し、前記第2のファイルの直上の階層のディレクトリを示す第2のディレクトリ名を含む第2のファイル名に含まれる部分文字列と前記第1のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、
前記類似度に応じて、前記複数の第2のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも1つの第2のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第1のジョブの消費電力を推定する、
処理を実行させるジョブ消費電力推定プログラム。
【請求項2】
前記類似度の算出では、前記第1のファイル名に含まれる連続するn文字(nは2以上の整数)の集合と前記第2のファイル名に含まれる連続するn文字の集合とを比較する、
請求項1記載のジョブ消費電力推定プログラム。
【請求項3】
実行済みである複数の第2のジョブそれぞれについて、当該第2のジョブの起動に使用した第2のファイルに対応し、前記第2のファイルの直上の階層のディレクトリを示す第2のディレクトリ名を含む第2のファイル名または前記第2のファイル名に含まれる部分文字列と、当該第2のジョブの実績消費電力とを示す履歴情報を記憶する記憶部と、
第1のジョブの起動に使用する第1のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分であり、前記第1のファイルの直上の階層のディレクトリを示す第1のディレクトリ名を含む第1のファイル名を抽出し、前記複数の第2のジョブそれぞれに対して、前記第2のファイル名に含まれる部分文字列と前記第1のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、前記類似度に応じて前記履歴情報の中から少なくとも1つの第2のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第1のジョブの消費電力を推定する処理部と、
を有する並列処理装置。
【請求項4】
コンピュータが実行するジョブ消費電力推定方法であって、
第1のジョブの起動に使用する第1のファイルの格納場所を示すファイルパスから、前記ファイルパスの一部分であり、前記第1のファイルの直上の階層のディレクトリを示す第1のディレクトリ名を含む第1のファイル名を抽出し、
実行済みである複数の第2のジョブそれぞれに対して、当該第2のジョブの起動に使用した第2のファイルに対応し、前記第2のファイルの直上の階層のディレクトリを示す第2のディレクトリ名を含む第2のファイル名に含まれる部分文字列と前記第1のファイル名に含まれる部分文字列との比較に基づいて類似度を算出し、
前記類似度に応じて、前記複数の第2のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも1つの第2のジョブの実績消費電力を取得し、前記取得した実績消費電力に基づいて前記第1のジョブの消費電力を推定する、
ジョブ消費電力推定方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法に関する。
【背景技術】
【0002】
ネットワークに接続された複数のコンピュータ(計算ノードと言うことがある)を有しており、これら複数の計算ノードを並列に動作させて大規模計算を行うことができる並列処理システムが利用されている。並列処理システムに対しては、1以上のユーザから適宜ジョブが投入される。ジョブ投入時には、起動させるユーザプログラムのファイル名などの起動情報が指定され、使用ノード数などの実行条件が更に指定されることがある。並列処理システムは、指定された実行条件を考慮して、投入された複数のジョブそれぞれに対して1以上の計算ノードを割り当てる「ジョブスケジューリング」を行う。
【0003】
なお、複数のオペレータに作業を割り当てる管理サーバが提案されている。提案の管理サーバは、新規作業が発生するとその新規作業と類似する既存作業を検索し、類似する既存作業を割り当てたオペレータに対して優先的にその新規作業を割り当てる。類似度を算出するために、管理サーバは、既存作業に関する文字情報と新規作業に関する文字情報とを取得する。管理サーバは、形態素解析により文字情報から単語を抽出し、既存作業と新規作業との間で共通して出現する単語の割合に基づいて類似度を算出する。または、管理サーバは、n−gram法や編集距離法などにより類似度を算出する。
【0004】
また、新規ジョブのリソース使用量を推定する並列処理システムが提案されている。提案の並列処理システムは、実行済みジョブについてジョブ属性とリソース使用状況とを含む実行履歴を保存しておく。並列処理システムは、新規ジョブとジョブ属性が類似する実行済みジョブを検索し、類似する実行済みジョブのリソース使用状況に基づいて新規ジョブのリソース使用量を推定する。ジョブ属性にはプログラム名が含まれている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】国際公開第2013/128555号
【特許文献2】特開2016−42284号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、計算ノードの使用率(何れかのジョブに割り当てられており空いていない計算ノードの割合)が高くなるほど、並列処理システムの消費電力は大きくなる。一方、設備上の理由や経済的理由などにより、並列処理システムが電力を無制限に使用できるわけではない。そこで、並列処理システムはジョブスケジューリングにおいて、合計消費電力が上限値を超えないように、同時実行するジョブの組み合わせを調整することが好ましい。このとき、並列処理システムは、実行前にジョブの消費電力を推定することになる。
【0007】
しかし、各ジョブの消費電力は、使用ノード数に加えて起動するユーザプログラムの特性にも依存する。例えば、ジョブの消費電力は、メモリアクセス頻度やディスクアクセス頻度や通信頻度に依存することがあり、また、ユーザプログラムのパイプライン処理効率やSIMD(Single Instruction Multiple Data)化率に依存することがある。また、並列処理システムには、同じプログラム名を指定したジョブが反復して投入されるとは限らず、プログラム名を少しずつ代えながらジョブが投入されることがある。そのため、実行前にジョブの消費電力をどのように推定すればよいかが問題となる。
【0008】
1つの側面では、本発明は、ジョブ消費電力の推定精度が向上するジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
1つの態様では、コンピュータに以下の処理を実行させるジョブ消費電力推定プログラムが提供される。第1のジョブの起動に使用する第1のファイルの格納場所を示すファイルパスから、ファイルパスの一部分である第1のファイル名を抽出する。実行済みである複数の第2のジョブそれぞれに対して、当該第2のジョブの起動に使用した第2のファイルに対応する第2のファイル名に含まれる部分文字列と第1のファイル名に含まれる部分文字列との比較に基づいて類似度を算出する。類似度に応じて、複数の第2のジョブそれぞれの実績消費電力を示す履歴情報の中から少なくとも1つの第2のジョブの実績消費電力を取得し、取得した実績消費電力に基づいて第1のジョブの消費電力を推定する。
【0010】
また、1つの態様では、記憶部と処理部とを有する並列処理装置が提供される。また、1つの態様では、コンピュータが実行するジョブ消費電力推定方法が提供される。
【発明の効果】
【0011】
1つの側面では、ジョブ消費電力の推定精度が向上する。
【図面の簡単な説明】
【0012】
図1】第1の実施の形態の並列処理システムの例を示す図である。
図2】第2の実施の形態の並列処理システムの例を示す図である。
図3】ジョブ管理ノードのハードウェア例を示すブロック図である。
図4】ジョブスケジューリング例を示す図である。
図5】ファイルシステムのディレクトリ構造の例を示す図である。
図6】消費電力履歴テーブルの例を示す図である。
図7】ファイル名類似度の判定例を示す図である。
図8】ログインノードとジョブ管理ノードの機能例を示すブロック図である。
図9】ジョブスケジューリングの手順例を示すフローチャートである。
【発明を実施するための形態】
【0013】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0014】
図1は、第1の実施の形態の並列処理システムの例を示す図である。
第1の実施の形態の並列処理システムは、並列処理装置10を含む。並列処理装置10は、複数の計算ノードを利用した並列分散処理を制御する。並列処理装置10の中に計算ノードが含まれてもよいし、並列処理装置10の外部に計算ノードが存在してもよい。
【0015】
並列処理装置10は、1以上の計算ノードを使用して情報処理を行うジョブの消費電力を、そのジョブの実行前に推定する。推定した消費電量はジョブスケジューリングに利用されてもよい。例えば、並列処理装置10は、ジョブの実行要求を受け付け、推定した消費電力を考慮して、受け付けた各ジョブに対して1以上の計算ノードを割り当てる。この場合、並列処理装置10は、各時間帯の並列処理システムの合計消費電力が所定の上限値を超えないようにジョブスケジューリングを行うことが好ましい。
【0016】
ここで、各ジョブの消費電力は、使用ノード数およびユーザプログラムの特性に依存する。ユーザプログラムの特性には、メモリアクセス頻度、ディスクアクセス頻度、通信頻度、パイプライン処理効率、SIMD化率などが含まれる。そこで、並列処理装置10は、以下のようにして各ジョブの消費電力を推定する。
【0017】
並列処理装置10は、記憶部11および処理部12を有する。記憶部11は、例えば、RAM(Random Access Memory)などの揮発性の記憶装置、または、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性の記憶装置である。処理部12は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリに記憶されたプログラムを実行する。例えば、プロセッサは、ジョブ消費電力推定プログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
【0018】
記憶部11は、実行済みのジョブ13a,13bに関する履歴情報を記憶する。履歴情報は、ファイル名14a,14bまたはファイル名14a,14bから抽出された部分文字列15a,15bと、実績消費電力16a,16bとを含む。ファイル名14a、部分文字列15aおよび実績消費電力16aはジョブ13aに対応し、ファイル名14b、部分文字列15bおよび実績消費電力16bはジョブ13bに対応する。
【0019】
ファイル名14aは、ジョブ13aの起動に使用したファイルの格納場所を示すファイルパスの一部分である。ファイル名14bは、ジョブ13bの起動に使用したファイルの格納場所を示すファイルパスの一部分である。ファイルは、例えば、実行条件や実行手順などを記述したスクリプトファイルである。ただし、ファイルは、ユーザプログラムを記述したプログラムファイルでもよい。ファイル名14a,14bは、例えば、「aaa.sh」のように、ディレクトリ名を含まないファイル本体の名称である。ただし、ファイル名14a,14bは、「user/aaa.sh」のように、ファイルの直上のディレクトリを示すディレクトリ名とファイル本体の名称とを結合したものでもよい。
【0020】
部分文字列15aは、ファイル名14aを示す文字列の一部分である。部分文字列15bは、ファイル名14bを示す文字列の一部分である。部分文字列15a,15bは、例えば、連続するn文字(nは2以上の整数)を示すn−gramである。通常、1つのファイル名からは複数の部分文字列が抽出される。その場合、ジョブ13a,13bそれぞれに対して部分文字列の集合が対応付けられる。
【0021】
実績消費電力16aは、例えば、ジョブ13aの実行中に測定された、ジョブ13aに割り当てられた計算ノードの消費電力である。実績消費電力16bは、例えば、ジョブ13bの実行中に測定された、ジョブ13bに割り当てられた計算ノードの消費電力である。実績消費電力は、プロセッサの消費電力やメモリの消費電力を含んでもよい。また、実績消費電力16a,16bは、ジョブ実行期間中の平均消費電力でもよいし、ジョブ実行期間中の特定時点での消費電力でもよい。また、実績消費電力16a,16bは、2以上の計算ノードが使用された場合、計算ノード1つ当たりの平均消費電力でもよい。また、実績消費電力16a,16bは、ファイル名が同じファイルに基づくジョブが複数回実行された場合、複数回の実行を通じた平均消費電力でもよい。
【0022】
処理部12は、未実行のジョブ13を検出する。すると、処理部12は、ジョブ13の起動に使用するファイルの格納場所を示すファイルパスから、ファイルパスの一部分であるファイル名14を抽出する。ファイルは、スクリプトファイルでもよいしプログラムファイルでもよい。ファイル名14は、ファイル本体の名称でもよいし、直上のディレクトリ名とファイル本体の名称とを結合したものでもよい。処理部12は、ファイル名14を示す文字列の一部分である部分文字列15を抽出する。部分文字列15は、例えば、n−gramである。ファイル名14から部分文字列の集合が抽出されてもよい。
【0023】
処理部12は、履歴情報が示すジョブ13aに対して、部分文字列15aと部分文字列15との比較に基づいて類似度17aを算出する。また、処理部12は、履歴情報が示すジョブ13bに対して、部分文字列15bと部分文字列15との比較に基づいて類似度17bを算出する。部分文字列の比較は、一致する部分文字列の個数を算出することを含んでもよい。類似度17aは、ファイル名14aとファイル名14の間の類似度を示す。類似度17bは、ファイル名14bとファイル名14の間の類似度を示す。類似度17a,17bは、2つのファイル名が完全一致しているか否かを示す2値指標ではなく、部分的な一致の程度を示す多値指標である。類似度17a,17bを示す指標として、例えば、2つのファイル名の間の距離が用いられる。距離の指標値が小さいほど2つのファイル名は類似しており、距離の指標値が大きいほど2つのファイル名は類似していない。
【0024】
処理部12は、類似度17a,17bに応じて、履歴情報の中から少なくとも1つの実行済みジョブの実績消費電力を取得する。例えば、処理部12は、類似度が最も高い実行済みジョブの実績消費電力を取得する。ここでは、ジョブ13aに対応する実績消費電力16aが取得されたとする。そして、処理部12は、取得した実績消費電力16aに基づいて、未実行のジョブ13の消費電力18を推定する。例えば、処理部12は、実績消費電力16aをジョブ13の消費電力18であるとみなす。
【0025】
第1の実施の形態の並列処理システムによれば、未実行のジョブ13の起動に使用するファイルの格納場所を示すファイルパスからファイル名14が抽出される。実行済みのジョブ13a,13bに対して、ファイル名14a,14bに含まれる部分文字列15a,15bとファイル名14に含まれる部分文字列15との比較に基づいて類似度17a,17bが算出される。そして、類似度17a,17bに応じて少なくとも1つのジョブの実績消費電力が取得され、取得した実績消費電力に基づいて消費電力18が推定される。
【0026】
これにより、使用ノード数のみから消費電力18を推定する場合と比べて、ユーザプログラムの特性の違いが消費電力18に与える影響を考慮することができる。また、ファイル名14が何れの過去ジョブのファイル名とも完全一致しない場合であっても、ユーザプログラムの特性が近い過去ジョブを検索することができる。
【0027】
例えば、あるユーザが、ユーザプログラムを微修正しながらジョブを繰り返し実行させる場合や、ユーザプログラムに与えるパラメータ値を変えながらジョブを繰り返し実行させる場合が考えられる。このとき、ユーザプログラムのバージョンやパラメータ値の違いを区別できるようにファイル名の一部分が変更されることがある。この場合、ファイル名には、変化しない基幹部分と、シリアル番号や日付やパラメータ値などを示す可変部分とが含まれることが多い。よって、情報処理の内容が極めて近いジョブの間でもファイル名が完全一致するとは限らない。これに対し、ファイル名の部分一致を判定することで、類似する過去ジョブを検索できる。その結果、ジョブ消費電力の推定精度が向上する。
【0028】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の並列処理システムの例を示す図である。
【0029】
第2の実施の形態の並列処理システムは、端末装置34、計算ノード41〜44、制御装置51〜54、ジョブ管理ノード100およびログインノード200を有する。ジョブ管理ノード100は、第1の実施の形態の並列処理装置10の一例である。
【0030】
計算ノード41〜44、ジョブ管理ノード100およびログインノード200は、ネットワーク31に接続されている。ネットワーク31は、例えば、データ通信用のローカルネットワークである。端末装置34は、ネットワーク33に接続されている。ネットワーク33は、例えば、インターネットなどの広域ネットワークである。制御装置51〜54およびジョブ管理ノード100は、ネットワーク32に接続されている。ネットワーク32は、例えば、管理用のローカルネットワークである。制御装置51は計算ノード41に接続され、制御装置52は計算ノード42に接続され、制御装置53は計算ノード43に接続され、制御装置54は計算ノード44に接続されている。
【0031】
端末装置34は、ユーザが使用するクライアントコンピュータである。端末装置34は、ネットワーク33およびネットワーク31を介してログインノード200にアクセスすることができる。端末装置34は、ジョブの情報を記述したスクリプトファイルやユーザプログラムをログインノード200に送信し、ジョブの実行をログインノード200に要求する。スクリプトファイルには、ジョブの実行条件や実行手順などが記述される。例えば、スクリプトファイルには、使用する計算ノードの数や実行するユーザプログラムのファイル名などが記述されている。ただし、使用する計算ノードの数は、スクリプトファイルとは別に端末装置34からログインノード200に通知されてもよい。
【0032】
計算ノード41〜44は、ユーザプログラムを並列に実行するサーバコンピュータである。1つの時間帯において1つの計算ノードは高々1つのジョブに割り当てられる。ジョブが完了すると当該ジョブに割り当てられていた計算ノードは解放される。ジョブの実行に用いるユーザプログラムは、例えば、ジョブ管理ノード100から計算ノード41〜44に送信される。ただし、計算ノード41〜44がジョブ管理ノード100からの指示に応じて、ログインノード200からユーザプログラムを取得してもよい。
【0033】
制御装置51〜54は、ジョブ管理ノード100からの指示に応じて、接続されている計算ノードの電源のオン/オフを制御する。制御装置51〜54は、ジョブ管理ノード100から起動指示を受け付けると、接続されている計算ノードの電源をオフからオンに変更する。また、制御装置51〜54は、ジョブ管理ノード100から停止指示を受け付けると、接続されている計算ノードの電源をオンからオフに変更する。また、制御装置51〜54は、接続されている計算ノードの消費電力を測定し、測定した消費電力をネットワーク32を介して定期的にジョブ管理ノード100に通知する。
【0034】
すなわち、制御装置51は計算ノード41の電源を管理し、計算ノード41の消費電力を測定する。制御装置52は計算ノード42の電源を管理し、計算ノード42の消費電力を測定する。制御装置53は計算ノード43の電源を管理し、計算ノード43の消費電力を測定する。制御装置54は計算ノード44の電源を管理し、計算ノード44の消費電力を測定する。制御装置51〜54が測定する消費電力は、接続されている計算ノード全体の消費電力であり、プロセッサやメモリやファンなどの消費電力を含んでいる。
【0035】
ただし、制御装置51〜54によって測定された消費電力は、計算ノード41〜44およびネットワーク31を介してジョブ管理ノード100に通知されてもよい。また、制御装置51〜54が消費電力を測定する代わりに、計算ノード41〜44に組み込まれた電力測定部品を用いて計算ノード41〜44が消費電力を測定してもよい。計算ノード41〜44がプロセッサやメモリなど構成部品毎に消費電力を測定している場合、それら構成部品毎の消費電力を合計した値を計算ノード全体の消費電力とすればよい。
【0036】
ジョブ管理ノード100は、1以上のジョブに計算ノード41〜44を割り振るジョブスケジューリングを行うサーバコンピュータである。ジョブ管理ノード100には、ログインノード200が有する記憶装置が論理的にマウントされている。すなわち、ジョブ管理ノード100は、ログインノード200が有する記憶装置の記憶領域を、ジョブ管理ノード100が管理する記憶領域の一部として仮想的に認識する。よって、ジョブ管理ノード100は、ユーザがログインノード200に書き込んだスクリプトファイルやユーザプログラムを、ジョブ管理ノード100のファイルシステム上で認識することができる。
【0037】
ジョブ管理ノード100は、実行待ちの各ジョブが要求する計算ノード数に基づいて、計算ノード41〜44の使用率が高くなるようにジョブスケジューリングを行う。ただし、ジョブ管理ノード100は、計算ノード41〜44全体の消費電力が所定の上限値を超えないようにジョブスケジューリングを行う。このとき、ジョブ管理ノード100は、実行待ちの各ジョブについて、計算ノード1つ当たりの消費電力の推定値を算出し、計算ノード1つ当たりの消費電力に計算ノード数をかけて当該ジョブの消費電力を推定する。
【0038】
ジョブ管理ノード100は、割り当てた計算ノードに対して、ログインノード200に記憶されているユーザプログラムを送信する。または、ジョブ管理ノード100は、割り当てた計算ノードに対して、ログインノード200のルートディレクトリまたは特定の下位ディレクトリを一時的にマウントし、計算ノード41〜44がログインノード200からユーザプログラムを取得できるようにする。ジョブ管理ノード100は、割り当てた計算ノードに対してユーザプログラムを起動させるコマンドを送信する。
【0039】
ログインノード200は、ユーザからジョブの実行要求を受け付ける窓口となるサーバコンピュータである。ログインノード200は、端末装置34から受信したスクリプトファイルやユーザプログラムを、ログインノード200が有する記憶装置に格納する。ログインノード200は、ジョブ管理ノード100にジョブ要求を通知する。
【0040】
図3は、ジョブ管理ノードのハードウェア例を示すブロック図である。
ジョブ管理ノード100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107,108を有する。上記ユニットはバスに接続される。RAM102またはHDD103は、第1の実施の形態の記憶部11の一例である。CPU101は、第1の実施の形態の処理部12の一例である。
【0041】
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、ジョブ管理ノード100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。複数のプロセッサの集合を「マルチプロセッサ」または「プロセッサ」と言うことがある。
【0042】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、ジョブ管理ノード100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0043】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムにはジョブ消費電力推定プログラムが含まれる。なお、ジョブ管理ノード100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0044】
画像信号処理部104は、CPU101からの命令に従って、ジョブ管理ノード100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
【0045】
入力信号処理部105は、ジョブ管理ノード100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、ジョブ管理ノード100に複数の種類の入力デバイスが接続されていてもよい。
【0046】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0047】
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0048】
通信インタフェース107は、ネットワーク31に接続され、ネットワーク31を介してログインノード200や計算ノード41〜44と通信するインタフェースである。通信インタフェース108は、ネットワーク32に接続され、ネットワーク32を介して制御装置51〜54と通信するインタフェースである。通信インタフェース107,108は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【0049】
端末装置34、計算ノード41〜44およびログインノード200も、ジョブ管理ノード100と同様のハードウェアを用いて実装することができる。ただし、計算ノード41〜44はそれぞれ、制御装置と接続されるインタフェースを有している。
【0050】
次に、ジョブスケジューリングとジョブ消費電力の推定について説明する。
図4は、ジョブスケジューリング例を示す図である。
ここでは、同一または異なるユーザからジョブ61〜66が投入され、投入されたジョブ61〜66が実行待ちである場合を考える。
【0051】
ジョブ61(ジョブA)は、2個の計算ノードを1単位時間だけ使用する予定である。ジョブ62(ジョブB)は、2個の計算ノードを1単位時間だけ使用する予定である。ジョブ63(ジョブC)は、1個の計算ノードを3単位時間だけ使用する予定である。ジョブ64(ジョブD)は、2個の計算ノードを1単位時間だけ使用する予定である。ジョブ65(ジョブE)は、1個の計算ノードを2単位時間だけ使用する予定である。ジョブ66(ジョブF)は、3個の計算ノードを1単位時間だけ使用する予定である。
【0052】
ジョブ管理ノード100は、このような実行条件に基づいて、ジョブ61〜66に計算ノードおよび時間帯を割り当てる。例えば、ジョブ61に、時間帯t1の計算ノード43,44が割り当てられる。ジョブ62に、時間帯t1の計算ノード41,42が割り当てられる。ジョブ63に、時間帯t2〜t4の計算ノード44が割り当てられる。ジョブ64に、時間帯t2の計算ノード42,43が割り当てられる。ジョブ65に、時間帯t2,t3の計算ノード41が割り当てられる。ジョブ66に、時間帯t4の計算ノード41〜43が割り当てられる。並列処理システムのスループットを大きくするため、空きノードが少なくなるようにジョブスケジューリングを行うことが好ましい。
【0053】
ただし、時間帯t1〜t4それぞれにおいて計算ノード41〜44の消費電力の合計が所定の上限値を超えないことを条件とする。時間帯t1では、ジョブ61,62の消費電力の合計が上限値を超えないことが条件である。時間帯t2では、ジョブ63,64,65の消費電力の合計が上限値を超えないことが条件である。時間帯t3では、ジョブ63,65の消費電力の合計が上限値を超えないことが条件である。時間帯t4では、ジョブ63,66の消費電力の合計が上限値を超えないことが条件である。
【0054】
ジョブ管理ノード100は、ジョブ61〜66それぞれの計算ノード1つ当たりの消費電力を、類似する過去ジョブの計算ノード1つ当たりの消費電力の実績値から推定する。ジョブ61〜66それぞれの消費電力は、計算ノード1つ当たりの消費電力に計算ノード数をかけることで算出できる。第2の実施の形態では、類似する過去ジョブをファイル名が類似するジョブとする。ファイル名として、ディレクトリ名を含まないジョブスクリプト名か、または、直上の階層のディレクトリ名とジョブスクリプト名とを結合した名称を用いる。類似度の指標としては、文字列の部分的な一致度を反映した指標を用いる。
【0055】
図5は、ファイルシステムのディレクトリ構造の例を示す図である。
ログインノード200は、階層構造のファイルシステムによってスクリプトファイルを管理している。ディレクトリ71は、ルートディレクトリの直下にあるディレクトリである。ディレクトリ71のディレクトリ名は「home」である。ディレクトリ72,73は、ディレクトリ71の直下にあるディレクトリである。ディレクトリ72のディレクトリ名は「user1」、ディレクトリ73のディレクトリ名は「user2」である。
【0056】
スクリプトファイル74,75は、ディレクトリ72の直下に格納されている。スクリプトファイル74のスクリプトファイル名は「abcabc.sh」、スクリプトファイル75のスクリプトファイル名は「abcnnn.sh」である。スクリプトファイル76,77は、ディレクトリ73の直下に格納されている。スクリプトファイル76のスクリプトファイル名は「NB−p=20,q=20.sh」、スクリプトファイル77のスクリプトファイル名は「NB−p=25,q=20.sh」である。
【0057】
スクリプトファイル74のファイルパスは「/home/user1/abcabc.sh」になる。スクリプトファイル75のファイルパスは「/home/user1/abcnnn.sh」になる。スクリプトファイル76のファイルパスは「/home/user2/NB−p=20,q=20.sh」になる。スクリプトファイル77のファイルパスは「/home/user2/NB−p=25,q=20.sh」になる。
【0058】
ここで、ファイルシステムのディレクトリ構造やディレクトリ名は、並列処理システムの管理者が定めるシステム運用方針に従う。ただし、スクリプトファイルの直上のディレクトリは、ログインアカウント名、研究グループ名、組織名などのユーザ識別名が使われることが多い。この場合、端末装置34のユーザは、自身に割り当てられたディレクトリの直下にスクリプトファイルを格納することが多い。例えば、スクリプトファイル74,75はユーザuser1によって作成されたスクリプトファイルであり、スクリプトファイル76,77はユーザuser2によって作成されたスクリプトファイルである。
【0059】
また、情報処理内容が類似するジョブを複数回投入するユーザは、変化しない基幹部分とジョブ毎に異なる可変部分とを含むスクリプトファイル名を使用することが多い。可変部分には、ユーザが決めたシリアル番号、ジョブを実行する日付、ユーザプログラムに与えるパラメータ値などが使用される。例えば、スクリプトファイル76のスクリプトファイル名のうち、「NB」が基幹部分であり、「p=20,q=20」が可変部分である。また、スクリプトファイル77のスクリプトファイル名のうち、「NB」が基幹部分であり、「p=25,q=20」が可変部分である。
【0060】
ここで、ジョブ管理ノード100は、ジョブの類似度を判定するためにファイル名を使用する。使用するファイル名は、ディレクトリ名を含まないスクリプトファイル名、または、スクリプトファイルの直上のディレクトリ名とスクリプトファイル名の結合である。
【0061】
よって、スクリプトファイル74を用いるジョブについては、「abcabc.sh」または「user1/abcabc.sh」が使用される。スクリプトファイル75を用いるジョブについては、「abcnnn.sh」または「user1/abcnnn.sh」が使用される。スクリプトファイル76を用いるジョブについては、「NB−q=20,q=20.sh」または「user2/NB−q=20,q=20.sh」が使用される。スクリプトファイル77を用いるジョブについては、「NB−q=25,q=20.sh」または「user2/NB−q=25,q=20.sh」が使用される。
【0062】
ジョブ管理ノード100は、2つのファイル名の間の部分的な一致度を考慮して2つのファイル名の「距離」を算出する。ジョブ管理ノード100は、距離が閾値未満である2つのファイル名を類似していると判定する。第2の実施の形態では、2つのファイル名の距離を、tri−gram(3−gram)の集合を用いて算出する。tri−gramは、ファイル名に含まれる連続する3文字である。ただし、ファイル名の前後にそれぞれ2文字の空白(スペース)が存在していると仮定する。よって、m文字のファイル名からはm+2個のtri−gramを抽出することができる。
【0063】
なお、tri−gramに代えて、bi−gram(2−gram)、4−gram、5−gramなどを用いてもよい。n−gramを使用する場合、ファイル名の前後にはそれぞれn−1個の空白が存在するものと仮定する。ファイル名に直上のディレクトリ名が含まれている場合、「/」などのディレクトリ区切り記号を含めてn−gramを生成してもよいし、ディレクトリ区切り記号を除外してn−gramを生成してもよい。
【0064】
図6は、消費電力履歴テーブルの例を示す図である。
ジョブ管理ノード100は、消費電力履歴テーブル121を保持する。消費電力履歴テーブル121は、ファイル名、tri−gramおよび消費電力の項目を有する。
【0065】
ファイル名の項目には、過去に実行されたジョブで使用されたスクリプトファイルについて、ディレクトリ名を含まないスクリプトファイル名、または、直上のディレクトリ名とスクリプトファイル名とを結合した名称が登録される。図6では、ファイル名が、ディレクトリ名を含まないスクリプトファイル名であることを想定している。
【0066】
tri−gramの項目には、ファイル名から抽出されたtri−gramの集合が登録される。具体的には、tri−gramの項目には、tri−gramの種類(キー)とその個数の組が、キーの数だけ列挙される。検索を容易にするため、キーは昇順にソートされている。例えば、「abcabc.sh」からは、「__a」が1個、「_ab」が1個、「.sh」が1個、「abc」が2個、「bc.」が1個、「bca」が1個、「c.s」が1個、「cab」が1個、「h__」が1個、「sh_」が1個抽出される。tri−gramの中の「_」は空白を表している。なお、tri−gramはファイル名から生成可能であるため、消費電力履歴テーブル121にはファイル名とtri−gramの何れか一方のみ登録するようにしてもよい。
【0067】
消費電力の項目には、ジョブ実行時に測定された消費電力の実績値が登録される。1つのジョブの実行期間中に消費電力が複数回測定された場合、消費電力履歴テーブル121に登録される消費電力は、複数回測定された消費電力の平均値である。また、1つのジョブが複数の計算ノードを使用した場合、消費電力履歴テーブル121に登録される消費電力は、計算ノード1つ当たりの平均消費電力である。また、ファイル名が同じジョブが複数回実行された場合、消費電力履歴テーブル121に登録される消費電力は、複数回のジョブの消費電力を平均化した平均消費電力である。例えば、ファイル名「abcabc.sh」に対して、消費電力「120W」が登録される。
【0068】
図7は、ファイル名類似度の判定例を示す図である。
ここでは、ファイル名81とファイル名82とが類似しているか否か判定する場合を考える。ファイル名81は「abcde」であり、ファイル名82は「abcdd」である。ファイル名81からはtri−gram集合83が生成される。ファイル名82からはtri−gram集合84が生成される。tri−gram集合83は、「__a」、「_ab」、「abc」、「bcd」、「cde」「de_」、「e__」というキーを含む。これらキーの出現回数は1回ずつである。tri−gram集合84は、「__a」、「_ab」、「abc」、「bcd」、「cdd」、「dd_」、「d__」というキーを含む。これらキーの出現回数は1回ずつである。
【0069】
ジョブ管理ノード100は、tri−gram集合83とtri−gram集合84とを比較して、ファイル名81とファイル名82の距離を算出する。具体的には、ジョブ管理ノード100は、同じキー毎に出現回数の差の絶対値を求め、差の絶対値の合計を距離とする。tri−gram集合83,84の間では、「__a」、「_ab」、「abc」、「bcd」の出現回数は同じである一方、「cde」、「cdd」、「de_」、「dd_」、「e__」、「d__」の出現回数は1ずつ異なる。よって、ファイル名81とファイル名82の距離は「6」と算出される。
【0070】
また、ジョブ管理ノード100は、未実行のジョブのtri−gram集合に基づいて閾値を決定する。具体的には、ジョブ管理ノード100は、未実行のジョブのtri−gram集合に含まれるキーの数を閾値とする。ここでは、ファイル名81が未実行のジョブのファイル名であり、ファイル名82が過去のジョブのファイル名であるとする。すると、tri−gram集合83に含まれるキーの数である「7」が閾値となる。そして、ジョブ管理ノード100は、距離が閾値より小さいときに2つのファイル名が類似していると判定する。よって、ファイル名81とファイル名82とは類似すると判定される。
【0071】
上記では各ファイル名から抽出されるn−gram集合を用いて2つのファイル名の距離を算出した。これに対し、他の方法で2つのファイル名の距離を算出するようにしてもよい。例えば、距離の指標としてレーベンシュタイン距離(編集距離)を用いてもよい。レーベンシュタイン距離は、一方の文字列を他方の文字列に変換するのに要する文字編集の最小回数である。1回の文字編集は、1文字の挿入、1文字の削除および1文字の置換の何れかである。例えば、文字列「ad」は、「d」を「b」に置換して「c」を挿入することで、文字列「abc」に変換することができる。よって、「ad」と「abc」の距離は「2」である。レーベンシュタイン距離は、動的計画法により算出できる。
【0072】
次に、並列処理システムの機能および処理手順について説明する。
図8は、ログインノードとジョブ管理ノードの機能例を示すブロック図である。
ログインノード200は、ファイル記憶部220およびジョブ受付部231を有する。ファイル記憶部220は、例えば、HDDに確保した記憶領域を用いて実装される。ジョブ受付部231は、例えば、プログラムモジュールを用いて実装される。
【0073】
ファイル記憶部220は、階層的なディレクトリ構造によって管理されているファイル群を記憶する。ファイル群には、スクリプトファイルやユーザプログラムが含まれる。ファイル記憶部220は、ジョブ管理ノード100からアクセスすることができる。ジョブ受付部231は、端末装置34からスクリプトファイルやユーザプログラムを受信する。ジョブ受付部231は、受信したファイル記憶部220に格納する。また、ログインノード200は、端末装置34からジョブの実行要求を受信する。ログインノード200は、ジョブの実行要求をジョブ管理ノード100に通知する。
【0074】
ジョブ管理ノード100は、履歴記憶部120、消費電力推定部131、スケジューリング部132および消費電力取得部133を有する。履歴記憶部120は、例えば、RAM102またはHDD103に確保した記憶領域を用いて実装される。消費電力推定部131、スケジューリング部132および消費電力取得部133は、CPU101が実行するプログラムモジュールを用いて実装される。
【0075】
履歴記憶部120は、消費電力履歴テーブル121を記憶する。消費電力推定部131は、ログインノード200から通知された実行待ちジョブについて、消費電力履歴テーブル121を参照して計算ノード1つ当たりの消費電力を推定する。このとき、消費電力推定部131は、実行待ちジョブのファイル名と過去ジョブそれぞれのファイル名とを比較して2つのファイル名の距離を算出し、距離が最小の過去ジョブの実績消費電力を推定消費電力として用いる。ただし、距離が閾値未満のジョブが1つも存在しない場合、消費電力推定部131は、推定消費電力を予め決めたデフォルト値とする。消費電力推定部131は、推定消費電力をスケジューリング部132に通知する。
【0076】
スケジューリング部132は、消費電力推定部131から推定消費電力を取得し、実行待ちジョブそれぞれの推定消費電力と使用ノード数に基づいてジョブスケジューリングを行う。ジョブスケジューリングは、各時間帯の合計消費電力が所定の上限値を超えないことを条件として、できる限り空き計算ノードが少なくなる(計算ノード41〜44の稼働率が高くなる)ように、実行待ちジョブそれぞれに対して1以上の計算ノードが割り当てられる。スケジューリング部132は、決定したジョブスケジュールに基づいて計算ノード41〜44にユーザプログラムの実行を指示する。
【0077】
また、スケジューリング部132は、あるジョブの実行が完了したことを検出すると、消費電力取得部133にジョブ終了を通知する。ジョブの実行が完了したことは、例えば、当該ジョブに割り当てた全ての計算ノードからユーザプログラムの終了の通知を受け取ったことによって検出される。ジョブ終了の通知では、例えば、ジョブの実行に使用したスクリプトファイルのファイル名が通知される。
【0078】
消費電力取得部133は、制御装置51〜54から計算ノード41〜44の消費電力の情報を取得する。ただし、消費電力取得部133は、計算ノード41〜44から消費電力の情報を取得してもよい。消費電力の情報は、定期的に取得してもよいし、ジョブの実行期間中だけ当該ジョブに割り当てられた計算ノードから1回または複数回取得してもよい。また、複数回測定した消費電力の情報を計算ノード41〜44に溜めておき、溜めた情報を消費電力取得部133がジョブ終了時に纏めて取得してもよい。
【0079】
消費電力取得部133は、スケジューリング部132からジョブ終了が通知されると消費電力履歴テーブル121を更新する。このとき、消費電力取得部133は、終了したジョブが使用した1以上の計算ノードを特定し、特定した計算ノードの消費電力の情報に基づいて、消費電力履歴テーブル121に登録すべき消費電力を計算する。また、消費電力取得部133は、終了したジョブのファイル名からtri−gram集合を生成する。
【0080】
消費電力履歴テーブル121に登録すべき消費電力は、例えば、異なるタイミングで測定された消費電力の平均化や、複数の計算ノードについて測定された消費電力の平均化などを行って算出される平均消費電力である。終了したジョブのファイル名と同一のファイル名が消費電力履歴テーブル121に存在しない場合、消費電力取得部133は、ファイル名やtri−gramや消費電力を含むレコードを消費電力履歴テーブル121に追加すればよい。一方、終了したジョブのファイル名と同一のファイル名が消費電力履歴テーブル121に存在する場合、消費電力取得部133は、複数回のジョブの実行を通した平均消費電力(移動平均や総平均など)を算出して、消費電力の項目を更新する。
【0081】
図9は、ジョブスケジューリングの手順例を示すフローチャートである。
(S10)消費電力推定部131は、ジョブ管理ノード100から認識できるようにマウントされたファイル記憶部220からスクリプトファイルを取得する。
【0082】
(S11)消費電力推定部131は、ステップS10で取得したスクリプトファイルが格納されているファイルシステム上の場所を示すファイルパスとして、ルートディレクトリからの絶対パスを特定する。消費電力推定部131は、ファイルパスからディレクトリ名を除いたファイル名を抽出する。例えば、消費電力推定部131は、ファイルパスの末尾から先頭に向かってディレクトリ区切り記号(「/」など)を探し、最初に見つけたディレクトリ区切り記号の1つ後ろの文字から末尾までをファイル名とする。
【0083】
ただし、消費電力推定部131は、ディレクトリ名のうちスクリプトファイルの直上のディレクトリのディレクトリ名のみがファイル名に含まれるように、ファイルパスからファイル名を抽出してもよい。例えば、消費電力推定部131は、ファイルパスの末尾から先頭に向かってディレクトリ区切り記号を探し、2番目に見つけたディレクトリ区切り記号の1つ後ろの文字から末尾までをファイル名とする。
【0084】
(S12)消費電力推定部131は、ステップS11で抽出したファイル名から、連続する3文字の集合であるtri−gram集合を生成する。m文字のファイル名からはm+2個のtri−gramを抽出することができる。また、消費電力推定部131は、ここで生成したtri−gram集合に含まれるキーの数(重複を除いたtri−gramの種類の数)を閾値Thとして決定する。
【0085】
(S13)消費電力推定部131は、消費電力履歴テーブル121に登録された過去ジョブの中から1つ過去ジョブを選択する。
(S14)消費電力推定部131は、ステップS13で選択した過去ジョブのtri−gram集合を消費電力履歴テーブル121から取得する。消費電力推定部131は、ステップS12のtri−gram集合(投入ジョブのtri−gram集合)と、ここで取得したtri−gram集合(過去ジョブのtri−gram集合)とを比較する。そして、消費電力推定部131は、2つのファイル名の距離dを算出する。距離dが小さいほど2つのファイル名は類似しており、距離dが大きいほど2つのファイル名は類似していないことを示している。例えば、消費電力推定部131は、複数のキーそれぞれについて出現回数の差の絶対値を求め、求めた差の絶対値を合計した値を距離dとする。
【0086】
(S15)消費電力推定部131は、消費電力履歴テーブル121に登録された全ての過去ジョブを選択したか判断する。全ての過去ジョブを選択した場合はステップS16に処理が進み、未選択の過去ジョブがある場合はステップS13に処理が進む。
【0087】
(S16)消費電力推定部131は、ステップS14で算出した距離dのうちの最小値を最小距離dminとして特定する。また、消費電力推定部131は、最小距離dminが算出された過去ジョブを過去ジョブJminとして特定する。
【0088】
(S17)消費電力推定部131は、ステップS16で特定した最小距離dminとステップS12で決定した閾値Thとを比較し、最小距離dminが閾値Th未満(dmin<Th)であるか判断する。最小距離dminが閾値Th未満である場合はステップS18に処理が進み、最小距離dminが閾値Th以上である場合はステップS19に処理が進む。
【0089】
(S18)消費電力推定部131は、過去ジョブJminのファイル名は投入ジョブのファイル名に十分類似していると判定する。すると、消費電力推定部131は、消費電力履歴テーブル121から過去ジョブJminの消費電力を取得する。消費電力推定部131は、投入ジョブの計算ノード1つ当たりの消費電力を過去ジョブJminの消費電力に等しいと推定する。そして、ステップS20に処理が進む。
【0090】
(S19)消費電力推定部131は、ファイル名が投入ジョブと十分類似している過去ジョブは存在しないと判定する。すると、消費電力推定部131は、投入ジョブの計算ノード1つ当たりの消費電力を所定のデフォルト値(例えば、100Wなど)と推定する。
【0091】
(S20)スケジューリング部132は、ステップS18またはステップS19で推定された消費電力に基づいて、投入ジョブのスケジュールを決定する。このとき、スケジューリング部132は、各時間帯において合計消費電力が所定の上限値を超えないように、投入ジョブに割り当てる計算ノードおよび実行開始時刻を決定する。
【0092】
(S21)消費電力取得部133は、制御装置51〜54から実績消費電力を取得する。上記の投入ジョブの実行が終了すると、消費電力取得部133は、測定された実績消費電力から、投入ジョブが使用した計算ノード1つ当たりの平均消費電力を算出する。また、消費電力取得部133は、投入ジョブのファイル名からtri−gram集合を生成する。ただし、消費電力取得部133は、消費電力推定部131からステップS12のtri−gramを取得するようにしてもよい。消費電力取得部133は、tri−gram集合や平均消費電力を用いて消費電力履歴テーブル121を更新する。
【0093】
第2の実施の形態の並列処理システムによれば、実行待ちジョブが使用するスクリプトファイルのファイル名と過去ジョブが使用したスクリプトファイルのファイル名との間の距離が算出され、距離が小さい過去ジョブの実績消費電力が参照される。よって、ユーザプログラムの特性の違いが実行待ちジョブの消費電力に与える影響を考慮することができ、実行待ちジョブの消費電力の推定精度が向上する。
【0094】
また、2つのファイル名が完全一致しなくても部分的な一致度に基づいて、2つのファイル名の距離が算出される。よって、実行待ちジョブのファイル名が並列処理システムにおいて過去に使用されたことがない新規ファイル名である場合であっても、消費電力の推定が可能となる。例えば、シリアル番号や日付やパラメータ値などの可変部分を除いた不変部分の一致度に基づいて、実行待ちジョブと過去ジョブの間の類似度を評価することができる。また、2つのファイル名の距離としてtri−gramに基づく距離やレーベンシュタイン距離を用いることで、辞書を使わずに距離を算出することができる。
【0095】
また、ファイル名にスクリプトファイルの直上の階層のディレクトリ名を含めることで、異なるユーザや異なるグループが各自のスクリプトファイルに類似する名称を偶然付与した場合であっても、これらのジョブを区別することができる。
【符号の説明】
【0096】
10 並列処理装置
11 記憶部
12 処理部
13,13a,13b ジョブ
14,14a,14b ファイル名
15,15a,15b 部分文字列
16a,16b 実績消費電力
17a,17b 類似度
18 消費電力
図1
図2
図3
図4
図5
図6
図7
図8
図9