IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特開2023-183342ジョブスケジューラおよびジョブスケジューリング方法
<>
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図1
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図2
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図3
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図4
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図5
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図6
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図7
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図8
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図9
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図10
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図11
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図12
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図13
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図14
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図15
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図16A
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図16B
  • 特開-ジョブスケジューラおよびジョブスケジューリング方法 図17
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023183342
(43)【公開日】2023-12-27
(54)【発明の名称】ジョブスケジューラおよびジョブスケジューリング方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20231220BHJP
【FI】
G06F9/50 150Z
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2022096910
(22)【出願日】2022-06-15
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】100104190
【弁理士】
【氏名又は名称】酒井 昭徳
(72)【発明者】
【氏名】大山 洋介
(57)【要約】
【課題】ジョブを効率的に実行するためのノード数を決定すること。
【解決手段】ログインノードは、パラメータ(Nnode、tcmpt、tcomm、pabn、αabn、tbench)の指定に基づいて、性能モデルMを作成する。ログインノードは、性能モデルMを用いて、E[C]を最小化するNspareを決定する。例えば、Nnodeを「Nnode=3」とし、Nspareが「Nspare=1」に決定されたとする。この場合、管理用ノードは、NspareとNnodeとを合計した4つ分のノード1101~1104にジョブを割り当てる。ノード1101は、ノード1101~1104それぞれにベンチマークを実行させる。ノード1101は、「Nnode=3」から、ベンチマーク時間が短いほうから3つ分のノード1101,1102,1104を選択し、ノード1101,1102,1104にアプリを実行させる。
【選択図】図11
【特許請求の範囲】
【請求項1】
システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付け、
受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成し、
作成した前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する、
処理をコンピュータに実行させることを特徴とするジョブスケジューラ。
【請求項2】
前記指定は、前記アプリケーションの実行時間のうち前記異常ノードによる性能低下の影響を受ける第1の処理時間と、前記異常ノードによる性能低下の影響を受けない第2の処理時間との指定を含む、ことを特徴とする請求項1に記載のジョブスケジューラ。
【請求項3】
前記第1の処理時間は、前記アプリケーションにおける各ノードの計算にかかる計算時間であり、
前記第2の処理時間は、前記アプリケーションにおけるノード間の通信にかかる通信時間である、
ことを特徴とする請求項2に記載のジョブスケジューラ。
【請求項4】
決定した前記予備ノード数と前記使用ノード数とを合計した数分のノード群に前記ジョブを割り当てられた結果、前記ノード群それぞれに前記ベンチマークを実行させ、
前記ノード群のうち、前記ベンチマークの実行に要した処理時間が短いほうから前記使用ノード数分のノードに前記アプリケーションを実行させる、
処理を前記コンピュータに実行させることを特徴とする請求項1に記載のジョブスケジューラ。
【請求項5】
システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付け、
受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成し、
作成した前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する、
処理をコンピュータが実行することを特徴とするジョブスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ジョブスケジューラおよびジョブスケジューリング方法に関する。
【背景技術】
【0002】
従来、多数の高性能計算機を含むクラスタ型のスーパーコンピュータがある。クラスタ型のスーパーコンピュータでは、例えば、ジョブスケジューラにより、ユーザから投入された計算ジョブを空きノードに割り当てて、アプリケーションの計算を行う。スーパーコンピュータは、例えば、気象予測、宇宙開発、遺伝子解析などの大規模で高度な科学技術計算に利用される。
【0003】
先行技術としては、パフォーマンス管理とアプリケーション配置管理のタスクを動的に調整するためのものがある。また、各プロセッサユニットの動作テストの結果、正常に動作すると確認されたプロセッサユニットに対して、データ処理プログラムを各プロセッサユニットに分配して、かつ、分割されたデータを各プロセッサユニットに割り当てる技術がある。
【0004】
また、数量モデルに性能仕様情報を順次代入して、プールサーバごとにスループットを算出し、スループット変化分よりも大きく、かつ最も近い値を示すスループットに対応するプールサーバを選択して構成変更制御を実行するよう指示する技術がある。また、アプリケーションを並列実行するノードの故障の可能性を予測し、故障の可能性が閾値を超えた計算ノードを、次のスケジュールされたチェックポイントにおいて、予備の計算ノードに移行させる技術がある。また、HPC(High Performance Computing)環境におけるジョブ管理を行うための技術がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特表2008-515106号公報
【特許文献2】特開平10-162130号公報
【特許文献3】国際公開第2007/034826号
【特許文献4】米国特許出願公開第2010/0223379号明細書
【特許文献5】米国特許出願公開第2020/0004648号明細書
【特許文献6】米国特許出願公開第2018/0121253号明細書
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来技術では、スーパーコンピュータ内のノードにシステム側が検出できないような異常が発生すると、ジョブに異常ノードが割り当てられて、アプリケーションの計算性能が低下する場合がある。例えば、冗長なノード数でジョブを投入することで、計算性能の低下を抑えることも考えられるが、ノード数が多すぎると、スーパーコンピュータの利用効率の低下や利用料金の増大を招くという問題がある。また、ノード数が少なすぎると、依然として計算性能が低下するという問題がある。
【0007】
一つの側面では、本発明は、ジョブを効率的に実行するためのノード数を決定することを目的とする。
【課題を解決するための手段】
【0008】
1つの実施態様では、システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付け、受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成し、作成した前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する、ジョブスケジューラが提供される。
【発明の効果】
【0009】
本発明の一側面によれば、ジョブを効率的に実行するためのノード数を決定することができるという効果を奏する。
【図面の簡単な説明】
【0010】
図1図1は、実施の形態にかかるジョブスケジューリング方法の一実施例を示す説明図である。
図2図2は、ジョブスケジューリングシステム200のシステム構成例を示す説明図である。
図3図3は、ネットワークトポロジーの一例を示す説明図である。
図4図4は、ログインノード201等のハードウェア構成例を示すブロック図である。
図5図5は、ログインノード201の機能的構成例を示すブロック図である。
図6図6は、E[C]の算出例を示す説明図である。
図7図7は、ノードNiの機能的構成例を示すブロック図である。
図8図8は、ベンチマーク実行時間テーブル800の記憶内容の一例を示す説明図である。
図9図9は、ジョブスケジューリングシステム200の動作例を示す説明図である。
図10図10は、ノード間の接続例を示す説明図である。
図11図11は、ジョブの実行例を示す説明図である。
図12図12は、ログインノード201のジョブ投入処理手順の一例を示すフローチャート(その1)である。
図13図13は、ログインノード201のジョブ投入処理手順の一例を示すフローチャート(その2)である。
図14図14は、EC算出処理の具体的処理手順の一例を示すフローチャートである。
図15図15は、ノードNiのジョブ実行制御処理手順の一例を示すフローチャートである。
図16A図16Aは、各ノードのベンチマーク時間の具体例を示す説明図(その1)である。
図16B図16Bは、各ノードのベンチマーク時間の具体例を示す説明図(その2)である。
図17図17は、E[C]の予測例を示す説明図である。
【発明を実施するための形態】
【0011】
以下に図面を参照して、本発明にかかるジョブスケジューラおよびジョブスケジューリング方法の実施の形態を詳細に説明する。
【0012】
(実施の形態)
図1は、実施の形態にかかるジョブスケジューリング方法の一実施例を示す説明図である。図1において、情報処理装置101は、システム内の1以上のノードによりジョブを実行するにあたり、予備ノード数を決定するコンピュータである。システムは、相互に通信可能な複数のノードを含む。システムは、例えば、クラスタ型のスーパーコンピュータ(スパコン)である。
【0013】
ノードは、通信機能を有し、各種処理を実行可能なコンピュータである。ノードは、例えば、物理サーバであってもよく、仮想マシンであってもよい。ジョブは、コンピュータにおける処理作業の単位であり、例えば、ユーザによって指定される計算単位である。ジョブ内で実行される処理は、例えば、ユーザ依存の処理である。
【0014】
例えば、ジョブ内で実行される処理は、MPI(Message Passing Interface)などによって並列化されたプログラム(アプリケーション)により全ノードが協調して計算を行うことが多い。並列化されたプログラムでは、ノードごとの計算とノード同士の通信が行われる。
【0015】
例えば、深層学習では、collective通信(パラメータの同期)とノードごとの計算(forward,backward計算)が交互に行われる。また、流体解析では、collective通信・P2P通信(CG法の内積・疎行列ベクトル積)とノードごとの計算が交互に行われる。
【0016】
予備ノードは、ジョブを実行するにあたり、余分に準備されるノードである。予備ノード数は、ジョブの実行にかかるアプリケーションに使用されるノード数よりも多い数のノードを準備する場合の冗長分のノード数である。
【0017】
ここで、ジョブスケジューラは、ユーザが指定した計算単位(ジョブ)をスケジューリングして、スパコンなどのノードに割り当てるソフトウェアである。各ジョブは、例えば、計算内容、使用ノード数、最大使用時間(wall-time)の情報を持つ。通常、ユーザは、特定のノードを選択して使用することはできない。
【0018】
一般的なジョブスケジューラでは、例えば、先にキューに投入されたジョブが先に実行される。例えば、各ジョブA,B,Cが、「ジョブA→ジョブB→ジョブC」の順にキューに投入されたとする。また、スパコンの合計ノード数を「8ノード」とする。また、ジョブAの使用ノード数を「3」とし、ジョブBの使用ノード数を「4」とし、ジョブCの使用ノード数を「4」とする。
【0019】
この場合、ジョブAがジョブCよりも先にキューに投入されたため、遊休ノードを発生させてでも、ジョブCよりもジョブAが優先される。例えば、ノード1~8のうち、ノード1~3がジョブAに割り当てられ、ノード4~7がジョブBに割り当てられると、ノード8が遊休ノードとなる。なお、1~8は、ノードIDに相当する。
【0020】
この結果、連続しないノードIDのノードがジョブに割り当てられる場合がある。例えば、ジョブBが実行中にジョブAの実行が完了してジョブCを実行可能となった場合、ノード1~3,8にジョブCが割り当てられる。ノード1~3とノード8は、ノードIDが連続しないノードである。
【0021】
また、各ジョブに割り当てられたノードは、例えば、ジョブの計算終了時またはwall-time超過時に直ちに解放される。例えば、ジョブAのwall-timeを「1時間」とした場合に、ジョブAの計算が45分で完了すると、ジョブAに割り当てられたノード1~3が、wall-time(1時間)を待たずに解放されて、次のジョブに割り当てられる。また、ジョブCのwall-timeを「1時間」とした場合、ジョブCの計算が1時間で完了していなくても、ジョブCに割り当てられたノード1~3,8が、wall-time(1時間)超過時に解放される。
【0022】
また、一般的なジョブスケジューラでは、backfillと呼ばれる仕組みにより、遊休ノードについてはキューの追い越しが容認される場合がある。例えば、ジョブCの後にジョブDが投入されたとする。ジョブDの使用ノード数を「1」とする。この場合、ノード1~8のうち、ノード1~3がジョブAに割り当てられ、ノード4~7がジョブBに割り当てられ、さらに、ジョブCよりも後に投入されたジョブDにノード8が割り当てられる。backfillにより、遊休ノードを減らし、スパコン全体の利用効率を向上させることができる。
【0023】
ここで、スパコンのノードは、ハードウェア異常やプロセス(ソフトウェア)異常が発生することがある。このような異常をシステム側によって検出しきれない場合、ユーザに異常ノードが割り当てられて、アプリケーションの計算性能が低下する場合がある。例えば、異常ノードを含むノード群にジョブが割り当てられると、異常ノードに律速されて計算性能が低下し、ひいては、スパコンの利用効率の低下やユーザの利用料金の増大につながる。
【0024】
アプリケーションの性能低下の要因となりえる異常としては、以前にノードで実行されたジョブの影響により発生する異常がある。例えば、前ジョブで生成されたプロセスやローカルファイルがシステムにより消去または初期化されず、異常が発生することがある。また、前ジョブで性能に影響する設定(例えば、クロック周波数など)が変更されたにもかかわらず、システムにより復元されず、異常が発生することがある。
【0025】
また、OS(Operating System)レベルで動作しているプロセスやデーモンの異常やバグにより発生する異常がある。また、プロセッサの消費電力特性に差異があるために使用されるクロック周波数が異なるなどのハードウェアの個体差により発生する異常がある。
【0026】
また、ノード間のネットワーク(インターコネクト)が他のジョブと共有されており、他ジョブの通信によって待ち時間が発生する場合がある。また、単一のノードを論理的に複数のジョブで共有する機能を有するスパコンにおいては、プロセッサやメモリなどのハードウェアについて、他ジョブと競合する場合がある。
【0027】
このような異常は、ユーザがジョブを投入して結果を確認することで、はじめて発見されることが多いが、ユーザ側では原因の特定が困難である。例えば、アプリケーションの実行時間は実行前に明らかになっていないことがあり、性能低下の原因が特定のノードに起因するものなのかを判定すること自体が難しい。
【0028】
また、wall-timeを超過してアプリケーションが強制終了される場合、処理結果を確認するためのログをアプリケーションが出力する前に強制終了されると、ユーザ側で性能低下の原因を特定することが難しい。また、管理者側はユーザが実行するアプリケーションには関知しないことが多いため、ユーザと管理者側との協議によって解決することが難しい。
【0029】
また、問題の性質上、多数のノードを使用するジョブで性能低下が生じる可能性が高いため、そのノードの中から原因となるノードを絞り込む作業が発生する。しかし、ノードを絞り込む作業には、多くの時間や負荷がかかる。また、一般的なジョブスケジューラでは、ユーザ側で特定のノードを指定してジョブを投入することができない。このため、ユーザ側で原因と思われるノードを厳密に固定して検証を行うことができない。
【0030】
また、一般的なジョブスケジューラでは、backfillの仕組みにより、例えば、wall-time超過時にジョブを再投入または異常発見時に手動で再投入するようにした場合、再度原因となる異常ノードが割り当てられる可能性がある。このため、ジョブの再投入は、問題の解決方法にはならない。
【0031】
このため、最初に冗長なノード数でジョブを投入し、そのノードの中から処理が遅いノードを排除してアプリケーションの計算を行うことで、計算性能の低下を抑えることが考えられる。しかしながら、ノード数が多すぎると、利用効率の低下や利用料金の増大を招くという問題がある。一方、ノード数が少なすぎると、依然として計算性能が低下するという問題がある。
【0032】
そこで、本実施の形態では、異常ノードの発生を考慮して冗長なノード数でジョブを投入するにあたり、ジョブを効率的に実行するためのノード数を決定するジョブスケジューリング方法について説明する。ここで、情報処理装置101の処理例(下記(1)~(3)の処理に対応)について説明する。
【0033】
(1)情報処理装置101は、システム内の1以上のノードによりジョブを実行するにあたり、パラメータ110の指定を受け付ける。パラメータ110の指定は、例えば、ジョブを投入するユーザによって行われる。パラメータ110は、ジョブの実行にかかるアプリケーションの使用ノード数を含む。使用ノード数は、1以上の値であり、例えば、アプリケーションの性質や計算速度などを考慮して決定される。
【0034】
また、パラメータ110は、システム内のノードの異常発生確率を含む。異常発生確率は、システム内の全ノードで共通の値であり、0以上1以下の値である。システムは、例えば、複数のノード(高性能計算機)を含むスーパーコンピュータである。また、パラメータ110は、システム内の異常ノードの正常ノードに対する処理時間の比率を含む。
【0035】
異常ノードは、アプリケーションの性能低下の要因となりえる異常が発生しているノードである。正常ノードは、異常ノード以外の非異常ノードである。処理時間は、例えば、アプリケーションにおける計算にかかる処理時間や、ベンチマークの実行にかかる処理時間である。処理時間の比率は、例えば、正常ノードの処理時間に対する異常ノードの処理時間の増加率によって表される、1より大きい値である。
【0036】
また、パラメータ110は、ベンチマークの実行にかかるベンチマーク時間を含む。ベンチマークは、ジョブ内でアプリケーションの前に実行されるノードの性能評価用のソフトウェアである。ベンチマークは、冗長なノード数でジョブに割り当てたノード群の中から排除するノードを判定するために実行される。
【0037】
また、パラメータ110には、例えば、アプリケーションの実行時間のうち異常ノードによる性能低下の影響を受ける第1の処理時間と、異常ノードによる性能低下の影響を受けない第2の処理時間とが含まれていてもよい。第1の処理時間は、例えば、アプリケーションにおける各ノードの計算にかかる計算時間である。第2の処理時間は、例えば、アプリケーションにおけるノード間の通信にかかる通信時間である。
【0038】
ただし、第1の処理時間および第2の処理時間は、システム側で指定される値であってもよい。例えば、情報処理装置101は、第1の処理時間をジョブのwall-time等から定まる値とし、第2の処理時間を固定値(例えば、0)としてもよい。
【0039】
(2)情報処理装置101は、受け付けたパラメータ110の指定に基づいて、性能モデル120を作成する。性能モデル120は、ジョブの実行にかかる実行時間の期待値、使用ノード数およびジョブにおける予備ノード数から、ジョブの実行にかかるリソース消費量の期待値を出力するモデルである。
【0040】
リソース消費量は、冗長なノード数でジョブを投入した際に消費されるシステムのリソース量を表すものである。リソース消費量は、予備ノードとベンチマークの分、ジョブ実行時のノード数やノードの使用時間が増加することを考慮したコストに相当する。
【0041】
具体的には、例えば、情報処理装置101は、受け付けたパラメータ110の指定に基づいて、所定のモデル式(例えば、後述する第1モデル式、第2モデル式、第3モデル式、第4モデル式および第5モデル式)から性能モデル120を作成する。性能モデル120を作成する具体的な処理例については、図5を用いて後述する。
【0042】
(3)情報処理装置101は、作成した性能モデル120を用いて、ジョブの実行にかかるリソース消費量の期待値を最小化する予備ノード数を決定する。具体的には、例えば、情報処理装置101は、性能モデル120を用いて、予備ノード数を0からアプリケーションの使用ノード数まで順に変化させながら、リソース消費量の期待値Cを算出する。
【0043】
そして、情報処理装置101は、算出したリソース消費量の期待値Cのうち最小値に対応する予備ノード数を、リソース消費量の期待値を最小化する予備ノード数に決定してもよい。決定された予備ノード数は、冗長なノード数でジョブを投入する際の冗長分のノード数として用いられる。
【0044】
このように、情報処理装置101によれば、異常ノードの発生を考慮して冗長なノード数でジョブを投入するにあたり、ジョブの実行にかかるリソース消費量の期待値Cを最小化する予備ノード数を探索して、ジョブを効率的に実行するためのノード数を決定することができる。これにより、情報処理装置101は、ジョブの実行にかかるリソース消費量の期待値を最小化する予備ノード数を指定して、ジョブを投入することができる。
【0045】
(ジョブスケジューリングシステム200のシステム構成例)
つぎに、図1に示した情報処理装置101を含むジョブスケジューリングシステム200のシステム構成例について説明する。ここでは、図1に示した情報処理装置101を、ジョブスケジューリングシステム200内のログインノード201に適用した場合を例に挙げて説明する。ジョブスケジューリングシステム200は、例えば、流体解析、構造解析、電磁界解析などのジョブを実行するためのスーパーコンピュータに適用される。
【0046】
図2は、ジョブスケジューリングシステム200のシステム構成例を示す説明図である。図2において、ジョブスケジューリングシステム200は、ログインノード201と、管理用ノード202と、クライアント端末203と、ストレージサーバ204と、計算ノードN1~Nn(n:2以上の自然数)と、を含む。ジョブスケジューリングシステム200において、ログインノード201、管理用ノード202、クライアント端末203、ストレージサーバ204および計算ノードN1~Nnは、有線または無線のネットワーク210を介して接続される。ネットワーク210は、例えば、インターネット、LAN(Local Area Network)、WAN(Wide Area Network)などである。
【0047】
以下の説明では、計算ノードN1~Nnのうちの任意の計算ノードを「計算ノードNi」と表記する場合がある(i=1,2,…,n)。また、計算ノードを単に「ノード」と表記する場合がある。
【0048】
ここで、ログインノード201は、ユーザが直接操作可能なコンピュータである。ログインノード201は、例えば、後述の図9に示すような投入スクリプトP1を実行する。投入スクリプトP1は、ジョブを投入するための情報処理プログラムである。ログインノード201は、例えば、サーバである。
【0049】
管理用ノード202は、ジョブスケジューリングシステム200を運用するためのコンピュータである。管理用ノード202は、例えば、後述の図9に示すようなジョブスケジューラP2を実行する。ジョブスケジューラP2は、ジョブスケジューリングのためのプログラムである。管理用ノード202は、例えば、サーバである。
【0050】
クライアント端末203は、ジョブスケジューリングシステム200のユーザが使用するコンピュータである。例えば、ユーザは、クライアント端末203からログインノード201を操作することにより、ジョブの投入などを行う。クライアント端末203は、例えば、PC(Personal Computer)、タブレットPCなどである。
【0051】
ストレージサーバ204は、ファイルシステムFSを有し、各種ノード201,202,N1~Nnが実行する各種プログラムの本体(実行形式ファイル)やデータを記憶するコンピュータである。各種ノード201,202,N1~Nnは、例えば、ストレージサーバ204のファイルシステムFSにアクセスして、各種プログラムの情報を取得する。
【0052】
計算ノードN1~Nnは、ジョブの割当先となるコンピュータである。ジョブが割り当てられたノード群のうちのいずれか1つのノードNiでは、後述の図9に示すようなジョブスクリプトP3が実行される。ジョブスクリプトP3は、ジョブの実行にかかるアプリケーションを実行するための情報処理プログラムである。各計算ノードN1~Nnは、例えば、サーバである。
【0053】
ジョブスケジューリングシステム200において、例えば、計算ノード同士や、ログインノード201、管理用ノード202およびストレージサーバ204は、図3に示すようなネットワークトポロジー(通信アーキテクチャ)のインターコネクトで通信可能である。ジョブスケジューリングシステム200内のインターコネクトの具体例としては、例えば、ファットツリー(Fat Tree)型のネットワークが挙げられる。
【0054】
なお、ここではログインノード201と管理用ノード202と計算ノードNiとを別体に設けることにしたが、これに限らない。例えば、ログインノード201、管理用ノード202および計算ノードNiは、1台のコンピュータにより実現されてもよい。また、ログインノード201は、管理用ノード202により実現されてもよい。また、管理用ノード202は、計算ノードNiにより実現されてもよい。また、投入スクリプトP1は、例えば、ジョブスケジューラP2の1機能として実現してもよい。また、ジョブスクリプトP3は、例えば、ジョブスケジューラP2の1機能として実現してもよい。
【0055】
(ネットワークトポロジー)
ここで、図3を用いて、ジョブスケジューリングシステム200内のインターコネクトのネットワークトポロジーについて説明する。
【0056】
図3は、ネットワークトポロジーの一例を示す説明図である。図3において、ノード301~308は、図2に示した計算ノードN1~Nnの一例である。ノード301~308は、スイッチ311~313(ネットワークデバイス)を介して接続されている。ここでは、ツリー状のネットワーク構造の上流側の経路が冗長化されている。これにより、ノード301~308は、非連続の物理的配置にあるノード間においても高性能な通信が可能である。
【0057】
(ログインノード201等のハードウェア構成例)
つぎに、図2に示したログインノード201、管理用ノード202、ストレージサーバ204および計算ノードN1~Nnのハードウェア構成例について説明する。ここでは、ログインノード201、管理用ノード202、ストレージサーバ204および計算ノードN1~Nnを「ログインノード201等」と表記する。
【0058】
図4は、ログインノード201等のハードウェア構成例を示すブロック図である。図4において、ログインノード201等は、CPU(Central Processing Unit)401と、メモリ402と、ディスクドライブ403と、ディスク404と、通信I/F(Interface)405と、可搬型記録媒体I/F406と、可搬型記録媒体407と、を有する。また、各構成部は、バス400によってそれぞれ接続される。
【0059】
ここで、CPU401は、ログインノード201等の全体の制御を司る。CPU401は、複数のコアを有していてもよい。メモリ402は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMがOSのプログラムを記憶し、ROMがアプリケーションプログラムを記憶し、RAMがCPU401のワークエリアとして使用される。メモリ402に記憶されるプログラムは、CPU401にロードされることで、コーディングされている処理をCPU401に実行させる。
【0060】
ディスクドライブ403は、CPU401の制御に従ってディスク404に対するデータのリード/ライトを制御する。ディスク404は、ディスクドライブ403の制御で書き込まれたデータを記憶する。ディスク404としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【0061】
通信I/F405は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して外部のコンピュータに接続される。そして、通信I/F405は、ネットワーク210と装置内部とのインターフェースを司り、外部のコンピュータからのデータの入出力を制御する。通信I/F405には、例えば、モデムやLANアダプタなどを採用することができる。
【0062】
可搬型記録媒体I/F406は、CPU401の制御に従って可搬型記録媒体407に対するデータのリード/ライトを制御する。可搬型記録媒体407は、可搬型記録媒体I/F406の制御で書き込まれたデータを記憶する。可搬型記録媒体407としては、例えば、CD(Compact Disc)-ROM、DVD(Digital Versatile Disk)、USB(Universal Serial Bus)メモリなどが挙げられる。
【0063】
なお、ログインノード201等は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有することにしてもよい。また、ログインノード201等は、上述した構成部のうち、例えば、可搬型記録媒体I/F406、可搬型記録媒体407を有さないことにしてもよい。また、図2に示したクライアント端末203についても、ログインノード201等と同様のハードウェア構成により実現することができる。ただし、クライアント端末203は、上述した構成部のほかに、例えば、入力装置、ディスプレイなどを有する。
【0064】
(ログインノード201の機能的構成例)
つぎに、ログインノード201の機能的構成例について説明する。
【0065】
図5は、ログインノード201の機能的構成例を示すブロック図である。図5において、ログインノード201は、受付部501と、作成部502と、決定部503と、投入部504と、を含む。受付部501~投入部504は制御部500となる機能であり、具体的には、例えば、図4に示したログインノード201のメモリ402、ディスク404、可搬型記録媒体407などの記憶装置に記憶されたプログラム(後述の図9に示すような投入スクリプトP1)をCPU401に実行させることにより、または、通信I/F405により、その機能を実現する。各機能部の処理結果は、例えば、ログインノード201のメモリ402、ディスク404などの記憶装置に記憶される。
【0066】
受付部501は、ジョブスケジューリングシステム200内の1以上のノードによりジョブを実行するにあたり、パラメータの指定を受け付ける。パラメータは、例えば、Nnode、pabn、αabn、tbenchを含む。ここで、Nnodeは、ジョブの実行にかかるアプリケーションの使用ノード数を表す。Nnodeは、例えば、ユーザがアプリケーションの性質や計算速度などを考慮して決定する。
【0067】
以下の説明では、ジョブの実行にかかるアプリケーションを単に「アプリ」と表記する場合がある。
【0068】
abnは、ジョブスケジューリングシステム200内のノードの異常発生確率を表す。pabnは、ジョブスケジューリングシステム200の全ノードで共通の値であり、0以上1以下の値である。各ノードは、pabnで異常であり、かつ、ジョブ実行中は状態が変化しないと仮定する。
【0069】
αabnは、ジョブスケジューリングシステム200内の異常ノードの正常ノードに対する処理時間の比率(増加率)を表す係数(異常ノード計算時間係数)である。αabnは、1より大きい値である。異常ノードは、計算時間(tbench,tcmpt)がαabn倍されると仮定する。例えば、異常ノードは、正常ノードに比べて、tbenchがαabn倍増加する。
【0070】
benchは、ベンチマークの実行にかかるベンチマーク時間を表す。ベンチマークは、ジョブ内でアプリの前に実行されるノードの性能評価用のソフトウェアである。ベンチマークとしては、例えば、LINPACK等の計算律速となる軽量なソフトウェアが使用される。
【0071】
ここでは、全ノードでベンチマークを実行した場合に、全ノードにおけるベンチマーク時間を降順にソートすると、異常ノードが最上位になると仮定する。この際、異常ノード数が、ジョブにおける予備ノード数以下であれば、異常ノードをアプリの実行から排除できる。一方、異常ノード数が予備ノード数より大きい場合は、異常ノードをアプリの実行から排除できない。
【0072】
また、パラメータは、例えば、tcmpt、tcommを含むものであってもよい。tcmptは、アプリにおける各ノードの計算にかかる計算時間である(ただし、tcmpt>0)。tcmptは、アプリの実行時間のうち異常ノードによる性能低下の影響を受ける第1の処理時間の一例である。
【0073】
commは、アプリにおけるノード間の通信にかかる通信時間である(ただし、tcomm≧0)。tcommは、アプリの実行時間のうち異常ノードによる性能低下の影響を受けない第2の処理時間の一例である。tcmpt,tcommは、例えば、ユーザがアプリケーションの性質や計算速度などを考慮して決定する。
【0074】
なお、アプリの中には、I/O(Input/Output)などの計算と通信の両方に当てはまらない時間が支配的なものがある。この場合、tcmptをアプリの実行時間のうち異常ノードによる性能低下の影響を受ける第1の処理時間として値を指定し、tcommを異常ノードによる性能低下の影響を受けない第2の処理時間として値を指定してもよい。
【0075】
具体的には、例えば、受付部501は、図2に示したクライアント端末203からジョブの投入依頼を受信することにより、ジョブの投入依頼に含まれるパラメータの指定を受け付けることにしてもよい。ジョブの実行依頼には、例えば、上述したパラメータのほかに、ジョブの計算内容や最大使用時間(wall-time)などの情報が含まれる。
【0076】
作成部502は、受け付けたパラメータの指定に基づいて、性能モデルMを作成する。性能モデルMは、E[Ttotal]およびNtotalから、E[C]を出力するモデル式を含む。E[Ttotal]は、Ttotalの期待値を表す。Ttotalは、ジョブ時間を表す。ジョブ時間は、ジョブの実行にかかる実行時間である。
【0077】
totalは、ジョブの実行にかかる全ノード数を表す。Ntotalは、NnodeとNspareとを合計した数である(ただし、Ntotalは1以上最大ノード数以下の整数)。Nnodeは、ジョブの実行にかかるアプリの使用ノード数を表す(ただし、Nnodeは1以上最大ノード数以下の整数)。Nspareは、ジョブにおける予備ノード数を表す(ただし、Nspareは1以上最大ノード数以下の整数)。
【0078】
E[C]は、ノード時間(コスト)の期待値を表す。ノード時間は、ジョブの実行にかかるリソース消費量を表す指標であり、例えば、ジョブの実行にかかる(ノード数)と(ノードの使用時間)とを乗算した値(例えば、後述の図11に示す点線枠1110の面積に相当)に相当する。図1に示した性能モデル120は、例えば、性能モデルMに対応する。
【0079】
具体的には、例えば、作成部502は、NtotalとNabnとに基づいて、ジョブ内に異常ノードが存在する確率(存在確率)を表す第1モデル式を作成する。ここで、Ntotalは、下記式(1)によって表される。
【0080】
total=Nnode+Nspare ・・・(1)
【0081】
また、Nabnは、ジョブ内の異常ノード数を表す。Nabnは、例えば、Ntotalとpabnとを用いて、下記式(2)のように表すことができる。ただし、B(n,p)は、試行回数n、確率pの二項分布を表す。また、~は、確率分布に従うことを意味する。
【0082】
abn~B(Ntotal,pabn) ・・・(2)
【0083】
そして、作成部502は、上記式(1)および(2)を用いて、下記式(3)のような第1モデル式を作成することができる。ただし、P[Nabn>0]は、ジョブ内に異常ノードが存在する確率である(P[Nabn>0]∈[0,1])。下記式(3)中の指数部分の「Ntotal」は「Ntotal」を表す。
【0084】
P[Nabn>0]=1-(1-pabnNtotal ・・・(3)
【0085】
また、作成部502は、P[Nabn>0]とαabnとtbenchとに基づいて、ジョブにおけるベンチマークの実行にかかるベンチマーク時間を表す第2モデル式を作成する。第2モデル式は、例えば、下記式(4)および(5)によって表すことができる。
【0086】
ただし、Tbenchは、ジョブにおけるベンチマークの実行にかかるベンチマーク時間である。P[Tbench=αabn・tbench]は、Tbenchが「Tbench=αabn・tbench」となる確率を表す。P[Tbench=tbench]は、Tbenchが「Tbench=tbench」となる確率を表す。異常ノードが1つでも存在する場合は「Tbench=αabn・tbench」となり、それ以外の場合は「Tbench=tbench」となる。
【0087】
P[Tbench=αabn・tbench]=P[Nabn>0] ・・・(4)
P[Tbench=tbench]=1-P[Nabn>0] ・・・(5)
【0088】
また、作成部502は、NnodeとNspareとpabnとに基づいて、アプリの実行から異常ノードを排除できる確率(排除確率)を表す第3モデル式を作成する。第3モデル式は、例えば、下記式(6)によって表すことができる。ただし、P[Nabn≦Nspare]は、アプリの実行から異常ノードを排除できる確率である(P[Nabn≦Nspare]∈[0,1])。Ntotalは、上記式(1)によって表される。
【0089】
【数1】
【0090】
また、作成部502は、tcmptとtcommとαabnとP[Nabn≦Nspare]とに基づいて、ジョブにおけるアプリ時間を表す第4モデル式を作成する。アプリ時間は、アプリの実行にかかる実行時間である。第4モデル式は、例えば、下記式(7)および(8)によって表すことができる。
【0091】
ただし、Tappは、ジョブにおけるアプリ時間である(Tapp>0)。P[Tapp=αabn・tcmpt+tcomm]は、Tappが「Tapp=αabn・tcmpt+tcomm」となる確率を表す。P[Tapp=tcmpt+tcomm]は、Tappが「Tapp=tcmpt+tcomm」となる確率を表す。異常ノード数が予備ノード数を超えた場合は「Tapp=αabn・tcmpt+tcomm」となり、それ以外の場合は「Tapp=tcmpt+tcomm」となる。
【0092】
P[Tapp=αabn・tcmpt+tcomm]=1-P[Nabn≦Nspare]・・・(7)
P[Tapp=tcmpt+tcomm]=P[Nabn≦Nspare]・・・(8)
【0093】
また、作成部502は、ジョブにおけるベンチマーク時間とジョブにおけるアプリ時間とに基づいて、ジョブ時間の期待値を表す第5モデル式を作成する。ジョブ時間は、ジョブの実行にかかる実行時間である。ジョブ時間は、ジョブにおけるベンチマーク時間とジョブにおけるアプリ時間とを合わせた時間であり、下記式(9)によって表される。ただし、Ttotalは、ジョブ時間である。
【0094】
total=Tbench+Tapp ・・・(9)
【0095】
より具体的には、例えば、作成部502は、上記式(4)、(5)、(7)、(8)および(9)から、下記式(10)のような第5モデル式を作成することができる。ただし、E[Ttotal]は、ジョブ時間の期待値である(>0)。E[Tbench]は、ジョブにおけるベンチマーク時間の期待値である。E[Tapp]は、ジョブにおけるアプリ時間の期待値である。
【0096】
【数2】
【0097】
そして、作成部502は、作成した第5モデル式およびNtotalに基づいて、性能モデルMを作成する。Ntotalは、上記式(1)によって表される。性能モデルMは、例えば、下記式(11)によって表すことができる。ただし、E[C]は、ノード時間(コスト)の期待値である(C>0)。
【0098】
E[C]=Ntotal・E[Ttotal] ・・・(11)
【0099】
なお、本手法を使用しない場合(後述するAs-isに対応)のノード時間の期待値は、「tbench=0,Nspare=0」とした場合のE[C]と等価である(ベンチマークの実行を行わず、予備ノードを使用しないため)。この場合、Tbenchは「Tbench=0」、Ttotalは「Ttotal=Tapp」となる。
【0100】
決定部503は、作成された性能モデルMを用いて、E[C]を最小化するNspare(予備ノード数)を決定する。具体的には、例えば、決定部503は、性能モデルMを用いて、Nspareを0からNnodeまで順に変化させながら、E[C]を算出する。そして、決定部503は、算出したE[C]のうちの最小値に対応するNspareを、E[C]を最小化するNspareに決定してもよい。
【0101】
また、決定部503は、0からNnodeまでのうちの奇数または偶数のみに限定してNspareを変化させながら、E[C]を算出してもよい。また、決定部503は、0からNnodeまで所定数間隔でNspareを変化させながら、E[C]を算出してもよい。所定数間隔は、任意に設定可能である。これにより、Nspareの決定にかかる計算量を抑えることができる。
【0102】
ここで、図6を用いて、E[C]の算出例について説明する。ここでは、tcmpt=10、tcomm=5、Nnode=100、pabn=0.005、αabn=10、tbench=0.1とする。また、倍精度浮動小数点数型を用いて数値計算を行うとする。
【0103】
図6は、E[C]の算出例を示す説明図である。図6において、折れ線グラフ601は、Nspareを1から10まで順に変化させて算出されたE[C]の変化を示す。ただし、図6中、右縦軸は、E[C]を示す。横軸は、Nspareを示す。また、As-isは、本手法を使用しない場合のE[C]を示す。
【0104】
また、棒グラフ602は、Nspareを1から10まで順に変化させて算出されたE[Ttotal]の変化を示す。ただし、図6中、左縦軸は、E[Ttotal]を示す。横軸は、Nspareを示す。また、As-isは、本手法を使用しない場合のE[Ttotal]を示す。
【0105】
折れ線グラフ601では、「Nspare=3」のときに最小値「E[C]=1671」をとる。この最小値はAs-isの0.33倍であり、本手法を適用しない場合に比べてコストが削減されていることがわかる。折れ線グラフ601および棒グラフ602によれば、Nspareが3未満の場合、冗長ノード数が少なくなるものの、異常ノードを排除しきれずE[Ttotal](ジョブ時間の期待値)が増えることがわかる。
【0106】
また、Nspareが4以上の場合、E[Ttotal]は最適値をとり続けるものの、ノード数が増えて、E[C](ノード時間の期待値)が徐々に増えていくことがわかる。この場合、決定部503は、「Nspare=3」を、E[C]を最小化するNspare(予備ノード数)に決定する。
【0107】
図5の説明に戻り、投入部504は、決定されたNspare(予備ノード数)を指定して、ジョブを投入する。具体的には、例えば、投入部504は、図2に示した管理用ノード202に対して、Nnode(アプリの使用ノード数)およびNspare(予備ノード数)を指定して、ジョブを投入する。
【0108】
この結果、管理用ノード202において、例えば、キューにジョブが投入される。そして、管理用ノード202は、例えば、後述の図9に示すようなジョブスケジューラP2により、キューからジョブを取り出して、ノードN1~Nnのうちの利用可能なノード群にジョブを割り当てる。ノード群は、Nnode(アプリの使用ノード数)とNspare(予備ノード数)とを合計した数分のノード群である。
【0109】
なお、上述したログインノード201の機能部(例えば、受付部501~投入部504)は、管理用ノード202またはノードNiにより実現してもよい。また、ログインノード201が、管理用ノード202の機能(例えば、ジョブスケジューラP2)やノードNiの機能(例えば、ジョブスクリプトP3)を有することにしてもよい。例えば、ログインノード201が管理用ノード202の機能を有する場合、投入部504が、決定したNspareとNnodeとを合計した数(Ntotal)分のノード群にジョブを割り当てることにしてもよい。
【0110】
(性能モデルMの補足)
ここで、性能モデルMの補足について説明する。
【0111】
上述した説明では、指定されるパラメータにtcmpt,tcommが含まれていてもよいとしたが、ジョブの実行前にtcmpt,tcommの一方または両方が明らかになっていない場合がある。また、アプリの実行時間は明らかになっているもののtcmptとtcommとの比率が分かっていない場合がある。
【0112】
このため、パラメータとしてユーザがtcmpt,tcommを指定できない場合がある。この場合、作成部502は、例えば、tcmptを、アプリの実行時間、または、ジョブの最大使用時間(wall-time)の定数倍としてもよい。定数は、1未満の値である。また、作成部502は、例えば、tcommを0としてもよい。
【0113】
一般的な並列計算アプリでは、計算性能が大幅に低下した状況下では計算律速になり、「αabn・tcmpt≫tcomm」と予想されるためである。なお、アプリの実行時間は、例えば、ジョブの投入依頼に含まれていてもよく、また、システム側でアプリと対応付けて記憶されていてもよい。ジョブの最大使用時間(wall-time)は、例えば、ジョブの投入依頼に含まれる。
【0114】
また、pabnおよびαabnは、例えば、ユーザが、システム側によって公開される統計情報から算出してもよく、ジョブスケジューリングシステム200に対して適当なベンチマークジョブを実行して得られた結果から推定してもよい。
【0115】
また、一般的に、ノードの故障率は、いわゆる故障率曲線(バスタブ曲線)のような経過をたどる。このため、ノードの故障間隔・異常間隔は、確率的な挙動となる。しかし、本実施の形態では、「あるノードがジョブに割り当てられた瞬間に異常が発生している確率」に着目するため、これを単一の値「pabn」で表現しても一般性を損なわない。
【0116】
例えば、下記式(12)および(13)のように、各ノードの故障間隔tflt(システムにより検出され復帰されるような事象が発生する間隔)と異常間隔tabn(性能低下の原因となるが、システムに検出されない事象が発生する間隔)が指数分布に従うと仮定する。ただし、λabn<λfltとする。
【0117】
flt~Exp(λflt) ・・・(12)
abn~Exp(λabn) ・・・(13)
【0118】
この仮定の下で、あるノードを確保したときに異常が発生している確率pabn_expは、下記式(14)によって表される。ただし、f(x|λ),F(x|λ)は、それぞれ指数分布Exp(λ)の密度関数、分布関数を示す。
【0119】
【数3】
【0120】
「λflt→∞」のとき、「(ノードの稼働時間)→∞」となり、異常が必ず発生しているため、「pabn_exp→1」となる。また、「λabn→∞」のとき、異常が発生しなくなるため、「pabn_exp→0」となる。同様に、故障間隔や異常間隔の分布がシステム全体の稼働時間に対して、不変かつノードごとに同等であれば、pabnは、単一の値として表現できる。
【0121】
なお、故障間隔や異常間隔の分布がノードごとに同等でない、例えば、故障や異常が極端に多いようなノードが存在する場合が考えられる。このような場合、ジョブスケジューリングシステム200のような同一構成のノードが多数存在するシステムでは、復帰の際に部品の交換等でその原因が取り除かれることが予想される。このため、一般にはこのような事象は発生しないと予想される。
【0122】
(ノードNiの機能的構成例)
つぎに、ノードNiの機能的構成例について説明する。ノードNiは、ノードN1~Nnのうちのいずれか1つのノード(計算ノード)である。
【0123】
図7は、ノードNiの機能的構成例を示すブロック図である。図7において、ノードNiは、第1の実行部701と、選択部702と、第2の実行部703と、を含む。第1の実行部701~第2の実行部703は制御部700となる機能であり、具体的には、例えば、図4に示したノードNiのメモリ402、ディスク404、可搬型記録媒体407などの記憶装置に記憶されたプログラム(後述の図9に示すようなジョブスクリプトP3)をCPU401に実行させることにより、または、通信I/F405により、その機能を実現する。各機能部の処理結果は、例えば、ノードNiのメモリ402、ディスク404などの記憶装置に記憶される。
【0124】
第1の実行部701は、Ntotal分のノード群にジョブが割り当てられた結果、ノード群それぞれにベンチマークを実行させる。Ntotalは、例えば、ログインノード201によって決定されたNspareと、ユーザによって指定されたNnodeとを合計した数である。
【0125】
ベンチマークは、ジョブ内でアプリの前に実行されるノードの性能評価用のソフトウェア(例えば、LINPACK)である。具体的には、例えば、第1の実行部701は、各種MPIライブラリに付属するmpirunコマンドを用いて、ノード群(自ノードを含む)それぞれにベンチマークの実行を依頼する。
【0126】
以下の説明では、ジョブが割り当てられたノード群を「ノード群N[1]~N[m]」と表記する場合がある(mは、2以上の自然数)。
【0127】
また、第1の実行部701は、ノード群N[1]~N[m]それぞれのベンチマーク実行時間を収集する。ベンチマーク実行時間は、ノードにおけるベンチマークの実行に要した時間である。具体的には、例えば、第1の実行部701は、mpirunの標準出力から、ノード群N[1]~N[m]それぞれのベンチマーク実行時間を収集する。ただし、mpirunの標準出力にノードごとの時間が出力されるようにベンチマークの内容を調整する。
【0128】
また、図2に示したファイルシステムFS上の独自のパスにノードごとのベンチマークのログが出力されることにしてもよい。この場合、第1の実行部701は、例えば、ファイルシステムFSから、ノード群N[1]~N[m]それぞれのベンチマーク実行時間を収集してもよい。
【0129】
収集されたベンチマーク実行時間は、例えば、図8に示すようなベンチマーク実行時間テーブル800に記憶される。ベンチマーク実行時間テーブル800は、例えば、ノードNiのメモリ402、ディスク404などの記憶装置により実現される。
【0130】
図8は、ベンチマーク実行時間テーブル800の記憶内容の一例を示す説明図である。図8において、ベンチマーク実行時間テーブル800は、ノードIDおよびベンチマーク実行時間のフィールドを有し、各フィールドに情報を設定することで、ベンチマーク実行時間情報800-1~800-mをレコードとして記憶する。
【0131】
ここで、ノードIDは、ノード群N[1]~N[m]に含まれるノードを一意に識別する識別子である。ベンチマーク実行時間は、ノードIDにより識別されるノードのベンチマーク実行時間である。例えば、ベンチマーク実行時間情報800-1は、ノード群N[1]のベンチマーク時間t1を示す。
【0132】
選択部702は、収集されたベンチマーク実行時間とNnodeとに基づいて、ジョブの実行にかかるアプリを実行するノードを選択する。具体的には、例えば、選択部702は、図8に示したベンチマーク実行時間テーブル800を参照して、ノード群N[1]~N[m]のうち、ベンチマーク実行時間が短いほうからNnode数分のノードを選択する。
【0133】
第2の実行部703は、選択されたノードにアプリを実行させる。具体的には、例えば、第2の実行部703は、選択されたNnode数分のノードそれぞれのノードIDをホスト名として、ホスト名を列挙したhostfileを作成する。そして、第2の実行部703は、アプリ実行の際に、作成したhostfile上のNnode行を引数により指定する。
【0134】
これにより、第2の実行部703は、ノード群N[1]~N[m]のうち、選択されたNnode数分のノードにジョブを実行させることができる。
【0135】
なお、上述したノードNiの機能部(例えば、第1の実行部701~第2の実行部703)は、ログインノード201または管理用ノード202により実現してもよい。また、ノードNiが、ログインノード201の機能(例えば、投入スクリプトP1)や管理用ノード202の機能(例えば、ジョブスケジューラP2)を有することにしてもよい。
【0136】
(ジョブスケジューリングシステム200の動作例)
つぎに、ジョブスケジューリングシステム200の動作例について説明する。
【0137】
図9は、ジョブスケジューリングシステム200の動作例を示す説明図である。図9において、ジョブスケジューリングシステム200内のログインノード201、管理用ノード202、ノードN1~NnおよびファイルシステムFSが示されている。ここでは、ノードN1~NnのうちのノードN1がジョブスクリプトP3を実行する場合を想定する。
【0138】
まず、ログインノード201は、投入スクリプトP1により、ユーザUからパラメータ900の指定を受け付ける。ユーザUは、投入スクリプトP1を操作してジョブの実行を依頼するユーザであり、図2に示したクライアント端末203に対応する。パラメータ900は、Nnode、tcmpt、tcomm、tbench、pabn、αabnを含む。
【0139】
そして、ログインノード201は、投入スクリプトP1により、パラメータ900の指定に基づいて、性能モデルMを作成する。つぎに、ログインノード201は、投入スクリプトP1により、性能モデルMを用いて、E[C]を最小化するNspareを決定する。そして、ログインノード201は、投入スクリプトP1により、管理用ノード202に対して、NnodeおよびNspareを指定して、ジョブを投入する。
【0140】
管理用ノード202は、ジョブスケジューラP2により、投入されたジョブを、ノードN1~Nnのうちの利用可能なノード群に割り当てて、ジョブスクリプトP3を実行する。ファイルシステムFS内のジョブスクリプトP3の本体にアクセスするためのパスは、例えば、投入スクリプトP1から指定される。また、ジョブスクリプトP3が持つ全情報は、例えば、ジョブスケジューラP2経由で投入スクリプトP1から渡される。
【0141】
なお、ジョブ・ノードのリストなどのスケジューリングを行うための情報は、例えば、ジョブスケジューラP2が保持している。また、ノードN1~Nnから利用可能なノード群を特定する処理については、既存のいかなる技術を用いることにしてもよい。例えば、ジョブスケジューラP2は、ジョブが未割り当てのノードを特定してもよいし、CPU使用率等に余裕があるノードを特定してもよい。
【0142】
ノードN1は、ジョブスクリプトP3により、ジョブが割り当てられたノード群それぞれにベンチマークを実行させて、アプリ実行に使用するノードのノードリスト901を作成する。そして、ノードN1は、ジョブスクリプトP3により、ノードリスト901を用いて、Nnode数分のノードを選択してアプリを実行する。アプリやベンチマークの実行に必要な情報(アプリやベンチマークの実行形式のパス、引数など)は、例えば、ジョブスケジューラP2経由で投入スクリプトP1からジョブスクリプトP3に渡される。
【0143】
ここで、図10を用いて、アプリを実行するノード間の接続例について説明する。
【0144】
図10は、ノード間の接続例を示す説明図である。図10において、ノードN1,N2,N3,N4は、ジョブの実行のために確保されたノード群N[1]~N[m]の一例である。ノードN1,N3,N4は、アプリを実行するノードとして選択されたNnode数分のノードの一例である。
【0145】
ノードN1は、ジョブスクリプトP3により、ノードN1,N3,N4に対してアプリの実行を依頼する。各ノードN1,N3,N4へのアプリの実行依頼は、例えば、MPIライブラリにより実装されているコマンド(mpiexecまたはmpirun)によって実現される。
【0146】
また、アプリによって行われるノード間の通信は、例えば、スイッチ1001を介して行われる(図10では、スイッチ1001によるツリー構造を想定)。これにより、ジョブスケジューリングシステム200では、非連続の物理的配置にあるノード間においても高性能な通信が可能である。
【0147】
(ジョブの実行例)
つぎに、図11を用いて、ジョブの実行例について説明する。
【0148】
図11は、ジョブの実行例を示す説明図である。ログインノード201は、パラメータ(Nnode、tcmpt、tcomm、pabn、αabn、tbench)の指定に基づいて、性能モデルMを作成する。ログインノード201は、性能モデルMを用いて、E[C]を最小化するNspareを決定する。ここでは、Nnodeを「Nnode=3」とし、Nspareが「Nspare=1」に決定された場合を想定する。この場合、管理用ノード202は、NspareとNnodeとを合計した4つのノードにジョブを割り当てる。
【0149】
図11において、ノード1101~1104は、ノードN1~Nnに含まれるノードであり、ジョブの実行のために確保されたノード群N[1]~N[m]の一例である。ここでは、ノード1101を、ジョブスクリプトP3(例えば、図9参照)を実行するノードNiとする。
【0150】
図11中、「ベンチ」は、各ノード1101~1104のベンチマークの実行時間を示す。また、「収集」は、各ノード1101~1104のベンチマーク実行時間の収集にかかる時間である。ただし、ベンチマーク実行時間の収集にかかる時間は、無視できるほど小さいと仮定する。また、「計算」は、アプリにおける計算時間を示す。tcmptは、アプリ全体の計算時間の合計に相当する。「通信」は、アプリにおけるノード間の通信時間を示す。tcommは、アプリ全体の通信時間の合計に相当する。
【0151】
ノード1101は、ノード1101~1104それぞれにベンチマークを実行させる。そして、ノード1101は、ノード1101~1104それぞれのベンチマーク実行時間を収集する。ここでは、ノード1103で異常が発生しており、ノード1103のベンチマーク実行時間がノード1101,1102,1104に比べて長くなっている。
【0152】
ノード1101は、「Nnode=3」に基づいて、アプリを実行するノードとして、ベンチマーク時間が短いほうから3つ分のノード1101,1102,1104を選択する。ここでは、異常ノード数「1」がNspare以下のため、ノード1103を異常ノードとして排除することができる。
【0153】
そして、ノード1101は、選択したノード1101,1102,1104にアプリを実行させる。これにより、ノード1101は、ジョブの実行にかかるアプリが異常ノードで実行されて計算性能が低下するのを防ぐことができる。ノード時間は、(ノード数:4)×(使用時間:Tx)となる(図11中の点線枠1110の面積に相当)。
【0154】
(ログインノード201のジョブ投入処理手順)
つぎに、ログインノード201のジョブ投入処理手順について説明する。ジョブ投入処理は、例えば、ジョブスケジューリング処理の一部に相当する。
【0155】
図12および図13は、ログインノード201のジョブ投入処理手順の一例を示すフローチャートである。図12のフローチャートにおいて、まず、ログインノード201は、クライアント端末203から、ジョブの投入依頼を受け付けたか否かを判断する(ステップS1201)。
【0156】
ジョブの投入依頼には、例えば、パラメータ(Nnode、tcmpt、tcomm、pabn、αabn、tbench)の指定、ジョブの計算内容、最大使用時間(wall-time)などの情報が含まれる。ここで、ログインノード201は、ジョブの投入依頼を受け付けるのを待つ(ステップS1201:No)。
【0157】
ログインノード201は、ジョブの投入依頼を受け付けた場合(ステップS1201:Yes)、Nspareを「Nspare=0」とし(ステップS1202)、E[C]を算出するEC算出処理を実行する(ステップS1203)。EC算出処理の具体的な処理手順については、図14を用いて後述する。
【0158】
そして、ログインノード201は、EC_bestを、ステップS1203において算出されたE[C]とし(ステップS1204)、Nspare_bestを「Nspare_best=0」とする(ステップS1205)。つぎに、ログインノード201は、iを「i=1」とする(ステップS1206)。
【0159】
そして、ログインノード201は、Nspareを「Nspare=i」として(ステップS1207)、ジョブの投入依頼に含まれるパラメータの指定に基づいて、EC算出処理を実行する(ステップS1208)。EC算出処理の具体的な処理手順については、図14を用いて後述する。
【0160】
つぎに、ログインノード201は、ステップS1208において算出されたE[C]が、EC_bestより小さいか否かを判断する(ステップS1209)。ここで、E[C]がEC_bestより小さい場合(ステップS1209:Yes)、ログインノード201は、EC_bestを、ステップS1208において算出されたE[C]とする(ステップS1210)。
【0161】
そして、ログインノード201は、Nspare_bestを「Nspare_best=i」として(ステップS1211)、図13に示すステップS1301に移行する。また、ステップS1209において、E[C]がEC_best以上の場合には(ステップS1209:No)、ログインノード201は、図13に示すステップS1301に移行する。
【0162】
図13のフローチャートにおいて、まず、ログインノード201は、iをインクリメントして(ステップS1301)、iがNnodeより大きいか否かを判断する(ステップS1302)。ここで、iがNnode以下の場合(ステップS1302:No)、ログインノード201は、ステップS1207に移行する。
【0163】
一方、iがNnodeより大きい場合は(ステップS1302:Yes)、ログインノード201は、Nspareを「Nspare=Nspare_best」とする(ステップS1303)。そして、ログインノード201は、Nspareを指定して、ジョブを投入し(ステップS1304)、本フローチャートによる一連の処理を終了する。
【0164】
これにより、ログインノード201は、ノード時間(コスト)の期待値を最小化する予備ノード数を指定して、ジョブを投入することができる。
【0165】
つぎに、図12に示したステップS1203,S1208のEC算出処理の具体的な処理手順について説明する。
【0166】
図14は、EC算出処理の具体的処理手順の一例を示すフローチャートである。図14のフローチャートにおいて、まず、ログインノード201は、NnodeとNspareとに基づいて、上記式(1)を作成する(ステップS1401)。そして、ログインノード201は、NtotalとNabnとに基づいて、上記式(1)および(2)から上記式(3)を作成する(ステップS1402)。
【0167】
つぎに、ログインノード201は、sを「s=0」とし(ステップS1403)、iを「i=0」とする(ステップS1404)。そして、ログインノード201は、Ntotalとpabnとに基づいて、下記式(15)からsを算出する(ステップS1405)。下記式(15)は、上記式(6)に対応する。
【0168】
【数4】
【0169】
つぎに、ログインノード201は、iをインクリメントして(ステップS1406)、iがNspareより大きいか否かを判断する(ステップS1407)。ここで、iがNspare以下の場合(ステップS1407:No)、ログインノード201は、ステップS1405に戻る。
【0170】
一方、iがNspareより大きい場合(ステップS1407:Yes)、ログインノード201は、[Nabn≦Nspare]を「P[Nabn≦Nspare]=s」とする(ステップS1408)。つぎに、ログインノード201は、上記式(10)を用いて、E[Ttotal]を算出する(ステップS1409)。
【0171】
具体的には、例えば、ログインノード201は、P[Nabn>0]とαabnとtbenchとに基づいて、上記式(4)および(5)を作成する。また、ログインノード201は、tcmptとtcommとαabnとP[Nabn≦Nspare]とに基づいて、上記式(7)および(8)を作成する。そして、ログインノード201は、上記式(4)、(5)、(7)、(8)および(9)から上記式(10)を作成し、E[Ttotal]を算出する。
【0172】
そして、ログインノード201は、算出したE[Ttotal]を用いて、上記式(11)からE[C]を算出して(ステップS1410)、EC算出処理を呼び出したステップに戻る。
【0173】
これにより、ログインノード201は、ノード時間(コスト)の期待値を算出することができる。
【0174】
(ノードNiのジョブ実行制御処理手順)
つぎに、ノードNiのジョブ実行制御処理手順について説明する。ノードNiは、ノード群N[1]~N[m]のうちのジョブスクリプトP3を有するノードである。ジョブ実行制御処理は、例えば、ジョブスケジューリング処理の一部に相当する。
【0175】
図15は、ノードNiのジョブ実行制御処理手順の一例を示すフローチャートである。図15のフローチャートにおいて、まず、ノードNiは、ジョブが割り当てられたノード群N[1]~N[m]の各ノードにベンチマークを実行させる(ステップS1501)。
【0176】
つぎに、ノードNiは、各ノードのベンチマーク実行時間を収集する(ステップS1502)。そして、ノードNiは、収集した各ノードのベンチマーク実行時間が昇順となるように、ノード群N[1]~N[m]それぞれのノードIDをソートする(ステップS1503)。
【0177】
つぎに、ノードNiは、ソート後のノードIDを参照して、ベンチマーク実行時間が短いほうからNnode数分のノードを選択する(ステップS1504)。そして、ノードNiは、選択したNnode数分のノードでアプリを実行して(ステップS1505)、本フローチャートによる一連の処理を終了する。
【0178】
これにより、ノードNiは、ユーザに異常ノードが割り当てられてアプリの計算性能が低下するのを抑えて、ノード時間の増大を抑制することができる。
【0179】
(E[C]の削減例)
つぎに、本手法を適用した場合のE[C]の削減例について説明する。まず、図16Aおよび図16Bを用いて、パラメータとして指定されるpabn、αabn、tbenchの算出例について説明する。
【0180】
図16Aおよび図16Bは、各ノードのベンチマーク時間の具体例を示す説明図である。図16Aにおいて、棒グラフ1601(96本の棒グラフ)は、ノードN1~Nnのうちの96ノードでジョブAを実行した場合の各ノードのベンチマーク時間を降順にソートして表す。棒グラフ1601によれば、先頭の2ノードが異常ノードといえる。
【0181】
図16Bにおいて、棒グラフ1602(96本の棒グラフ)は、ノードN1~Nnのうちの96ノードでジョブBを実行した場合の各ノードのベンチマーク時間を降順にソートして表す。棒グラフ1602によれば、先頭の3ノードが異常ノードといえる。
【0182】
benchは、例えば、非異常ノードのベンチマーク時間の平均値から算出することができる。ここでは、tbenchは、「tbench=0.0167[s]」となる。また、αabnは、例えば、異常ノード、非異常ノードそれぞれのベンチマーク時間の平均値の比から算出することができる。ここでは、αabnは、「αabn=3.53」となる。また、pabnは、例えば、最尤推定により算出することができる。ここでは、pabnは、「pabn={(2+3)/2}/96=0.026」となる。
【0183】
つぎに、E[C]の予測例について説明する。ここでは、Nnode=100として、計算負荷の異なる3つのケース「(tcmpt,tcomm)=(100秒,0秒),(50秒,50秒),(10秒,90秒)」について、上記式(11)からノード時間の期待値(E[C])を予測した場合を例に挙げて説明する。
【0184】
図17は、E[C]の予測例を示す説明図である。図17において、折れ線グラフ1701は、「(tcmpt,tcomm)=(100秒,0秒)」として、Nspareを1から15まで順に変化させた場合のE[C]の変化を示す。ただし、図17中、縦軸は、E[C]を示す。横軸は、Nspareを示す。また、As-isは、本手法を使用しない場合のE[C]を示す。
【0185】
折れ線グラフ1702は、「(tcmpt,tcomm)=(50秒,50秒)」として、Nspareを1から15まで順に変化させた場合のE[C]の変化を示す。折れ線グラフ1703は、「(tcmpt,tcomm)=(10秒,90秒)」として、Nspareを1から15まで順に変化させた場合のE[C]の変化を示す。
【0186】
折れ線グラフ1701では、Nspareが「Nspare=8」のときにE[C]が最小となり、As-isのE[C]よりも(1/3.1)倍程度にE[C]を削減できると推定される。なお、最適値「Nspare=8」は、108ノードを確保して8ノードを除外すれば、ほぼ異常ノードを排除でき、ノード時間の期待値が最小値をとることを意味する。
【0187】
折れ線グラフ1702では、Nspareが「Nspare=7」のときにE[C]が最小となり、As-isのE[C]よりも(1/2)倍程度にE[C]を削減できると推定される。折れ線グラフ1703では、Nspareが「Nspare=5」のときにE[C]が最小となり、As-isのE[C]よりも(1/1.2)倍程度にE[C]を削減できると推定される。
【0188】
なお、上述した説明では、ユーザが投入するジョブの中でベンチマークを実行する場合を例に挙げて説明したが、これに限らない。例えば、ベンチマークの実行から異常ノードの除外までの操作を、ジョブスケジューリングシステム200の管理者側で行うことにしてもよい。
【0189】
この場合、例えば、1つのジョブに対して多数のノードが割り当てられる際に、管理者側(例えば、管理用ノード202)でユーザのアプリが実行される前に、ベンチマークの実行から異常ノードの除外までの操作を行う。そして、管理者側から異常ノードが排除されたノードのリストをユーザのアプリに引き渡すことで、アプリの性能低下の抑止やノードの利用効率の向上が期待される。
【0190】
また、管理者側(例えば、管理用ノード202)で上記操作を行う場合、例えば、管理用ノード202は、各ノードのベンチマーク実行時間の収集時に、ある指標を用いて異常ノードの検出を行うことにしてもよい。管理用ノード202は、例えば、異常ノードが多数検出された場合、ジョブスケジューリングシステム200から異常ノードを除外してもよい。異常ノードの除外が困難な場合、管理者側からユーザに対して通知するなどして、ユーザが不利益を被らないような仕組みを設けてもよい。また、管理用ノード202は、例えば、各ノードのベンチマーク実行時間から、性能モデルMのパラメータのうちのアプリに対して不変なもの(pabn、αabn、tbenchなど)を算出してもよい。
【0191】
また、物理的なノード配置が通信性能に比較的強く影響するメッシュやトーラス型のトポロジーを採用したスパコンについては、ユーザ側で異常ノードを除外すると配置が不連続になり、特定のノード間の通信レイテンシが増加する可能性がある。しかし、上述したようなシステムレベルでの異常ノードの除外を、高次元メッシュ・トポロジーを持つスパコンに対して適用する場合、例えば、通常の障害ノードの除外と同様の手法で、ネットワーク上で連続したノード群をユーザ側に提供することができる。
【0192】
以上説明したように、実施の形態にかかるジョブスケジューリングシステム200のログインノード201によれば、ジョブを実行するにあたり、パラメータの指定を受け付けることができる。パラメータは、例えば、Nnode、pabn、αabn、tbenchを含む。また、ログインノード201によれば、受け付けたパラメータの指定に基づいて、E[Ttotal]およびNtotalからE[C]を出力する性能モデルMを作成することができる。そして、ログインノード201によれば、作成した性能モデルMを用いて、E[C]を最小化するNspare(予備ノード数)を決定することができる。
【0193】
これにより、ログインノード201は、異常ノードの発生を考慮して冗長なノード数でジョブを投入するにあたり、ノード時間(コスト)の期待値を最小化する予備ノード数を探索して、ジョブを効率的に実行するためのノード数を決定することができる。例えば、ログインノード201は、ノード時間(コスト)の期待値を最小化する予備ノード数を指定して、ジョブを投入することができる。
【0194】
また、ログインノード201によれば、第1の処理時間、第2の処理時間を含むパラメータの指定を受け付けることができる。第1の処理時間は、アプリの実行時間のうち、異常ノードによる性能低下の影響を受ける処理時間である。第2の処理時間は、アプリの実行時間のうち、異常ノードによる性能低下の影響を受けない処理時間である。
【0195】
これにより、ログインノード201は、アプリの実行時間として、異常ノードによる性能低下の影響を受ける処理時間と、異常ノードによる性能低下の影響を受けない処理時間とを考慮して、性能モデルMを作成することができる。このため、ログインノード201は、アプリの特性を考慮して、E[C]を精度よく予測することができる。
【0196】
また、ログインノード201によれば、tcmpt、tcommを含むパラメータの指定を受け付けることができる。tcmptは、第1の処理時間の一例である。tcommは、第2の処理時間の一例である。
【0197】
これにより、ログインノード201は、ジョブ内で実行されるアプリの計算を全ノードが協調して行う場合に、アプリによって決まるパラメータとして、アプリにおける各ノードの計算時間とアプリにおけるノード間の通信時間とを任意に指定することができる。このため、ログインノード201は、アプリの特性を考慮した性能モデルMを作成することができ、E[C]の予測精度を向上させることができる。
【0198】
また、ログインノード201によれば、NnodeとNspareとpabnとに基づいて、ジョブ内に異常ノードが存在する存在確率(P[Nabn>0])を表す第1モデル式を作成し、第1モデル式とαabnとtbenchに基づいて、ジョブにおけるベンチマーク時間(P[Tbench=αabn・tbench]、P[Tbench=tbench])を表す第2モデル式を作成することができる。
【0199】
これにより、ログインノード201は、ジョブ内に異常ノードが存在する存在確率を考慮して、ジョブにおけるベンチマーク時間を予測することができる。
【0200】
また、ログインノード201によれば、NnodeとNspareとpabnとに基づいて、アプリの実行から異常ノードを排除できる排除確率(P[Nabn≦Nspare])を表す第3モデル式を作成することができる。そして、ログインノード201によれば、tcmptとtcommとαabnと第3モデル式とに基づいて、ジョブにおけるアプリ時間(P[Tapp=αabn・tcmpt+tcomm]、P[Tapp=tcmpt+tcomm])を表す第4モデル式を作成することができる。
【0201】
これによりログインノード201は、アプリの実行から異常ノードを排除できる排除確率を考慮して、ジョブにおけるアプリ時間を予測することができる。
【0202】
また、ログインノード201によれば、第2モデル式と第4モデル式とに基づいて、ジョブ時間の期待値(E[Ttotal])を表す第5モデル式を作成し、第5モデル式、NnodeおよびNspareに基づいて、性能モデルMを作成することができる。
【0203】
これにより、ログインノード201は、ジョブ時間の期待値を精度よく予測可能となり、ノード時間の予測精度を向上させることができる。
【0204】
また、実施の形態にかかるジョブスケジューリングシステム200のノードNiによれば、Ntotal分のノード群N[1]~N[m]にジョブが割り当てられた結果、ノード群それぞれにベンチマークを実行させることができる。Ntotalは、例えば、ログインノード201によって決定されたNspareと、ユーザによって指定されたNnodeとを合計した数である。そして、ノードNiによれば、ノード群N[1]~N[m]のうち、ベンチマーク実行時間が短いほうからNnode分のノードにアプリを実行させることができる。
【0205】
これにより、ノードNiは、ノード群N[1]~N[m]の中から、ベンチマークの実行にかかる時間が遅いノードを排除してアプリを実行させることができる。このため、ノードNiは、ユーザに異常ノードが割り当てられてアプリの計算性能が低下するのを抑えて、ノード時間の増大を抑制することができる。
【0206】
これらのことから、実施の形態にかかるジョブスケジューリングシステム200によれば、ジョブやハードウェア環境に手を加えることなく、異常ノードを除外してもノード時間の増大を抑制可能な最小のノード数を決定することができ、ジョブを効率的に実行することが可能となる。
【0207】
なお、本実施の形態で説明したスケジューリング方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本スケジューラは、ハードディスク、フレキシブルディスク、CD-ROM、DVD、USBメモリ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本スケジューラは、インターネット等のネットワークを介して配布してもよい。
【0208】
上述した実施の形態に関し、さらに以下の付記を開示する。
【0209】
(付記1)システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付け、
受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成し、
作成した前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する、
処理をコンピュータに実行させることを特徴とするジョブスケジューラ。
【0210】
(付記2)前記指定は、前記アプリケーションの実行時間のうち前記異常ノードによる性能低下の影響を受ける第1の処理時間と、前記異常ノードによる性能低下の影響を受けない第2の処理時間との指定を含む、ことを特徴とする付記1に記載のジョブスケジューラ。
【0211】
(付記3)前記第1の処理時間は、前記アプリケーションにおける各ノードの計算にかかる計算時間であり、
前記第2の処理時間は、前記アプリケーションにおけるノード間の通信にかかる通信時間である、
ことを特徴とする付記2に記載のジョブスケジューラ。
【0212】
(付記4)決定した前記予備ノード数と前記使用ノード数とを合計した数分のノード群に前記ジョブを割り当てられた結果、前記ノード群それぞれに前記ベンチマークを実行させ、
前記ノード群のうち、前記ベンチマークの実行に要した処理時間が短いほうから前記使用ノード数分のノードに前記アプリケーションを実行させる、
処理を前記コンピュータに実行させることを特徴とする付記1~3のいずれか一つに記載のジョブスケジューラ。
【0213】
(付記5)前記作成する処理は、
前記使用ノード数と前記予備ノード数と前記異常発生確率とに基づいて、前記ジョブ内に異常ノードが存在する存在確率を表す第1モデル式を作成し、
前記第1モデル式と前記比率と前記ベンチマーク時間に基づいて、前記ジョブにおけるベンチマーク時間を表す第2モデル式を作成し、
前記使用ノード数と前記予備ノード数と前記異常発生確率とに基づいて、前記アプリケーションの実行から前記異常ノードを排除できる排除確率を表す第3モデル式を作成し、
前記第1の処理時間と前記第2の処理時間と前記比率と前記第3モデル式とに基づいて、前記ジョブにおけるアプリケーション時間を表す第4モデル式を作成し、
前記第2モデル式と前記第4モデル式とに基づいて、前記ジョブの実行にかかる実行時間の期待値を表す第5モデル式を作成し、
作成した前記第5モデル式、前記使用ノード数および前記予備ノード数に基づいて、前記性能モデルを作成する、
ことを特徴とする付記2~4のいずれか一つに記載のジョブスケジューラ。
【0214】
(付記6)システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付け、
受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成し、
作成した前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する、
処理をコンピュータが実行することを特徴とするジョブスケジューリング方法。
【0215】
(付記7)システム内の1以上のノードによりジョブを実行するにあたり、前記ジョブの実行にかかるアプリケーションの使用ノード数と、前記システム内のノードの異常発生確率と、前記システム内の異常ノードの正常ノードに対する処理時間の比率と、前記ジョブ内で前記アプリケーションの前に実行されるベンチマークの実行にかかるベンチマーク時間との指定を受け付ける受付部と、
前記受付部によって受け付けた前記指定に基づいて、前記ジョブの実行にかかる実行時間の期待値、前記使用ノード数および前記ジョブにおける予備ノード数から、前記ジョブの実行にかかるリソース消費量の期待値を出力する性能モデルを作成する作成部と、
前記作成部によって作成された前記性能モデルを用いて、前記リソース消費量の期待値を最小化する前記予備ノード数を決定する決定部と、
前記決定部によって決定された前記予備ノード数と前記使用ノード数とを合計した数分のノード群に前記ジョブを割り当てられた結果、前記ノード群それぞれに前記ベンチマークを実行させる第1の実行部と、
前記ノード群のうち、前記ベンチマークの実行に要した処理時間が短いほうから前記使用ノード数分のノードに前記アプリケーションを実行させる第2の実行部と、
を含むことを特徴とするジョブスケジューリングシステム。
【符号の説明】
【0216】
101 情報処理装置
110,900 パラメータ
120,M 性能モデル
200 ジョブスケジューリングシステム
201 ログインノード
202 管理用ノード
203 クライアント端末
204 ストレージサーバ
210 ネットワーク
301,302,303,304,305,306,307,308,1101,1102,1103,1104,N1~Nn,Ni ノード
311,312,313,1001 スイッチ
400 バス
401 CPU
402 メモリ
403 ディスクドライブ
404 ディスク
405 通信I/F
406 可搬型記録媒体I/F
407 可搬型記録媒体
500,700 制御部
501 受付部
502 作成部
503 決定部
504 投入部
701 第1の実行部
702 選択部
703 第2の実行部
800 ベンチマーク実行時間テーブル
901 ノードリスト
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16A
図16B
図17