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

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

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

特開2024-69960リソース再構成プログラム、リソース再構成方法および情報処理システム
<>
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図1
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図2
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図3
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図4
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図5
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図6
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図7
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図8
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図9
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図10
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図11
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図12
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図13
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図14
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図15
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図16
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図17
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図18
  • 特開-リソース再構成プログラム、リソース再構成方法および情報処理システム 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024069960
(43)【公開日】2024-05-22
(54)【発明の名称】リソース再構成プログラム、リソース再構成方法および情報処理システム
(51)【国際特許分類】
   G06F 9/50 20060101AFI20240515BHJP
【FI】
G06F9/50 150C
G06F9/50 120A
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2022180279
(22)【出願日】2022-11-10
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】三輪 真弘
(57)【要約】
【課題】リソースの再構成を行うか否かを適切に決定可能にする。
【解決手段】処理部12は、ジョブ実行のためにリソースの再構成を要する第1ノードの再構成に要する再構成時間と、再構成後のジョブの実行時間と、第1ノードによるジョブの実行時の通信に伴う通信競合の、当該実行時間に対する影響を表す第1係数とに基づいて、ジョブを第1ノードに割り当てる場合の再構成からジョブの完了までに要する第1時間を算出する。処理部12は、リソースの再構成を要しない第2ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第2係数と実行時間とに基づいて、ジョブを第2ノードに割り当てる場合のジョブの完了までに要する第2時間を算出する。処理部12は、第1時間が第2時間よりも短い場合は第1ノードにおけるリソースの再構成を行い、第1時間が第2時間以上の場合は第1ノードにおけるリソースの再構成を行わない。
【選択図】図1
【特許請求の範囲】
【請求項1】
コンピュータに、
ジョブの割り当て候補であり前記ジョブの実行のためにリソースの再構成を要する第1ノードの前記再構成に要する再構成時間と、前記再構成後の前記ジョブの実行時間と、前記第1ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第1係数とに基づいて、前記ジョブを前記第1ノードに割り当てる場合の前記再構成から前記ジョブの完了までに要する第1時間を算出し、前記ジョブの割り当て候補であり前記リソースの前記再構成を要しない第2ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第2係数と前記実行時間とに基づいて、前記リソースの前記再構成を行わずに前記ジョブを前記第2ノードに割り当てる場合の前記ジョブの完了までに要する第2時間を算出し、
前記第1時間と前記第2時間とを比較し、前記第1時間が前記第2時間よりも短い場合は前記第1ノードにおける前記リソースの前記再構成を行い、前記第1時間が前記第2時間以上の場合は前記第1ノードにおける前記リソースの前記再構成を行わない、
処理を実行させるジョブ実行に伴うリソース再構成プログラム。
【請求項2】
前記ジョブの割り当て候補であり前記第1ノードを含む第1ノード群に対して前記第1時間を算出し、前記ジョブの割り当て候補であり前記第1ノードを含まない第2ノード群に対して前記第2時間を算出する、
処理を前記コンピュータに実行させる請求項1記載のリソース再構成プログラム。
【請求項3】
前記第1ノード群に属するノード間の通信の第1通信時間の測定結果に基づいて前記第1係数を算出し、前記第2ノード群に属するノード間の通信の第2通信時間の測定結果に基づいて前記第2係数を算出する、
処理を前記コンピュータに実行させる請求項2記載のリソース再構成プログラム。
【請求項4】
前記第1通信時間と所定の基準通信時間とに基づいて前記第1ノードによる前記ジョブの実行時の通信に伴う通信競合の有無を判定し、当該通信競合がない場合に前記第1係数を1に設定し、前記第2通信時間と前記基準通信時間とに基づいて前記第2ノードによる前記ジョブの実行時の通信に伴う通信競合の有無を判定し、当該通信競合がない場合に前記第2係数を1に設定する、
処理を前記コンピュータに実行させる請求項3記載のリソース再構成プログラム。
【請求項5】
前記ジョブの実行に用いられるノードに対して要求される、1つのノード当たりの前記リソースの量に基づいて、前記第1係数および前記第2係数を算出する、
処理を前記コンピュータに実行させる請求項1記載のリソース再構成プログラム。
【請求項6】
前記実行時間および前記第1係数の積と前記再構成時間との和を前記第1時間として算出し、前記実行時間および前記第2係数の積を前記第2時間として算出する、
処理を前記コンピュータに実行させる請求項1記載のリソース再構成プログラム。
【請求項7】
前記第1ノードにおける前記リソースの前記再構成を行う場合、前記第1ノードに前記ジョブを割り当て、前記第1ノードにおける前記リソースの前記再構成を行わない場合、前記第2ノードに前記ジョブを割り当てる、
処理を前記コンピュータに実行させる請求項1記載のリソース再構成プログラム。
【請求項8】
コンピュータが、
ジョブの割り当て候補であり前記ジョブの実行のためにリソースの再構成を要する第1ノードの前記再構成に要する再構成時間と、前記再構成後の前記ジョブの実行時間と、前記第1ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第1係数とに基づいて、前記ジョブを前記第1ノードに割り当てる場合の前記再構成から前記ジョブの完了までに要する第1時間を算出し、前記ジョブの割り当て候補であり前記リソースの前記再構成を要しない第2ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第2係数と前記実行時間とに基づいて、前記リソースの前記再構成を行わずに前記ジョブを前記第2ノードに割り当てる場合の前記ジョブの完了までに要する第2時間を算出し、
前記第1時間と前記第2時間とを比較し、前記第1時間が前記第2時間よりも短い場合は前記第1ノードにおける前記リソースの前記再構成を行い、前記第1時間が前記第2時間以上の場合は前記第1ノードにおける前記リソースの前記再構成を行わない、
ジョブ実行に伴うリソース再構成方法。
【請求項9】
ジョブの割り当て候補であり前記ジョブの実行のためにリソースの再構成を要する第1ノードの前記再構成に要する再構成時間と、前記再構成後の前記ジョブの実行時間とを記憶する記憶部と、
前記再構成時間と前記実行時間と前記第1ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第1係数とに基づいて、前記ジョブを前記第1ノードに割り当てる場合の前記再構成から前記ジョブの完了までに要する第1時間を算出し、前記ジョブの割り当て候補であり前記リソースの前記再構成を要しない第2ノードによる前記ジョブの実行時の通信に伴う通信競合の、前記実行時間に対する影響を表す第2係数と前記実行時間とに基づいて、前記リソースの前記再構成を行わずに前記ジョブを前記第2ノードに割り当てる場合の前記ジョブの完了までに要する第2時間を算出し、前記第1時間と前記第2時間とを比較し、前記第1時間が前記第2時間よりも短い場合は前記第1ノードにおける前記リソースの前記再構成を行い、前記第1時間が前記第2時間以上の場合は前記第1ノードにおける前記リソースの前記再構成を行わない処理部と、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はリソース再構成プログラム、リソース再構成方法および情報処理システムに関する。
【背景技術】
【0002】
現在、ハードウェアのリソースをプール化し、ノードとリソースとの接続関係をスイッチ経由で切り替えることで、ノードのリソース構成を変更可能なシステムが用いられている。このようなシステムは、ディスアグリゲーションシステムと言われる。プール化されるリソースには、例えば、GPU(Graphics Processing Unit)、FPGA(Field Programmable Gate Array)およびSSD(Solid State Drive)などがある。
【0003】
なお、サービスを1つのVM(Virtual Machine)で提供する場合だけでなく、複数のVMで提供する場合を考慮することで、サービスに用いられるハードウェアリソースをSLA(Service Level Agreement)を満たす範囲で小さくする管理装置の提案がある。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2018-116556号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ジョブをノードに割り当てる際に、割り当て先のノードにおいてジョブで要求されるリソースが不足する場合、リソースの再構成を要する。リソースの再構成は、時間がかかりジョブ完了の遅延要因となる。
【0006】
一方、ジョブで要求されるリソースを構成済のノードがある場合、当該ノードにジョブを割り当てることで、リソースの再構成を省略できる。しかし、当該ノードによるジョブの実行時の通信が他のノード間の通信と競合することがある。当該通信の競合もジョブ完了の遅延要因となる。
【0007】
このため、例えば単純にリソースの再構成不要のノードにジョブを割り当てたとしても、ジョブ完了の遅延が再構成を行う場合より改善するとは限らないという問題がある。
1つの側面では、本発明は、リソースの再構成を行うか否かを適切に決定可能にすることを目的とする。
【課題を解決するための手段】
【0008】
1つの態様では、リソース再構成プログラムが提供される。このリソース再構成プログラムは、コンピュータに次の処理を実行させる。コンピュータは、ジョブの割り当て候補でありジョブの実行のためにリソースの再構成を要する第1ノードの再構成に要する再構成時間と、再構成後のジョブの実行時間と、第1ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第1係数とに基づいて、ジョブを第1ノードに割り当てる場合の再構成からジョブの完了までに要する第1時間を算出する。コンピュータは、ジョブの割り当て候補でありリソースの再構成を要しない第2ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第2係数と実行時間とに基づいて、リソースの再構成を行わずにジョブを第2ノードに割り当てる場合のジョブの完了までに要する第2時間を算出する。コンピュータは、第1時間と第2時間とを比較し、第1時間が第2時間よりも短い場合は第1ノードにおけるリソースの再構成を行い、第1時間が第2時間以上の場合は第1ノードにおけるリソースの再構成を行わない。
【0009】
また、1つの態様では、コンピュータが実行するリソース再構成方法が提供される。また、1つの態様では、記憶部と処理部とを有する情報処理システムが提供される。
【発明の効果】
【0010】
1つの側面では、リソースの再構成を行うか否かを適切に決定できる。
【図面の簡単な説明】
【0011】
図1】第1の実施の形態の情報処理システムを説明する図である。
図2】第2の実施の形態の情報処理システムの例を示す図である。
図3】管理装置のハードウェア例を示す図である。
図4】ノード間の接続例を示す図である。
図5】ラック内のノードとリソースプールとの接続例を示す図である。
図6】ジョブの割り当て候補となる空きノードの例を示す図である。
図7】通信競合が発生する例を示す図である。
図8】ノードのリソースの再構成の例を示す図である。
図9】通信競合が回避される例を示す図である。
図10】管理装置の機能例を示す図である。
図11】ジョブ管理テーブルの例を示す図である。
図12】基準通信時間テーブルの例を示す図である。
図13】通信性能テーブルの例を示す図である。
図14】評価値テーブルの例を示す図である。
図15】ジョブスケジューラの処理例を示すフローチャートである。
図16】ノード選択処理の例を示すフローチャートである。
図17】ノード組合せの抽出処理例を示すフローチャートである。
図18】ノード組合せの評価処理例を示すフローチャートである。
図19】ジョブの実行に係るトータル時間の相違の例を示す図である。
【発明を実施するための形態】
【0012】
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0013】
図1は、第1の実施の形態の情報処理システムを説明する図である。
情報処理システム1は、情報処理装置10およびノード20,20a,20b,20c,20d,…を有する。情報処理装置10およびノード20,20a,…は、管理ネットワーク30に接続される。ノード20,20a,…は、ノード間ネットワーク40に接続される。管理ネットワーク30は、情報処理装置10とノード20,20a,…との通信に用いられるネットワークである。ノード間ネットワーク40は、ノード間の通信に用いられるネットワークである。
【0014】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)、GPU、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGAなどの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0015】
ノード20,20a,…も情報処理装置10と同様のハードウェアを有する。また、情報処理装置10の機能は、ノード20,20a,…の何れかが備えてもよい。すなわち、ノード20,20a,…の何れかが情報処理装置10として動作してもよい。
【0016】
情報処理システム1は、ディスアグリゲーションシステムである。すなわち、情報処理システム1は、ノード20,20a,…それぞれのリソース構成を変更可能である。情報処理装置10は、ノード20,20a,…それぞれのリソース構成を管理し、ノード20,20a,…それぞれのリソースの再構成を制御する。リソースには、例えば、GPU、FPGAおよびSSDなどがある。
【0017】
処理部12は、ジョブの実行要求を受け付ける。ジョブの実行要求は、実行に要求されるノードの数と、ジョブの実行に要求されるリソースの情報と、ジョブの実行時間の情報とを含む。当該リソースの情報は、例えばGPUの数やSSDの容量など、ノード当たりに要求されるリソースの種類とその量とを含む。ジョブの実行時間は、当該ジョブを実行する時間である。処理部12は、ノード20,20a,…のうち、要求された数のノードにジョブを割り当て、割り当て先のノードにジョブを実行させる。割り当て先のノードは、要求されたリソースを有するノードとなる。
【0018】
ノード20,20a,…に接続されるリソースは、例えばノード20,20a,…のグループ単位に設けられたリソースプールにプール化して管理される。リソースプールは、複数のリソースを集約して備える装置である。グループは例えば各ノードが搭載されるラック単位のグループである。例えば、あるグループに属する各ノードと当該グループに対応するリソースプールの各リソースとが、当該グループに対応するPCIe(Peripheral Component Interconnect-Express)スイッチなどの接続装置を介して接続される。この場合、接続装置により当該グループ内で、ノードとリソースとの接続関係を変更することで、ノードにおけるリソースの再構成が行われる。なお、図1ではリソースプールや接続装置の図示は省略されている。
【0019】
ここで、要求されたリソースを有していないノードにジョブを割り当てる場合、当該ノードのリソースの再構成を要する。リソースの再構成では、例えば当該ノードで利用可能なGPU数を増やすなどの構成変更が行われる。リソースの再構成には、例えば数秒から数分の時間を要する。具体的には、ノードがホットプラグ/リムーブに対応している場合、リソースの再構成は数秒程度となる。一方、ノードがホットプラグ/リムーブに非対応でありノードの再起動を行う場合は、リソースの再構成は数分を要する。
【0020】
リソースの再構成の所要時間を示す情報は、情報処理システム1が有するノードがホットプラグ/リムーブに対応しているか否かに応じて記憶部11に予め保持される。また、ジョブの実行要求に含まれるジョブの実行時間の情報も記憶部11に保持される。
【0021】
処理部12は、ノード20,20a,…において、ジョブの割り当て先の候補である第1ノードおよび第2ノードがある場合に、第1ノードおよび第2ノードのうちジョブの割り当て先のノードを次のように選択する。第1ノードは、ジョブの実行のためにリソースの再構成を要するノードである。第2ノードは、ジョブで要求されるリソースを構成済であり、ジョブの実行のためにリソースの再構成を要しないノードである。
【0022】
処理部12は、第1ノードにジョブを割り当てる場合の再構成からジョブの完了までに要する第1時間を算出する。第1時間は、第1ノードのリソースの再構成および再構成後の第1ノードでのジョブ実行開始から実行完了までの総所要時間となる。処理部12は、再構成時間と、再構成後のジョブの実行時間と第1ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第1係数とに基づいて第1時間を算出する。
【0023】
第1時間をTTotal1、再構成時間をTreconf、ジョブの実行時間をTjob、第1係数をa1とする。a1は1以上の実数である。第1時間TTotal1は、例えば式(1)で計算される。
【0024】
Total1=Treconf+a1×Tjob ・・・(1)
また、処理部12は、第2ノードにジョブを割り当てる場合のジョブの完了までに要する第2時間を算出する。第2時間は、第2ノードでのジョブ実行開始から実行完了までの総所要時間となる。第2時間は、リソースの再構成時間を含まない点が第1時間と異なる。処理部12は、第2ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第2係数とジョブの実行時間とに基づいて第2時間を算出する。
【0025】
第2時間をTTotal2、第2係数をa2とする。a2は1以上の実数である。第2時間TTotal2は、例えば式(2)で計算される。
Total2=a2×Tjob ・・・(2)
処理部12は、第1時間と第2時間とを比較する。処理部12は、第1時間が第2時間よりも短い場合(TTotal1<TTotal2の場合)、第1ノードにおけるリソースの再構成を行う。処理部12は、第1時間が第2時間以上の場合(TTotal1≧TTotal2の場合)、第1ノードにおけるリソースの再構成を行わない。
【0026】
なお、処理部12は、ジョブの割り当て候補である、第1ノードを含むノードの第1グループに属するノード間の通信の第1通信時間を所定の通信ベンチマークプログラムを用いて測定し、測定結果に基づいて第1係数a1を算出してもよい。より具体的には、処理部12は、第1グループに属するノード数と同数のノードを用いた、通信競合がない場合におけるノードの間の基準通信時間を予め取得しておき、第1通信時間と基準通信時間との比に基づいて第1係数a1を算出してもよい。同様に、処理部12は、ジョブの割り当て候補である、第2ノードを含むノードの第2グループに属するノード間の通信の第2通信時間の測定結果に基づいて第2係数a2を算出することができる。
【0027】
また、処理部12は、ジョブの実行のために1ノード当たりに要求されるリソースの量に基づいて、第1係数a1および第2係数a2を算出してもよい。1ノード当たりに要求されるリソースの量が多いほど、ノードの演算量が増え、ノード間の通信量が増えると推定される。このため、処理部12は、当該リソースの量が多いほど、第1係数a1および第2係数a2を大きくするようにしてもよい。
【0028】
処理部12は、第1ノードにおけるリソースの再構成を行う場合、リソースの再構成を第1ノードに指示して、第1ノードに当該再構成を実行させ、要求されたジョブの割り当て先のノードを第1ノードとする。処理部12は、第1ノードにおけるリソースの再構成を行わない場合、要求されたジョブの割り当て先のノードを、第1ノードではなく第2ノードとする。そして、処理部12は、割り当て先のノードにジョブを実行させる。
【0029】
図1では、割り当て候補のノードの例が示されている。ジョブに要求されるノードの数は2であるとする。例えば、1つ目の候補#1は、ノード20a,20bの組合せである。2つ目の候補#2は、ノード20a,20cの組合せである。説明の簡単のため、ノード20aは、ジョブの実行のためにリソースの再構成が不要であり、ジョブの割り当て先として確定されているものとする。
【0030】
ノード20bは、ジョブの実行のためにリソースの再構成を要する。すなわち、ノード20bは第1ノードに相当する。ノード20cは、ジョブの実行のためにリソースの再構成を要しない。すなわち、ノード20cは第2ノードに相当する。
【0031】
ジョブの割り当て先としてノード20bを選択する場合、例えば、ノード間ネットワーク40において他のノード間の既存の通信との通信路の競合による通信競合が発生しないものとする。一例として、ノード20,20dが他ジョブを実行しており、ノード間ネットワーク40の一部の通信路41を用いて通信しているとする。ノード20a,20bとの通信に用いられるノード間ネットワーク40の一部の通信路42は、通信路41とは別個である。このため、ノード20,20d間の通信とノード20a,20b間の通信とは競合しない。この場合、第1係数a1は、a1=1となる。第1係数a1=1は、ジョブの実行時間に対する通信競合の影響がない場合に相当する。
【0032】
一方、ジョブの割り当て先としてノード20cを選択する場合、ノード間ネットワーク40において他のノード間の既存の通信との通信路の競合による通信競合が発生するものとする。一例として、ノード20a,20cとがノード間ネットワーク40の通信路41を用いて通信することになり、ノード20,20dの既存の通信の通信路41で通信競合が発生するものとする。この場合、第2係数a2は、a2>1となる。
【0033】
a1=1またはa1が1近傍の場合、第1時間TTotal1は、再構成時間Treconfの影響を受け易い。一方、第2時間TTotal2は、第2係数a2の影響を受け易い。このため、再構成時間Treconfが比較的短く、第2係数a2が比較的大きい場合、TTotal1<TTotal2となる。この場合、ノード20bの再構成を行い、ノード20bにジョブを割り当てた方がジョブの実行完了までの遅延を低減できる。一方、再構成時間Treconfが比較的長く、第2係数a2が比較的小さい場合、TTotal2≦TTotal1となる。この場合、ノード20bの再構成を行わずにノード20cにジョブを割り当てた方がジョブの実行完了までの遅延を低減できる。
【0034】
なお、上記の例では、a1=1を例示したが、a1>1の場合も、処理部12は、Treconfとa1とa2とを用いたジョブ実行の総所要時間を評価し、当該評価結果を基に、リソースの再構成を行うか否かを判定し得る。
【0035】
以上説明したように、情報処理装置10によれば、第1ノードのリソースの再構成に要する再構成時間Treconfと、ジョブの実行時間Tjobと、第1係数a1とに基づいて、第1時間TTotal1が算出される。第1係数a1は、第1ノードによるジョブの実行時の通信に伴う通信競合の、実行時間Tjobに対する影響を表す。また、第2係数a2とジョブの実行時間Tjobとに基づいて、第2時間TTotal2が算出される。第2係数a2は、第2ノードによるジョブの実行時の通信に伴う通信競合の、実行時間Tjobに対する影響を表す。そして、第1時間TTotal1と第2時間TTotal2とが比較される。第1時間TTotal1が第2時間TTotal2よりも短い場合は第1ノードにおけるリソースの再構成が行われる。第1時間TTotal1が第2時間TTotal2以上の場合は第1ノードにおけるリソースの再構成が行われない。
【0036】
これにより、情報処理装置10は、通信競合の影響を考慮して、リソースの再構成を行うか否かを適切に決定できる。また、情報処理装置10は、リソースの再構成時間と通信競合の影響を考慮することにより、ジョブの実行完了までの所要時間が短くなるように、当該ジョブの割り当て先のノードの選択が可能になる。
【0037】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理システムの例を示す図である。
【0038】
情報処理システム2は、管理装置100およびノード200,200a,200b,…を有する。情報処理システム2は、ノード200,200a,200b,…それぞれのハードウェアのリソースの構成を変更可能なディスアグリゲーションシステムである。管理装置100およびノード200,200a,200b,…は、管理ネットワーク50に接続される。ノード200,200a,200b,…は、ノード間ネットワーク60に接続される。管理ネットワーク50は、例えばイーサネット(登録商標)のネットワークである。ノード間ネットワーク60は、例えばInfiniBandのネットワークである。ただし、ノード間ネットワーク60はイーサネットなどの他の種類のネットワークでもよい。
【0039】
管理装置100は、ジョブの実行要求を受け付け、実行要求に基づいてノード200,200a,200b,…に対するジョブの割り当てを制御するサーバコンピュータである。ジョブの実行要求は、ジョブの実行に要するノード数、ノードごとに要するハードウェアのリソース量およびジョブの実行時間の情報を含む。管理装置100は、ジョブの割り当ての必要に応じてノード200,200a,200b,…のリソースの再構成を制御する。管理装置100は、第1の実施の形態の情報処理装置10の一例である。
【0040】
ノード200,200a,200b,…は、割り当てられたジョブを実行するサーバコンピュータである。ノード200,200a,200b,…は、ノード間ネットワーク60を介して通信可能である。例えば、2つのノードを用いて、あるジョブを実行する場合、当該2つのノードは、ノード間ネットワーク60を介して相互に通信しながら、ジョブを実行する。
【0041】
図3は、管理装置のハードウェア例を示す図である。
管理装置100は、CPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。管理装置100が有するこれらのユニットは、管理装置100の内部でバスに接続されている。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0042】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、管理装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
【0043】
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、管理装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【0044】
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理装置100は、フラッシュメモリやSSDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【0045】
GPU104は、CPU101からの命令に従って、管理装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
【0046】
入力インタフェース105は、管理装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス、タッチパネル、タッチパッド、トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理装置100に、複数の種類の入力デバイスが接続されていてもよい。
【0047】
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
【0048】
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
【0049】
通信インタフェース107は、管理ネットワーク50に接続され、管理ネットワーク50を介してノード200,200a,200b,…を含む他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0050】
ノード200,200a,200b,…も、管理装置100と同様のハードウェアにより実現される。ノード200,200a,200b,…は、管理ネットワーク50だけでなくノード間ネットワーク60にも接続されるため、ノード間ネットワーク60に接続する通信インタフェースも有する。
【0051】
図4は、ノード間の接続例を示す図である。
各ノードは、ラックR1,R2,R3,R4の何れかに搭載される。例えば、ラックR1には、全ノードのうちのノード200,200aを含む一部のノードが搭載される。ラックR2には、全ノードのうちのノード200m,200nを含む一部のノードが搭載される。図示を省略しているが、ラックR3,R4にも全ノードのうちの一部のノードが搭載される。
【0052】
また、ラックR1,R2,R3,R4それぞれは、リソースプールを有する。リソースプールは、ハードウェアのリソースを集約して備える装置である。第2の実施の形態では、当該リソースとしてGPUを例示する。ただし、リソースプールにプール化されるリソースは、FPGAやSSDなどの他の種類のハードウェアを含んでもよい。例えば、ラックR1はリソースプール300を有する。ラックR2はリソースプール300aを有する。図示を省略しているが、ラックR3,R4にもリソースプールが搭載される。
【0053】
同一ラック内のノード間は、当該ラックに搭載されたノード間接続スイッチにより接続される。また、同一ラック内のノードとリソースプールとは、当該ラックに搭載されたPCIeスイッチにより接続される。例えば、ラックR1は、ノード間接続スイッチ61およびPCIeスイッチ71を有する。ノード間接続スイッチ61は、ラックR1に搭載されたノード200,200a,…を接続する。PCIeスイッチ71は、ラックR1に搭載されたノード200,200a,…とリソースプール300とを接続する。また、ラックR2は、ノード間接続スイッチ62およびPCIeスイッチ72を有する。ノード間接続スイッチ62は、ラックR2に搭載されたノード200m,200n,…を接続する。また、PCIeスイッチ72は、ラックR2に搭載されたノード200m,200n,…とリソースプール300aとを接続する。図示を省略しているが、ラックR3,R4にもノード間接続スイッチおよびPCIeスイッチが搭載される。
【0054】
ノード間接続スイッチ61,62を含む、各ラックのノード接続スイッチは、上位スイッチ65,66,67,68に接続される。上位スイッチ65,66,67,68によりラック間を跨ぐノード間の通信が可能となる。ノード間接続スイッチ61,62を含む、各ラックのノード接続スイッチ、および、上位スイッチ65,66,67,68は、何れもInfiniBandのスイッチであり、ノード間ネットワーク60を形成する。
【0055】
ノード間ネットワーク60のトポロジは、例えばFatTreeである。具体的には、各ノード間接続スイッチにおけるノードに接続するリンクの数と当該ノード間接続スイッチの上位スイッチ側のリンクの数が等しい構成となっている。あるノードから他ラックの通信相手ノードへのパケットの送信に用いる上位スイッチ側のリンクを通信相手ノードに応じて使い分けることで、各リンクの使用量をバランスする。ただし、ノード間ネットワーク60のトポロジは、FatTree以外のトポロジでもよい。ここで、リンクは、ノード間ネットワーク60に含まれる通信路である。
【0056】
図5は、ラック内のノードとリソースプールとの接続例を示す図である。
ノード200は、CPU201、RAM202、HDD203およびNIC(Network Interface Card)204を有する。ノード200aは、CPU201a、RAM202a、HDD203aおよびNIC204aを有する。NIC204,204aは、ノード間接続スイッチ61と接続する通信インタフェースである。ラックR1における他のノードもノード200,200aと同様のハードウェアを有する。また、CPU201,201aを含む、ラックR1の各ノードのCPUは、PCIeスイッチ71に接続される。PCIeスイッチ71は、CPU201,201aを含む、ラックR1の各ノードのCPUをルートコンプレックスとして認識し、リソースプール300に含まれる、エンドポイントのデバイスであるGPU301,302,…と接続する。PCIeスイッチ71は、ノードからの指示に応じて、ラックR1の各ノードのCPUと、リソースプール300のGPU301,302,…との接続関係を変更する。
【0057】
ここで、管理装置100は、ジョブの割り当て要求を受け付けると、現在ジョブを未割り当てである空きノードをジョブの割り当て候補とする。
図6は、ジョブの割り当て候補となる空きノードの例を示す図である。
【0058】
各ノードは、ノード番号により識別される。例えば、ノード200のノード番号は「0」であり、ノード200aのノード番号は「1」である。以下では、ノード番号nのノードを、ノード「n」のように表記する。1つのラックに搭載されるノードの数は4とする。すなわち、1つのノード間接続スイッチには4つのノードが接続される。また、ラックの総数は4であり、ノードの総数は16とする。
【0059】
この場合、ノード間ネットワーク60におけるFatTreeのトポロジでは、1つのノード間接続スイッチに対して、上位スイッチ65,66,67,68それぞれと接続する4つのリンクが存在する。ここで、ノード間接続スイッチ63はラックR3に搭載される。ノード間接続スイッチ64はラックR4に搭載される。
【0060】
ノード間接続スイッチ61には、ノード「0」~「3」が接続される。ノード間接続スイッチ62には、ノード「4」~「7」が接続される。ノード間接続スイッチ63には、ノード「8」~「11」が接続される。ノード間接続スイッチ64には、ノード「12」~「15」が接続される。
【0061】
図中、黒丸で示されるノード「3」、「4」、「7」、「8」~「15」は、ジョブ割り当て済のノードである。ジョブ割り当て済のノードは、先行するジョブを割り当て済で、当該ジョブを実行中であり、新たなジョブの割り当て候補からは除外される。白丸で示されるノード「0」~「2」、「5」、「6」は、ジョブ未割り当てのノードである。ジョブ未割り当てのノードは、新たなジョブの割り当て候補となる。更に、図中、ノードに接続された、「G」の文字が付された長方形は、当該ノードに接続されているGPUを示す。
【0062】
例えば、4つのノード、および、1ノード当たりGPU1個を要求するジョブへのノード割り当てを行う場合に、管理装置100は、ノード「0」、「1」、「2」、「5」、「6」から4つを選択するノードの組合せを、ジョブの割り当て先のノードの組合せ候補とする。なお、ノードの組合せは、ノード群と言われてもよい。
【0063】
このように、管理装置100は、ラックを跨いでジョブの割り当て先の候補のノードを選択できる。このとき、他のラックにおける割り当て先のノードの選択によっては、ジョブ実行時にノード間ネットワーク60の一部のリンクで通信競合が発生することがある。
【0064】
図7は、通信競合が発生する例を示す図である。
図7では、ノード間接続スイッチ61,62,63,64と、上位スイッチ65,66,67,68とを結ぶ線によって、スイッチ間のリンクが示されている。リンクに記載されている、例えば「4,8,12」などの数字は通信相手のノード番号であり、ノード間接続スイッチ61側から、当該ノード番号のノードと通信する場合に選択されるリンクを表す。
【0065】
例えば、ノード「1」がノード「5」と通信し、ノード「3」がノード「9」と通信する場合、ノード間接続スイッチ61と上位スイッチ66とを結ぶ同一のリンクが使用される。当該リンクの帯域が共有して使用されることで、通信競合による性能低下が発生する場合がある。この問題は、FatTree以外のトポロジでも発生し得る。
【0066】
ところで、ノードに対するGPUの接続構成は変更可能である。
図8は、ノードのリソースの再構成の例を示す図である。
図8(A)は、ノード「5」に接続されるGPUを、ノード「6」に接続し直す再構成の例を示す。図8(B)は、リソースプール300aにおいて使用されていないGPUをノード「6」に接続する再構成の例を示す。
【0067】
例えば、各リソースプールにおけるリソースの管理では、GPUなどのリソースの使用後はリソースプールに返却する方法や、構成変更が必要となるまでそのままとする方法がある。前者の場合、ジョブの割り当て先のノードに対して、要求されたGPU数に応じてリソースプールのGPUを接続すればよい。後者の場合、図8(A)のように、必要に応じてノード「5」に接続されたGPUを、ノード「6」に接続し直してもよい。あるいは、図8(B)のように、リソースプール300aに空きGPUがある場合、ノード「5」へのGPUの既存の接続を維持して、当該空きGPUをノード「6」に接続してもよい。
【0068】
このように、情報処理システム2では、ノードにおけるGPUの再構成によりジョブに要求されるGPUを備えたノードを用意することが可能である。当該再構成により図7で例示される通信競合を回避できることがある。
【0069】
図9は、通信競合が回避される例を示す図である。
図8(A)および図8(B)の何れかの再構成によりノード「6」にGPUを接続することで、管理装置100は、ノード「6」をジョブの割り当て先とすることができる。ノード「5」ではなく、ノード「6」をジョブ実行に使用することで、例えばノード「1」とノード「6」との通信ではノード間接続スイッチ61と上位スイッチ67とを結ぶリンクが使用される。ノード間接続スイッチ61と上位スイッチ67とを結ぶリンクは、ノード「3」がノード「9」と通信するときに用いられる、ノード間接続スイッチ61と上位スイッチ66とを結ぶリンクとは異なり、通信競合が回避される。
【0070】
通信競合は、ジョブの実行完了までの遅延に影響する。一方、通信競合を回避するためにリソースの再構成を行うとしても、当該再構成には時間を要し、ジョブの実行完了までの遅延に影響する。再構成に要する時間、すなわち、再構成時間は、例えば、ノードがホットプラグ/リムーブに対応しているか否かにより予め定められる。ホットプラグ/リムーブは、ノードの再起動を行わずに、GPUなどのリソースの接続を変更可能にする機能である。例えば、ノードがホットプラグ/リムーブに対応している場合、GPUの再構成は数秒程度となる。一方、ノードがホットプラグ/リムーブに非対応でありノードの再起動を行う場合は、GPUの再構成は数分を要する。
【0071】
そこで、管理装置100は、通信競合を考慮して、リソースの再構成を行うか否かを決定し、ジョブに対するノードの割り当てを行うことで、ジョブを効率的に実行可能にする機能を提供する。
【0072】
図10は、管理装置の機能例を示す図である。
管理装置100は、記憶部120およびジョブスケジューラ130を有する。記憶部120には、RAM102やHDD103の記憶領域が用いられる。ジョブスケジューラ130は、RAM102に記憶されたプログラムがCPU101により実行されることで実現される。
【0073】
記憶部120は、ジョブスケジューラ130の処理に用いられる情報を記憶する。記憶部120に記憶される情報は、ジョブ管理テーブル121、基準通信時間テーブル122、通信性能テーブル123、および、評価値テーブル124を含む。
【0074】
ジョブ管理テーブル121は、ジョブに要求されるノード数、ノード当たりGPU数およびジョブの実行時間などのジョブ情報を保持するテーブルである。
基準通信時間テーブル122は、通信ベンチマーク測定による通信競合の有無の判定に用いられる基準通信時間を保持するテーブルである。基準通信時間は、システムの運用開始前に予め計測され、基準通信時間テーブル122に登録される。通信ベンチマーク測定は、所定の通信ベンチマークプログラムを、対象の各ノードに短時間だけ実行させて、ノード間の通信時間を計測することで行われる。
【0075】
通信性能テーブル123は、ジョブを割り当てるノードの組合せ候補ごとの通信性能の測定結果の情報を保持するテーブルである。ノードの組合せ候補ごとの通信性能は、当該組合せ候補に対する通信ベンチマーク測定により取得される。
【0076】
評価値テーブル124は、ジョブを割り当てるノードの組合せ候補ごとのジョブ完了までのトータル時間の評価値を保持するテーブルである。トータル時間の評価には、通信性能テーブル123の情報に加え、ノードでGPUの再構成を行う場合には再構成時間も考慮される。
【0077】
なお、記憶部120は、上記の情報に加えて、各ノードが搭載されているラックや、各ノードに対するジョブの割り当て状況や、各ノードに接続されているGPUの数などの情報を保持する。
【0078】
ジョブスケジューラ130は、ジョブに対するノード200,200a,200b,…の割り当てを行い、割り当てたノードに当該ジョブを実行させる。ジョブスケジューラ130は、ジョブ情報取得部131、ノード割り当て部132およびノード選択部133を有する。
【0079】
ジョブ情報取得部131は、ジョブの実行要求の入力を受け付ける。ジョブの実行要求は、例えば管理ネットワーク50に接続されたクライアント装置から管理装置100に入力される。ジョブ情報取得部131は、実行要求に含まれる、ジョブに要求されるノード数、ノード当たりGPU数およびジョブの実行時間などのジョブ情報を取得し、ジョブ管理テーブル121に登録する。
【0080】
ノード割り当て部132は、ジョブ情報取得部131がジョブ情報を受け付けると、ジョブ情報に基づいて、ジョブに割り当てるノードの選択をノード選択部133に依頼する。ノード割り当て部132は、割り当てるノードの選択結果をノード選択部133から取得し、割り当て先のノードに当該ジョブを割り当てる。すなわち、ノード割り当て部132は、割り当て先のノードに当該ジョブの実行を指示する。
【0081】
ノード選択部133は、ノード割り当て部132によるノードの選択の依頼に応じて、当該ジョブに割り当てるノードを選択する。ノード選択部133は、ノード組合せ抽出部133aおよび評価部133bを有する。
【0082】
ノード組合せ抽出部133aは、ジョブに割り当てるノードの組合せを抽出する。具体的には、まず、ノード組合せ抽出部133aは、空きノードの中からジョブに割り当てるノードの組合せ候補を抽出する。ノード組合せ抽出部133aは、抽出した組合せ候補に対するジョブの実行完了までのトータル時間の評価を、評価部133bに依頼する。
【0083】
ここで、トータル時間は、ノードにおけるGPUの再構成開始からジョブの実行完了までの時間である。トータル時間は、ノードにおけるGPUの再構成時間と、再構成後のジョブの実行時間との合計となる。ただし、GPUの再構成が不要な場合、再構成時間=0となる。
【0084】
そして、ノード組合せ抽出部133aは、評価部133bによる評価で得られたトータル時間の評価値が最も良い組合せ候補を、ジョブに割り当てるノードの組合せとして決定する。ノード組合せ抽出部133aは、決定したノードの組合せを、ノード割り当て部132に応答する。
【0085】
評価部133bは、ノード組合せ抽出部133aの依頼に応じて、ノードの組合せ候補に対するジョブのトータル時間の評価を行う。トータル時間の評価では、評価部133bは、組合せ候補ごとのジョブ実行に係るトータル時間を算出する。ジョブの実行時間には、通信競合の影響が考慮される。通信競合の影響の有無は、比較的短時間で実行される所定の通信ベンチマーク測定により判定される。
【0086】
評価部133bは、通信ベンチマーク測定の結果を、通信性能テーブル123に登録する。また、評価部133bは、基準通信時間テーブル122および通信性能テーブル123に基づいて、ノードの組合せ候補ごとのトータル時間を算出し、評価値テーブル124に登録する。
【0087】
ここで、評価部133bはトータル時間を次の式(3)により算出する。
Total=Treconf+α×β×Tjob ・・・(3)
Totalは、トータル時間である。TTotalは、トータル時間の評価値と言われてもよい。Treconfは、ノードにおけるGPUの再構成時間である。Treconfは、ノードのホットプラグ/リムーブの対応状況に応じて評価部133bに予め与えられる。Tjobは、ジョブ実行時間の本体である。再構成不要の場合、Treconf=0である。Tjobには、ユーザにより入力されるジョブ実行時のジョブ実行時間上限値が使用される。なお、TTotal、TreconfおよびTjobの単位は、例えば秒である。
【0088】
αは、ジョブ実行時間Tjobに対する通信競合の影響を表す係数である。αは、短時間で実行が完了する通信ベンチマークプログラムによる通信時間の測定結果の、基準通信時間(通信競合の影響がないときの値)に対する倍率となる。基準通信時間は、各ノードにジョブ割り当てがされていない状態(通信競合がない状態)で当該通信ベンチマークプログラムを用いて事前に取得された基準の通信時間である。具体的には、α=(通信ベンチマークにより測定した通信時間)/基準通信時間である。なお、実際に実行されるジョブは通信ベンチマークプログラムとは異なり、通信以外の演算処理を含む。このため、αは、基準通信時間に対する倍率そのものでなくてもよく、基準通信時間に対する倍率を調整した値でもよい。例えば、当該倍率を更に0.5倍した値をαとするなど、影響を小さくする調整方法が考えられる。
【0089】
βは、ジョブ実行時間Tjobに対する通信競合の影響を表す係数である。βは、実行するジョブのノード当たりGPU数に応じた通信競合の影響を示す。ジョブのノード当たりGPU数が多いほど、ノード間通信が多く発生し、ジョブ実行時間への影響も大きいと考えられるためである。
【0090】
例えば、ノード当たりGPU数をNとすると、β=1+(1/8)×Nである。
この場合、ノード当たりGPU数=1では、β=1.1となる。ノード当たりGPU数=4では、β=1.5となる。Nに乗じる係数(1/8)の分母の定数は、例えば、ノード当たりに構成可能な最大のGPU数としてもよい。当該分母の定数は、事前に決定される。なお、(通信ベンチマーク測定で計測した通信時間)/基準通信時間≦1の場合は、通信競合の影響がない場合であり、評価部133bは、α=1、β=1とする。
【0091】
式(3)のα×βで表される係数は、第1の実施の形態の第1係数a1および第2係数a2に相当する。
図11は、ジョブ管理テーブルの例を示す図である。
【0092】
ジョブ管理テーブル121は、ジョブ番号、プログラム名、ノード数、ノード当たりGPU数および実行時間の項目を含む。ジョブ番号の項目には、ジョブの識別番号であるジョブ番号が登録される。プログラム名の項目には、ジョブのプログラム名が登録される。ノード数の項目には、ジョブの実行に要求されるノード数が登録される。ノード当たりGPU数の項目には、ジョブの実行に要求されるノード当たりGPU数が登録される。実行時間の項目には、ユーザにより実行要求で指定されたジョブの実行時間の上限値が登録される。
【0093】
例えば、ジョブ管理テーブル121は、ジョブ番号「1」、プログラム名「A」、ノード数「2」、ノード当たりGPU数「1」、実行時間「1:00:00」のレコードを有する。当該レコードはジョブ番号「1」のジョブのプログラム名が「A」、要求されるノード数が「2」、要求されるノード当たりGPU数が「1」、ジョブの実行時間の上限が「1:00:00」(1時間0分0秒)であることを示す。なお、ジョブの実行要求で指定されるジョブの実行時間は、通信競合の影響が考慮されていない。ジョブの実行時間は、実際のジョブ実行時の通信競合の影響により延びることがある。
【0094】
ジョブ管理テーブル121には、他のジョブ番号のレコードも登録される。
図12は、基準通信時間テーブルの例を示す図である。
基準通信時間テーブル122は、ノード数および基準通信時間(msec)の項目を含む。ノード数の項目には、ジョブを割り当てるノードの数が登録される。基準通信時間の項目には、基準通信時間が登録される。基準通信時間は、ノード間の通信において、通信競合が発生すると判定するための基準となる時間である。ノード数ごとの基準通信時間は、システムの運用開始前に通信ベンチマーク測定により予め取得され、基準通信時間テーブル122に登録される。基準通信時間の単位はmsec(ミリ秒)である。
【0095】
例えば、あるジョブを2つのノードに割り当てて、当該ノード間での通信ベンチマーク測定で得られる通信時間が基準通信時間以下の場合、通信競合なしと判定される。一方、当該ノード間での通信ベンチマーク測定で得られる通信時間が基準通信時間より長い場合、通信競合ありと判定される。
【0096】
例えば、基準通信時間テーブル122は、ノード数「2」、基準通信時間「4.70」のレコードを有する。当該レコードは、ジョブを2つのノードで実行する場合、当該2つのノードの基準通信時間が4.70msecであることを示す。
【0097】
基準通信時間テーブル122には、ノード数「3」の場合など、他のノード数に対するレコードも登録される。なお、例えば3以上のノードでのノード間の通信時間(基準通信時間も含む)は、それらノードを用いた通信ベンチマーク測定において得られた2つのノード間の通信時間の平均でもよいし、最大の通信時間でもよいし、最小の通信時間でもよい。
【0098】
図13は、通信性能テーブルの例を示す図である。
通信性能テーブル123は、項番、組合せ、通信時間(msec)および基準に対する倍率の項目を含む。項番の項目には、レコードの識別番号である項番が登録される。組合せの項目には、ジョブに割り当てるノードの組合せ候補が登録される。通信時間の項目には、当該ノードの組合せに対する通信ベンチマーク計測に得られた通信時間が登録される。通信時間の単位はmsecである。基準に対する倍率の項目には、基準通信時間に対する通信時間の倍率(=通信時間÷基準通信時間)が登録される。当該倍率は、式(3)のαに相当する。
【0099】
通信性能テーブル123の例では、図6で例示したノード「0」、「1」、「2」、「5」、「6」から4つを選択するノードの組合せ候補に対する、評価部133bによる通信性能の計測結果が示されている。
【0100】
例えば、通信性能テーブル123は、項番「1」、組合せ「0,1,2,5」、通信時間「5.30」、基準に対する倍率「1.08」のレコードを有する。当該レコードは、ノードの組合せ候補であるノード「0」、「1」、「2」、「5」での通信ベンチマーク計測で得られたノード間の通信時間が5.30msecであり、ノード数「4」の基準通信時間に対する通信時間の倍率αが1.08であることを示す。倍率α=1.08は、基準通信時間テーブル122におけるノード数「4」の基準通信時間4.90msecを用いて、α=5.30÷4.90=1.08と計算される。
【0101】
通信性能テーブル123には、他の組合せ候補に対するレコードも登録される。
図14は、評価値テーブルの例を示す図である。
評価値テーブル124は、項番、組合せ、基準に対する倍率および評価値の項目を含む。項番の項目には、レコードの識別番号である項番が登録される。組合せの項目には、ジョブに割り当てるノードの組合せ候補が登録される。基準に対する倍率の項目には、基準通信時間に対する通信時間の倍率αが登録される。評価値の項目には、評価部133bにより式(3)を用いて計算されたTTotalが登録される。
【0102】
評価値テーブル124には、図6で例示した4ノード(ノード当たりGPU数1)を用いるジョブに対するTTotalの計算結果が示されている。一例として、Tjob=3600秒、Treconf=150である。ノード「0」、「1」、「2」、「5」の組合せでは、GPUの再構成不要である。
【0103】
例えば、評価値テーブル124は、項番「1」、組合せ「0,1,2,5」、基準に対する倍率「1.08」、評価値「4276.80」のレコードを有する。このレコードは、ノードの組合せ候補であるノード「0」、「1」、「2」、「5」に対する倍率α=1.08であり、当該倍率αとβとを用いて計算されるTreconfが「4276.80」であることを示す。なお、上記の例において、β=1.1である。
【0104】
すなわち、組合せ「0,1,2,5」では、TTotal=1.1*1.08*3600=4276.80となる。
評価値テーブル124には、ノードの他の組合せ候補に対するTTotalも登録されている。
【0105】
組合せ「0,1,2,6」では、TTotal=150+1.1*1.02*3600=4189.20である。
組合せ「0,1,5,6」では、TTotal=150+1.1*1.12*3600=4585.20である。
【0106】
組合せ「0,2,5,6」では、TTotal=150+1.1*1.10*3600=4506.00である。
組合せ「1,2,5,6」では、TTotal=150+1.1*1.06*3600=4347.60である。
【0107】
評価値テーブル124の例の場合、項番「1」のレコードがGPUの再構成を行わない場合に相当する。項番「2」~「5」のレコードがGPUの再構成を行う場合に相当する。
【0108】
評価値テーブル124の例の場合、ノードの組合せ候補「0」、「1」、「2」、「6」のTTotalが最も小さい。このため、ノード割り当て部132は、ジョブの割り当て先のノードの組合せとして、ノード「0」、「1」、「2」、「6」をノード選択部133から取得し、当該ジョブにノード「0」、「1」、「2」、「6」を割り当てる。ノード「6」は、GPUの再構成を要するノードである。このため、ジョブ割り当てのために、ノード「6」においてGPUの再構成が行われることになる。
【0109】
なお、TTotalが最小の組合せが複数存在し、その中に再構成要のノードを含む組合せと再構成要のノードを含まない組合せがある場合、ノード組合せ抽出部133aは、再構成要のノードを含まない組合せから任意の組合せを選択することが考えられる。このようにすると、余計な再構成を行わずに済む。
【0110】
次に、管理装置100の処理手順を説明する。
図15は、ジョブスケジューラの処理例を示すフローチャートである。
(S10)ジョブ情報取得部131は、ジョブの実行要求を受け付けると、実行要求からジョブ情報を取得し、ジョブ管理テーブル121に登録する。ノード割り当て部132は、ジョブ管理テーブル121に登録されたジョブ情報を取得し、ジョブの実行に必要な構成の空きノード数があるか否かを判定する。ジョブの実行に必要な構成の空きノード数がある場合、ステップS11に処理が進む。ジョブの実行に必要な構成の空きノード数がない場合、処理が終了する。例えば、ノード割り当て部132は、ジョブの実行に必要な構成の空きノード数がない場合、所定時間経過後に当該ジョブに対して、ジョブの実行に必要な構成の空きノード数があるか否かを再度判定する。
【0111】
(S11)ノード割り当て部132は、1ラック内に割り当て可能であるか否かを判定する。1ラック内に割り当て可能な場合、ステップS12に処理が進む。1ラック内に割り当て可能でない場合、ステップS13に処理が進む。1ラック内に割り当て可能とは、ジョブの割り当て先のノードを、全て同一ラックから選択できる場合である。
【0112】
(S12)ノード割り当て部132は、該当のラック内のノードにジョブを割り当てる。そして、ステップS14に処理が進む。
(S13)ノード割り当て部132は、ノード選択部133にノード選択を依頼する。ノード選択部133は、ノード選択を実行し、選択結果をノード割り当て部132に応答する。ノード割り当て部132は、ノード選択部133により選択されたノードにジョブを割り当てる。ノード選択部133によるノード選択の詳細は後述される。
【0113】
(S14)ノード割り当て部132は、ステップS12またはステップS13の割り当て先のノードにジョブの実行を指示する。指示を受けたノードはジョブを実行する。そして、ジョブスケジューラ130の処理が終了する。
【0114】
図16は、ノード選択処理の例を示すフローチャートである。
ノード選択処理はステップS13に相当する。
(S20)ノード組合せ抽出部133aは、ノード組合せの抽出を行う。ノード組合せの抽出の詳細は後述される。
【0115】
(S21)評価部133bは、ノード組合せの評価を行う。ノード組合せの評価の詳細は後述される。ノード組合せの評価により、評価値テーブル124が作成される。
(S22)ノード組合せ抽出部133aは、評価値テーブル124の評価値(TTotal)を基に、ジョブの割り当て先のノードの組合せを選択する。このとき、ノード組合せ抽出部133aは、評価値テーブル124の各評価値TTtotalを比較し、TTotalが最小の組合せを選択する。ノード組合せ抽出部133aは、選択した組合せに属するノードをノード割り当て部132に応答する。そして、ノード選択処理が終了する。
【0116】
図17は、ノード組合せの抽出処理例を示すフローチャートである。
ノード組合せの抽出処理はステップS20に相当する。
(S30)ノード組合せ抽出部133aは、ジョブ管理テーブル121のジョブ情報に基づいて、ジョブ実行に必要な構成と同じ構成済みノードの組合せを抽出する。例えば、記憶部120は、空きノードにおけるGPUの接続数の情報を保持する。ノード組合せ抽出部133aは、記憶部120に記憶された当該情報に基づいて、構成済みノードの組合せを抽出し得る。
【0117】
例えば、図6の例において、空きノードであるノード「0」、「1」、「2」、「5」、「6」から4つ選択するノードの組合せのうち、ノード「0」、「1」、「2」、「5」の組合せが、ジョブ実行に必要な構成と同じ構成済みノードの組合せである。
【0118】
(S31)ノード組合せ抽出部133aは、構成変更が必要なノードの組合せを抽出する。例えば、ノード組合せ抽出部133aは、記憶部120に記憶された、空きノードにおけるGPUの接続数の情報に基づいて、構成変更が必要なノードの組合せを抽出し得る。例えば、図6の例において、空きノードであるノード「0」、「1」、「2」、「5」、「6」から4つ選択するノードの組合せのうち、ノード「0」、「1」、「2」、「5」の組合せ以外の組合せが、構成変更が必要なノードの組合せである。ノード「6」でGPUの再構成を要するためである。そして、ノード組合せの抽出処理が終了する。
【0119】
ステップS30,S31で抽出されたノードの組合せが、ジョブの割り当て先のノードの組合せ候補となる。
図18は、ノード組合せの評価処理例を示すフローチャートである。
【0120】
ノード組合せの評価処理はステップS21に相当する。
(S40)評価部133bは、式(3)の評価式により、ノードの組合せ候補ごとのトータル時間TTotalを評価する。このとき、評価部133bは、比較的短い時間、所定の通信ベンチマーク測定を行うことで、ノードの組合せ候補ごとの通信時間を計測して通信性能テーブル123に登録し、式(3)のαを求める。通信ベンチマーク測定は、組合せ候補に含まれる各ノードにより通信ベンチマークプログラムを比較的短い時間だけ実行させることで行われる。このとき、(通信ベンチマーク測定で計測した通信時間)/基準通信時間≦1の場合、評価部133bは通信競合の影響がないと判定し、式(3)においてα=1、β=1とする。(通信ベンチマーク測定で計測した通信時間)/基準通信時間>1の場合、評価部133bは、通信競合の影響があると判定し、α=(通信ベンチマーク測定で計測した通信時間)/基準通信時間、β=1+(1/8)×Nとする。
【0121】
(S41)評価部133bは、ステップS40の評価で計算したTTotalを、組合せ候補ごとに、評価値テーブル124に記録する。そして、ノード組合せの評価処理が終了する。
【0122】
図19は、ジョブの実行に係るトータル時間の相違の例を示す図である。
タイムチャート80,81,82は、それぞれ時刻t0を起点とした場合のジョブ実行完了までのトータル時間の例を示す。図19では、図に向かって左側から右側へ向かう方向が時間の正方向である。
【0123】
タイムチャート80は、GPUの構成変更を行わないが、通信競合の影響を受ける場合のトータル時間TTotalAを示す。
タイムチャート81は、構成変更を行うことで、通信競合の影響を受けなくなり、ジョブ自体の実行時間が改善する場合のトータル時間TTotalBを示す。TTotalB<TtotalAである。このように、構成変更(再構成)による初期オーバーヘッドがあったとしても、ジョブ自体の実行時間が改善することで、トータル時間も改善することがある。
【0124】
タイムチャート82は、構成変更を行わなくても、通信競合の影響が小さく、通信競合の影響による実行時間の増大が小さい場合のトータル時間TTotalCを示す。TTotalC<TTotalBである。このように、場合によって、通信競合の影響が小さければ、実行時間の増大が小さく、構成変更を行わない方が良い場合もあり得る。
【0125】
そこで、管理装置100は、リソースの再構成時間とジョブ実行時のノード間の通信競合の影響とを考慮して、ノードの組合せ候補ごとのトータル時間を算出し、トータル時間が最も短い組合せ候補を、ジョブの割り当て先のノードの組合せとする。
【0126】
これにより、管理装置100は、ノードにおけるGPUなどのリソースの再構成を行うか否かを適切に決定できる。また、管理装置100は、ジョブの実行完了までのトータル時間が短くなるように、ジョブの割り当て先のノードの選択が可能になる。
【0127】
なお、管理装置100の機能は、ノード200,200a,…の何れかで実現されてもよい。その場合、情報処理システム2は、管理装置100や管理ネットワーク50を含まなくてもよい。
【0128】
以上説明したように管理装置100は、次の処理を実行する。
ジョブスケジューラ130は、ジョブの割り当て候補でありジョブの実行のためにリソースの再構成を要する第1ノードにジョブを割り当てる場合の再構成からジョブの完了までに要する第1時間を算出する。このとき、ジョブスケジューラ130は、リソースの再構成に要する再構成時間と、再構成後のジョブの実行時間と、第1ノードによるジョブの実行時の通信に伴う通信競合の、実行時間に対する影響を表す第1係数とに基づいて、第1時間を算出する。また、ジョブスケジューラ130は、ジョブの割り当て候補でありリソースの再構成を要しない第2ノードに、リソースの再構成を行わずにジョブを割り当てる場合のジョブの完了までに要する第2時間を算出する。このとき、ジョブスケジューラ130は、第2ノードによるジョブの実行時の通信に伴う通信競合の、ジョブの実行時間に対する影響を表す第2係数と当該実行時間とに基づいて、第2時間を算出する。ジョブスケジューラ130は、第1時間と第2時間とを比較し、第1時間が第2時間よりも短い場合は第1ノードにおけるリソースの再構成を行い、第1時間が第2時間以上の場合は第1ノードにおけるリソースの再構成を行わない。
【0129】
これにより、管理装置100は、通信競合の影響を考慮して、リソースの再構成を行うか否かを適切に決定できる。前述の係数α×βは第1係数および第2係数の一例である。
ジョブスケジューラ130は、ジョブの割り当て候補であり第1ノードを含む第1ノード群に対して第1時間を算出し、ジョブの割り当て候補であり第1ノードを含まない第2ノード群に対して第2時間を算出してもよい。
【0130】
これにより、管理装置100は、通信競合の影響を考慮して、リソースの再構成を行うか否かを適切に決定できる。また、ジョブの完了までの時間が短くなるように、ジョブを割り当てるノード群、すなわち、ノードの組合せを決定できる。
【0131】
例えば、ジョブスケジューラ130は、第1ノード群に属するノード間の通信の第1通信時間の測定結果に基づいて第1係数を算出する。また、ジョブスケジューラ130は、第2ノード群に属するノード間の通信の第2通信時間の測定結果に基づいて第2係数を算出する。
【0132】
これにより、管理装置100は、第1係数および第2係数を適切に決定できる。例えば、第1係数は、第1通信時間と所定の基準通信時間との比に基づいて計算され得る。また、第2係数は、第2通信時間と基準通信時間との比に基づいて計算され得る。
【0133】
このとき、ジョブスケジューラ130は、第1通信時間と所定の基準通信時間とに基づいて第1ノードによるジョブの実行時の通信に伴う通信競合の有無を判定し、当該通信競合がない場合に第1係数を1に設定する。また、ジョブスケジューラ130は、第2通信時間と基準通信時間とに基づいて第2ノードによるジョブの実行時の通信に伴う通信競合の有無を判定し、当該通信競合がない場合に第2係数を1に設定する。
【0134】
これにより、管理装置100は、第1係数および第2係数を適切に決定できる。例えば、ジョブスケジューラ130は、第1通信時間が基準通信時間以下の場合、通信競合がないと判定し、第1係数を1に設定する。ジョブスケジューラ130は、第1通信時間が基準通信時間より長い場合、通信競合があると判定し、第1通信時間と基準通信時間との比に基づいて第1係数を設定する。同様に、ジョブスケジューラ130は、第2通信時間が基準通信時間以下の場合、通信競合がないと判定し、第2係数を1に設定する。ジョブスケジューラ130は、第2通信時間が基準通信時間より長い場合、通信競合があると判定し、第2通信時間と基準通信時間との比に基づいて第2係数を設定する。
【0135】
また、ジョブスケジューラ130は、ジョブの実行に用いられるノードに対して要求される、1つのノード当たりのリソースの量に基づいて、第1係数および第2係数を算出する。
【0136】
ここで、ジョブの実行に用いられるノード当たりのリソースの量が多いほど、ジョブ実行時の通信量が多い傾向となる。このため、ノード当たりのリソースの数が多いほど、ジョブの実行時間は通信競合の影響を受け易いと推定される。そこで、1つのノードに要求されるリソースの量に基づいて第1係数および第2係数を決定することで、管理装置100は、第1係数および第2係数を適切に決定できる。なお、ジョブ実行のために1ノード当たりに要求されるGPUの数やSSDの容量などは、リソースの量の一例である。
【0137】
また、ジョブスケジューラ130は、ジョブの実行時間および第1係数の積とリソースの再構成時間との和を第1時間として算出し、当該実行時間および第2係数の積を第2時間として算出する。
【0138】
これにより、管理装置100は、第1時間および第2時間を適切に算出できる。
更に、ジョブスケジューラ130は、第1ノードにおけるリソースの再構成を行う場合、第1ノードにジョブを割り当てる。一方、ジョブスケジューラ130は、第1ノードにおけるリソースの再構成を行わない場合、第2ノードにジョブを割り当てる。
【0139】
これにより、管理装置100は、ジョブの実行完了までのトータル時間を短くすることができる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
【0140】
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
【符号の説明】
【0141】
1 情報処理システム
10 情報処理装置
11 記憶部
12 処理部
20,20a,20b,20c,20d,… ノード
30 管理ネットワーク
40 ノード間ネットワーク
41,42 通信路
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19