JP6447329B2 - 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム - Google Patents

並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム Download PDF

Info

Publication number
JP6447329B2
JP6447329B2 JP2015079665A JP2015079665A JP6447329B2 JP 6447329 B2 JP6447329 B2 JP 6447329B2 JP 2015079665 A JP2015079665 A JP 2015079665A JP 2015079665 A JP2015079665 A JP 2015079665A JP 6447329 B2 JP6447329 B2 JP 6447329B2
Authority
JP
Japan
Prior art keywords
node
time
job
calculation
nodes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2015079665A
Other languages
English (en)
Other versions
JP2016200923A (ja
Inventor
崇紘 加賀美
崇紘 加賀美
剛 橋本
剛 橋本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015079665A priority Critical patent/JP6447329B2/ja
Priority to US15/073,722 priority patent/US10055252B2/en
Publication of JP2016200923A publication Critical patent/JP2016200923A/ja
Application granted granted Critical
Publication of JP6447329B2 publication Critical patent/JP6447329B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Retry When Errors Occur (AREA)
  • Multi Processors (AREA)

Description

本発明は並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラムに関する。
物理的なコンピュータである複数のノードと、それら複数のノードを互いに通信できるように接続する相互結合網(Interconnected Network)とを含む並列計算システムが存在する。相互結合網の形状(トポロジ)としては、メッシュ、トーラス、ハイパーキューブ、ツリーなどの種々のものが使用され得る。多数のノードを相互結合網に接続して並列に動作させることで、演算能力を向上させることができる。演算能力の高い並列計算システムは、複雑なシミュレーションなどの大規模科学技術計算に用いられることがある。
ユーザから一纏まりの処理の単位であるジョブが投入されると、並列計算システムは、投入されたジョブに対して1または2以上のノードを割り当てる。割り当てられたノードにおいて、投入されたジョブのプログラムが実行されることになる。複数のジョブが投入された場合、並列計算システムは、ジョブスケジューリングを行う。ジョブスケジューリングでは、ノード×時刻によって特定される計算リソースを複数のジョブに割り振り、各ジョブを実行させるノードおよび時刻を決定する。
なお、プロセスを配置可能な複数のノードのメモリを管理する計算機システムが提案されている。提案の計算機システムは、あるノードでプロセス生成が要求されたときに、そのノードのメモリに空きがない場合、メモリから排出するページを選択する。計算機システムは、選択したページが他のノードに排出可能である場合、ネットワークを介して当該ページを他のノードに送信する。一方、計算機システムは、選択したページが他のノードに排出可能でない場合、当該ノードの外部記憶装置にページを移動させる。
また、プロセッサをジョブに割り当てるジョブスケジューリングシステムが提案されている。提案のジョブスケジューリングシステムは、まず通常スケジューリングを行う。通常スケジューリングの結果、ある時刻に空きプロセッサが生じた場合、ジョブスケジューリングシステムは、空きプロセッサを用いて未開始のジョブをスケジュールよりも先行して開始させる。先行して開始したジョブが終了する前に空きプロセッサがなくなると、ジョブスケジューリングシステムは、当該先行して開始したジョブを次に空きプロセッサが生じるまで中断させる。また、先行して開始したジョブが終了する前に本来の開始時刻が到来すると、ジョブスケジューリングシステムは、通常スケジューリングによって割り当てたプロセッサに当該先行して開始したジョブを引き継がせる。
また、「チェックポイントリスタート」によってプロセスを一時的に中断することができるコンピュータシステムが提案されている。チェックポイントリスタートは、あるノード上で実行されているプロセスの状態を保存し、保存した状態に基づいて後で、中断前と同一または異なるノード上でプロセスを再開させる技術である。提案のコンピュータシステムは、論理ノード番号と物理ノード番号との対応関係を示すノード番号変換テーブルを生成する。コンピュータシステムは、プロセスを再開させる際、ノード番号変換テーブルを更新することで、中断前と異なるノード上での再開を可能とする。
特開平6−187308号公報 特開2010−182199号公報 特開2011−186606号公報
ところで、ジョブによって使用ノード数や実行時間は異なるため、並列計算システムを運用していると、ノード×時刻のリソース空間上において未使用の計算リソースが断片化されてしまうことがある。特に、未使用の計算リソースが時間方向に断片化され、新たなジョブを投入しようとしても、そのジョブの実行予定時間に相当する連続した計算リソースを確保できないことがある。このままでは、断片化された未使用の計算リソースが活用されず、ノード使用効率が低下してしまうおそれがある。
これに対し、ジョブの中断を許容して時間方向に断片化された計算リソースを使用する方法が考えられる。例えば、並列計算システムは、あるノードを用いてジョブを開始し、優先度の高い他のジョブの開始時刻が近づくと、メモリのデータを当該ノードの補助記憶装置などの退避領域に退避してジョブを一時停止させる。他のジョブが終了すると、並列計算システムは、退避したデータをメモリにロードして、当該ノードを用いてジョブを再開する。また、例えば、並列計算システムは、空き時間が生じた他のノードにメモリのデータを転送し、他のノードを用いてジョブを再開する。
このように、ジョブの中断を考慮してジョブスケジューリングを行うことで、並列計算システムのノード使用効率を改善する余地がある。しかし、ノード間でジョブのデータを転送することを含むスケジュール案を検討する際、転送時間の推定の精度が問題となる。転送元および転送先のノードの間に経由するノードが存在する場合、他のジョブの実行や他のジョブの通信の影響により、転送時間が大きく変動してしまうことがある。よって、ハードウェア性能などの静的な情報のみから転送時間を推定すると、推定した転送時間と実際の転送時間との誤差が大きくなってしまうおそれがある。
そして、転送時間の推定の精度が低いと、スケジュールを最適化できず、ノード使用効率を十分に向上させることが難しくなってしまう。例えば、並列計算システムが、データの転送時間と他のノードの空き時間から、転送先のノードで十分な実行時間を確保できると判断し、ジョブに割り当てるノードの変更を決定したとする。これに対し、実際の転送時間が推定よりも長くなり、転送先のノードで十分な実行時間を確保できなくなったとする。すると、結果的にジョブ中断が多く発生することになり、実質的なノード使用効率が低下してしまう。また、転送時間が長いと予めわかっていれば、ジョブに割り当てるノードを変更しないスケジュールが選択された可能性もある。このように、ジョブスケジューリングにおける転送時間の推定の精度は、ノード使用効率に影響する。
1つの側面では、本発明は、ノード使用効率を改善したジョブスケジューリングを可能とする並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラムを提供することを目的とする。
1つの態様では、通信部と制御部とを有する並列計算制御装置が提供される。通信部は、ネットワークで接続された複数のノードと通信する。制御部は、複数のノードの一部をあるジョブに割り当てる。制御部は、複数のノードのうち、ジョブに割り当てられた第1のノードから第2のノードへの経路上に位置する経由ノードを判定する。制御部は、経由ノードにおけるリソースの使用状況を示す指標値を取得する。制御部は、指標値とジョブのメモリ使用量とに基づいて、第1のノードから第2のノードにジョブのデータを転送する場合の転送時間の推定値を算出する。
また、1つの態様では、複数のノードと制御装置とを有する並列計算システムが提供される。また、1つの態様では、コンピュータに実行させるマイグレーション時間推定プログラムが提供される。
1つの側面では、ノード使用効率を改善したジョブスケジューリングが可能となる。
第1の実施の形態の並列計算システムを示す図である。 第2の実施の形態の並列計算システムを示す図である。 管理ノードのハードウェア例を示すブロック図である。 ジョブへの計算ノードの割り当て例を示す図である。 ジョブ中断方法の例を示す図である。 ジョブスワップのスケジュール例を示す図である。 チェックポイントリスタートの第1のスケジューリング例を示す図である。 チェックポイントリスタートの第2のスケジューリング例を示す図である。 マイグレーションのスケジューリング例を示す図である。 管理ノードと計算ノードの機能例を示すブロック図である。 定数テーブルの例を示す図である。 回帰分析テーブルの例を示す図である。 係数テーブルの例を示す図である。 ジョブ中断の手順例を示すフローチャートである。 スケジュール決定の手順例を示すフローチャートである。 時間推定の手順例を示すフローチャートである。 転送時間測定の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
図1は、第1の実施の形態の並列計算システムを示す図である。
第1の実施の形態の並列計算システムは、並列計算制御装置10と、ネットワーク20で接続されたノード21〜26とを有する。並列計算制御装置10は、ジョブスケジューリングを行い、ノード21〜26のうちの1または2以上のノードをジョブ13に割り当てる。並列計算制御装置10は、ジョブ13の実行中にジョブ13を中断させることがある。ジョブ13の中断において、並列計算制御装置10は、ジョブ13に割り当てるノードを変更することがある。その場合、ノード間でジョブ13のデータが転送される。
ノード21〜26は、ジョブ13のプロセスを実行することができる物理的なコンピュータである。ノード21〜26は、並列に動作することができる。ジョブ13に割り当てられたノードは、他のノードとは独立にジョブ13のプロセスを実行する。
ネットワーク20は、ノード21〜26を互いに通信できるように接続する相互結合網である。ネットワーク20のトポロジは、例えば、メッシュ、トーラス、ハイパーキューブ、ツリーなどの直接網である。直接網は、複数のノードを通信専用装置を介さずに直接接続し、各ノードにルーティング機能を設けるトポロジである。直接網の場合、2つのノード間の通信を、その経路上に位置する他のノードが中継することがある。
並列計算制御装置10は、通信部11および制御部12を有する。通信部11は、ノード21〜26と通信する。通信部11は、例えば、有線通信インタフェースまたは無線通信インタフェースである。制御部12は、ジョブスケジューリングを行い、ノード21〜26の一部をジョブ13に割り当てる。後述するように、制御部12は、スケジュールを決定するにあたり、ジョブ13のデータの転送時間を推定することがある。
なお、並列計算制御装置10は、コンピュータであってもよい。制御部12は、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサでもよい。また、制御部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAM(Random Access Memory)などのメモリに記憶されたプログラムを実行する。プログラムには、マイグレーション時間推定プログラムが含まれ得る。複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼ぶこともある。
ここで、ジョブ13にノード21が割り当てられているとする。また、ジョブ13に割り当てるノードをノード26に変更する、すなわち、ノード21からノード26へのジョブ13の移行(マイグレーション)を行うスケジュール案を検討するものとする。このスケジュール案を採用するか否か判定するにあたり、制御部12は、以下のようにして、ノード21からノード26にジョブ13のデータを転送する転送時間16を推定する。
まず、制御部12は、ノード21〜26のうち、転送元のノード21から転送先のノード26への経路上に位置する経由ノードを判定する。図1の例では、ネットワーク20はメッシュやトーラスなどの格子状の相互結合網であり、ノード21からノード26への経路上にノード23,25が位置している。すなわち、ジョブ13のデータをノード21からノード26に転送する場合、ノード23,25がデータを中継する(ルーティングする)ことになる。格子状の相互結合網の場合、制御部12は、例えば、転送元のノードの座標と転送先のノードの座標から経由ノードを判定できる。
次に、制御部12は、経由ノード(ノード23,25)におけるリソースの使用状況を示す指標値14を取得する。指標値14として、例えば、ノード使用率など、他のジョブによる経由ノードの使用状況を示す指標値を用いることができる。また、指標値14として、例えば、リンク使用量など、経由ノード上の他のジョブによるリンクの使用状況を示す指標値を用いることができる。また、複数種類の指標値を用いてもよい。制御部12は、例えば、並列計算制御装置10がノード21〜26から定期的に収集しているリソース情報に基づいて、指標値14を算出する。ただし、制御部12は、転送時間16を推定するときに、経由ノードからリソース情報を取得するようにしてもよい。
そして、制御部12は、指標値14とメモリ使用量15とに基づいて、転送時間16の推定値を算出する。メモリ使用量15は、ジョブ13がノード21で使用しているメモリ領域の大きさであり、ノード21からノード26に転送するデータの量と同一であるかまたは近似する。制御部12は、例えば、並列計算制御装置10がノード21〜26から定期的に収集しているリソース情報の中から、メモリ使用量15を抽出する。転送時間16は、例えば、次のように算出する。制御部12は、係数を用いて指標値14を重み付けして、現在の経由ノードの状態に応じた転送帯域幅を推定する。そして、制御部12は、推定した転送帯域幅とメモリ使用量15から転送時間16の推定値を算出する。
転送時間16の推定に係数を用いる場合、実際の転送時間をフィードバックして係数を更新してもよい。例えば、制御部12は、転送時間16を推定した後にノード21からノード26へのデータ転送が行われた場合、実際の転送時間を測定する。そして、制御部12は、測定した転送時間、指標値14およびメモリ使用量15の組をデータベースに保存しておく。制御部12は、データベースに上記の情報が蓄積されると、指標値14を説明変数(独立変数)として回帰分析を行うことで、係数を算出することができる。
第1の実施の形態の並列計算システムによれば、ノード21からノード26にジョブ13のデータを転送するか検討するにあたり、経路上に位置する経由ノードが判定され、経由ノードにおけるリソースの使用状況を示す指標値14が取得される。そして、指標値14とジョブ13のメモリ使用量15とに基づいて、転送時間16が推定される。
これにより、ジョブ13のデータを転送するときの経由ノードの状態を反映した転送時間16の推定値を算出することができ、転送時間16の推定精度を向上させることができる。例えば、他のジョブによって経由ノードやその周辺のリンクが多く使用されているときは転送時間16の推定値が大きくなり、経由ノードやその周辺のリンクがあまり使用されていないときは転送時間16の推定値が小さくなると期待できる。
その結果、ノード21〜26の使用効率が高くなるようにジョブスケジューリングを行うことが容易となる。例えば、転送先のノード26の空き時間との関係で、転送時間16が短いときはデータ転送を伴うスケジュール案を採用し、転送時間16が長いときは他のスケジュール案を検討することが考えられる。これにより、ジョブ13の中断が頻繁に発生するのを抑制し、実質的なノード使用効率を向上させることができる。
[第2の実施の形態]
図2は、第2の実施の形態の並列計算システムを示す図である。
第2の実施の形態の並列計算システムは、計算ノード1A〜9A,1B〜9B,…,1F〜9F、相互結合網30および管理ノード100を有する。
相互結合網30は、9×6個の計算ノードをメッシュ状に接続した直接網である。すなわち、相互結合網30は、スイッチなどの通信専用装置を用いずに、隣接する計算ノード同士をリンクによって直接接続する。例えば、計算ノード2Bは、隣接する計算ノード1B,2A,2C,3Bと直接接続されている。相互結合網30上において、各計算ノードの位置は2次元の座標によって特定することができる。例えば、計算ノード1Aの座標を(0,0)、計算ノード9Aの座標を(8,0)、計算ノード1Fの座標を(0,5)、計算ノード9Fの座標を(8,5)と特定することができる。
計算ノード1A〜9A,1B〜9B,…,1F〜9Fは、並列に動作することができる物理的なコンピュータである。計算ノード1A〜9A,1B〜9B,…,1F〜9Fは、ジョブのプロセスを実行するジョブ実行機能と、データを中継するルーティング機能とを有する。ある計算ノードが他の計算ノードと通信するときは、その間に位置する計算ノードがリレー方式でデータを中継することになる。宛先の計算ノードは、例えば、座標によって指定される。ルーティングアルゴリズムとしては、例えば、まずX座標が宛先に近づく方向に転送し、次にY座標が宛先に近づく方向に転送していく方法を用いる。例えば、計算ノード1Aが送信した計算ノード7D宛てのデータは、計算ノード2A〜6Aを通って計算ノード7Aに到達し、計算ノード7B,7Cを通って計算ノード7Dに到達する。
管理ノード100は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fによるジョブの実行を管理するサーバコンピュータである。管理ノード100は、第1の実施の形態の並列計算制御装置10に対応する。管理ノード100は、1または2以上のユーザから、ジョブの投入を順次受け付ける。管理ノード100は、投入されたジョブのスケジューリングを行い、計算ノード×時刻によって特定される計算リソースをジョブに割り当てる。なお、管理ノード100は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fと通信することができる。例えば、管理ノード100は、管理用のネットワークを介して計算ノード1A〜9A,1B〜9B,…,1F〜9Fと接続されている。
図3は、管理ノードのハードウェア例を示すブロック図である。
管理ノード100は、CPU101、RAM102、HDD(Hard Disk Drive)103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。上記のユニットは、それぞれバス108に接続されている。
CPU101は、プログラムの命令を実行する演算回路を含むプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを備えてもよく、管理ノード100は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列に実行してもよい。また、複数のプロセッサの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、管理ノード100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。プログラムには、マイグレーション時間推定プログラムが含まれる。なお、管理ノード100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、管理ノード100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力信号処理部105は、管理ノード100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理ノード100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータをRAM102またはHDD103に格納する。
通信インタフェース107は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fと通信を行う。通信インタフェース107は、例えば、スイッチなどの通信装置とケーブルで接続される有線通信インタフェースである。ただし、通信インタフェース107は、アクセスポイントと無線リンクで接続される無線通信インタフェースでもよい。
なお、管理ノード100は、媒体リーダ106を備えなくてもよい。また、ユーザが操作する端末装置からネットワーク経由で管理ノード100を制御できる場合、管理ノード100は、画像信号処理部104や入力信号処理部105を備えていなくてもよい。また、ディスプレイ111や入力デバイス112が、管理ノード100の筐体と一体に形成されてもよい。計算ノード1A〜9A,1B〜9B,…,1F〜9Fも、管理ノード100と同様のハードウェアを用いて実現できる。ただし、計算ノード1A〜9A,1B〜9B,…,1F〜9Fは、隣接する複数の計算ノードと直接接続するために、複数の通信インタフェース(2次元メッシュの場合、4つの通信インタフェース)を備えてもよい。
次に、ジョブへの計算ノードの割り当てについて説明する。
図4は、ジョブへの計算ノードの割り当て例を示す図である。
ジョブ31が投入されると、管理ノード100は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fの中から1または2以上の計算ノードをジョブ31に割り当てる。割り当てる計算ノードの数や隣接関係は、ユーザから指定される。隣接関係は、メッシュやトーラスなどの格子状の相互接続網の場合、矩形の形状、すなわち、各次元方向に並ぶ計算ノードの数として表現される。二次元のメッシュまたはトーラスの場合、X次元の計算ノード数×Y次元の計算ノード数がユーザから指定される。
ユーザは、特定の形状の計算ノード群を想定して、ジョブ31のプログラムを最適化している可能性がある。計算ノード群の形状が変わってしまうと、通信のオーバヘッドが増大してジョブ31の実行効率が低下するおそれがある。このため、管理ノード100は、原則としてユーザから指定された形状の通りに、計算ノード群をジョブ31に割り当てるようにする。図4の例では、ジョブ31について、3×3個の計算ノードを使用することが指定されている。これに対して、管理ノード100は、計算ノード1A〜3A,1B〜3B,1C〜3Cをジョブ31に割り当てている。
ジョブ31に割り当てられた計算ノード1A〜3A,1B〜3B,1C〜3Cが、ユーザによって作成されたプログラムを並列に実行することで、ジョブ31の処理が進行する。例えば、管理ノード100は、スケジューリングによって決定した開始時刻になると、プログラムが格納されている場所および引数を含むコマンドを計算ノード1A〜3A,1B〜3B,1C〜3Cに送信する。計算ノード1A〜3A,1B〜3B,1C〜3Cは、コマンドに応じてプログラムを読み出して実行する。これにより、計算ノード1A〜3A,1B〜3B,1C〜3Cにおいて、ジョブ31のプロセスが起動する。
ジョブ31は、開始から終了まで連続的に、最初に割り当てられた計算ノード1A〜3A,1B〜3B,1C〜3Cを占有できることが好ましい。しかし、後述するように、管理ノード100は、スケジュールの都合でジョブ31を中断させることがある。ジョブ31の中断において、管理ノード100は、ジョブ31に割り当てる計算ノードを変更することもあるし、変更しないこともある。図4の例では、ジョブ31に割り当てる計算ノードが、計算ノード7D〜9D,7E〜9E,7F〜9Fに変更されている。すなわち、計算ノード1A〜3A,1B〜3B,1C〜3Cから計算ノード7D〜9D,7E〜9E,7F〜9Fへのジョブ31の移行(マイグレーション)が行われている。
ジョブ31に割り当てる計算ノードが変更されると、変更前の計算ノードから、それに対応する変更後の計算ノードに、ジョブ31のデータが転送されることになる。図4の例では、計算ノード1Aのデータが、計算ノード2A〜7A,7B,7Cを経由して計算ノード7Dに転送される。これにより、計算ノード1Aで実行されていたジョブ31のプロセスが、計算ノード7Dに引き継がれる。同様に、計算ノード2Aのデータが計算ノード8Dに転送され、計算ノード3Aのデータが計算ノード9Dに転送される。計算ノード1Bのデータが計算ノード7Eに転送され、計算ノード2Bのデータが計算ノード8Eに転送され、計算ノード3Bのデータが計算ノード9Eに転送される。計算ノード1Cのデータが計算ノード7Fに転送され、計算ノード2Cのデータが計算ノード8Fに転送され、計算ノード3Cのデータが計算ノード9Fに転送される。
上記の9組のデータ転送は、並列に実行し得る。例えば、計算ノード1Aから計算ノード7Dへのデータ転送と、計算ノード1Bから計算ノード7Eへのデータ転送とは、並列に実行し得る。ただし、経由する計算ノード4A〜9A,4B〜9B,4C〜9Cでは、他のジョブが実行されている可能性がある。このため、上記のデータ転送に要する転送時間は、他のジョブの実行状況や他のジョブによるリンクの使用状況の影響を受ける。また、ジョブ31内でも、並列に実行される一のデータ転送と他のデータ転送とが、同じ計算ノードや同じリンクを経由する可能性がある。このため、上記のデータ転送に要する転送時間は、ジョブ31内で発生するデータ転送の衝突の影響を受ける。
次に、実行を開始したジョブを中断する方法について説明する。
図5は、ジョブ中断方法の例を示す図である。
スケジュールの都合でジョブ31を中断させる場合、「ジョブスワップ」、「チェックポイントリスタート」および「マイグレーション」の中から中断方法が選択される。チェックポイントリスタートは、同一ノード復帰と別ノード復帰の2通りに分けられる。
(A)ジョブスワップは、実行していたプロセスのデータを主記憶装置(例えば、RAM)の上で退避し、時間を空けて当該データを復帰させる中断方法である。ジョブスワップは、中断前後でジョブ31の実行に用いる計算ノードを変更しない。
例えば、計算ノード1AのRAM上に、実行中のプロセスのデータを記憶するRAM実行領域301と、一時停止したプロセスのデータを退避するRAM退避領域302とが形成されている。計算ノード1Aは、ジョブスワップによってジョブ31を停止させる場合、RAM実行領域301に記憶されているジョブ31のデータを、RAM退避領域302に移動させる。これにより、RAM実行領域301に他のジョブのデータを格納することが可能となり、計算ノード1Aを他のジョブに割り当てることができる。ジョブ31を再開する場合、計算ノード1Aは、RAM退避領域302に記憶されているジョブ31のデータを、RAM実行領域301に移動させる。
(B)チェックポイントリスタート(同一ノード復帰)は、実行していたプロセスのデータを補助記憶装置(例えば、HDD)に退避し、時間を空けて当該データを復帰させる中断方法である。チェックポイントリスタート(同一ノード復帰)は、ジョブスワップと同様、中断前後でジョブ31の実行に用いる計算ノードを変更しない。
例えば、計算ノード1AのHDD上に、一時停止したプロセスのデータを退避するHDD領域303が形成されている。計算ノード1Aは、チェックポイントリスタート(同一ノード復帰)によってジョブ31を停止させる場合、RAM実行領域301に記憶されているジョブ31のデータを、HDD領域303に移動させる。ジョブ31を再開する場合、計算ノード1Aは、HDD領域303に記憶されているジョブ31のデータを、RAM実行領域301に移動させる。
(C)チェックポイントリスタート(別ノード復帰)は、チェックポイントリスタート(同一ノード復帰)と同様に、実行していたプロセスのデータを補助記憶装置に退避し、時間を空けて当該データを復帰させる中断方法である。ただし、チェックポイントリスタート(別ノード復帰)は、中断前後でジョブ31の実行に用いる計算ノードを変更する。
例えば、計算ノード7DのRAM上に、実行中のプロセスのデータを記憶するRAM実行領域301aが形成されている。ジョブ31を停止させる場合の処理は、チェックポイントリスタート(同一ノード復帰)と同じである。ジョブ31を再開する場合、計算ノード1Aは、HDD領域303に記憶されているジョブ31のデータを、RAM実行領域301などのRAM上の領域に移動させる。更に、計算ノード1Aは、RAMに移動したデータを計算ノード7Dに送信する。計算ノード7Dは、計算ノード1Aから受信したデータをRAM実行領域301aに格納する。これにより、中断前に計算ノード1Aで実行されていたジョブ31のプロセスが、計算ノード7Dで実行される。
(D)マイグレーションは、実行していたプロセスのデータを、時間を空けずに別の計算ノードに転送する中断方法である。マイグレーションは、チェックポイントリスタート(別ノード復帰)と同様、中断前後でジョブ31の実行に用いる計算ノードを変更する。計算ノード1Aは、マイグレーションによってジョブ31を中断させる場合、RAM実行領域301に記憶されているジョブ31のデータを計算ノード7Dに送信する。計算ノード7Dは、計算ノード1Aから受信したデータをRAM実行領域301aに格納する。
管理ノード100は、上記の中断方法の中から適切な中断方法を選択し、ジョブスケジューリングを行う。なお、中断方法毎にその中断方法を選択できる条件が存在する。ジョブスワップは、複数のジョブのデータが主記憶装置に記憶されることになるため、計算ノード1Aの主記憶装置の空き容量が十分に大きい場合に選択できる。チェックポイントリスタートは、計算ノード1Aの補助記憶装置の空き容量が十分に大きい場合に選択できる。マイグレーションは、計算ノード1Aがジョブ31のプロセスを停止する時点で、計算ノード7Dをジョブ31に割り当て可能である場合に選択できる。
図6は、ジョブスワップのスケジュール例を示す図である。
ここでは、現在のスケジュールにおいて、ある計算ノード群が、時刻T11から時刻T12までジョブ#2に割り当てられており、時刻T13から時刻T14までジョブ#3に割り当てられているとする。当該計算ノード群は、時刻T10から時刻T11まで空いており、時刻T12から時刻T13まで空いている。ここで、実行予定時間が上記の各空き時間よりも長いジョブ#1が投入されたとする。この場合、管理ノード100は、計算リソースが逼迫しているため、断片化された空き計算リソースをジョブ#1に割り当てることを許容する。例えば、管理ノード100は、時刻T11までに上記の計算ノード群を空けることを条件として、時刻T10にジョブ#1を開始させる。
中断方法としてジョブスワップを選択する場合、ジョブデータの退避にはRAM書き込みに関する退避時間を要する。このため、時刻T11よりも退避時間だけ前にジョブ#1が停止することになる。よって、中断前のジョブ#1の実行可能時間は、時刻T10から、時刻T11よりも退避時間だけ前までとなる。また、ジョブデータの復帰にはRAM読み出しに関する復帰時間を要する。このため、時刻T12よりも復帰時間だけ後にジョブ#1が再開することになる。よって、中断後のジョブ#1の実行可能時間は、時刻T12の復帰時間だけ後から、時刻T13までとなる。ただし、ジョブ#1が時刻T13までに終了する見込みがない場合、ジョブ#1の実行可能時間は、時刻T12の復帰時間だけ後から、時刻T13よりも退避時間だけ前までとなる。
管理ノード100は、ジョブ#1の実行予定時間、空き時間(時刻T10から時刻T11までと、時刻T12から時刻T13まで)、退避時間の推定値、復帰時間の推定値などに基づいて、ジョブスワップを選択することが適切か判断する。連続した実行可能時間が短い場合には、ジョブ#1の中断が高頻度で発生することになり、退避・復帰のオーバヘッドによって実質的なノード使用効率が低下するおそれがあるためである。
図7は、チェックポイントリスタートの第1のスケジューリング例を示す図である。
ここでは、現在のスケジュールにおいて、ある計算ノード群が、時刻T21から時刻T22までジョブ#2に割り当てられており、時刻T23から時刻T24までジョブ#3に割り当てられているとする。当該計算ノード群は、時刻T20から時刻T21まで空いており、時刻T22から時刻T23まで空いている。ここで、実行予定時間が上記の各空き時間よりも長いジョブ#1が投入されたとする。この場合、管理ノード100は、計算リソースが逼迫しているため、断片化された空き計算リソースをジョブ#1に割り当てることを許容する。例えば、管理ノード100は、時刻T20にジョブ#1を開始させる。
中断方法としてチェックポイントリスタート(同一ノード復帰)を選択する場合、ジョブデータの退避にはHDD書き込みに関する退避時間を要する。このため、時刻T21よりも退避時間だけ前にジョブ#1が停止することになる。よって、中断前のジョブ#1の実行可能時間は、時刻T20から、時刻T21よりも退避時間だけ前までとなる。また、ジョブデータの復帰にはHDD読み出しに関する復帰時間を要する。このため、時刻T22よりも復帰時間だけ後にジョブ#1が再開することになる。よって、中断後のジョブ#1の実行可能時間は、時刻T22の復帰時間だけ後から、時刻T23まで(または、時刻T23よりも退避時間だけ前まで)となる。
管理ノード100は、ジョブ#1の実行予定時間、空き時間(時刻T20から時刻T21までと、時刻T22から時刻T23まで)、退避時間の推定値、復帰時間の推定値などに基づいて、チェックポイントリスタート(同一ノード復帰)を選択することが適切か判断する。なお、チェックポイントリスタート(同一ノード復帰)の退避時間や復帰時間は、通常、ジョブスワップの場合よりも長くなる。
図8は、チェックポイントリスタートの第2のスケジューリング例を示す図である。
ここでは、現在のスケジュールにおいて、ある計算ノード群が、時刻T31から時刻T32までジョブ#2に割り当てられており、時刻T33から時刻T35までジョブ#4に割り当てられているとする。当該計算ノード群は、時刻T30から時刻T31まで空いており、時刻T32から時刻T33まで空いている。また、別の計算ノード群が、時刻T31から時刻T32までジョブ#2に割り当てられており、時刻T34から時刻T35までジョブ#3に割り当てられているとする。当該別の計算ノード群は、時刻T32から時刻T34まで空いている。ここで、実行予定時間が上記の各空き時間よりも長いジョブ#1が投入されたとする。この場合、管理ノード100は、計算リソースが逼迫しているため、断片化された空き計算リソースをジョブ#1に割り当てることを許容する。例えば、管理ノード100は、時刻T30にジョブ#1を開始させる。
中断方法としてチェックポイントリスタート(別ノード復帰)を選択する場合、ジョブデータの退避にはHDD書き込みに関する退避時間を要する。このため、時刻T31よりも退避時間だけ前にジョブ#1が停止することになる。よって、中断前のジョブ#1の実行可能時間は、時刻T30から、時刻T31よりも退避時間だけ前までとなる。また、ジョブデータの復帰にはHDD読み出し、データ転送およびRAM書き込みに関する復帰時間を要する。このため、時刻T32よりも復帰時間だけ後にジョブ#1が再開することになる。よって、中断後のジョブ#1の実行可能時間は、時刻T32の復帰時間だけ後から、時刻T34まで(または、時刻T34よりも退避時間だけ前まで)となる。
管理ノード100は、ジョブ#1の実行予定時間、空き時間(時刻T30から時刻T31までと、時刻T32から時刻T34まで)、退避時間の推定値、転送時間を含む復帰時間の推定値などに基づいて、チェックポイントリスタート(別ノード復帰)を選択することが適切か判断する。なお、チェックポイントリスタート(別ノード復帰)の復帰時間は、通常、チェックポイントリスタート(同一ノード復帰)の場合よりも長くなる。
図9は、マイグレーションのスケジューリング例を示す図である。
ここでは、現在のスケジュールにおいて、ある計算ノード群が、時刻T41から時刻T43までジョブ#2に割り当てられているとする。当該計算ノード群は、時刻T40から時刻T41まで空いている。また、別の計算ノード群が、時刻T42から時刻T43までジョブ#3に割り当てられているとする。当該別の計算ノード群は、時刻T40から時刻T42まで空いている。ここで、実行予定時間が上記の各空き時間よりも長いジョブ#1が投入されたとする。この場合、管理ノード100は、計算リソースが逼迫しているため、断片化された空き計算リソースをジョブ#1に割り当てることを許容する。例えば、管理ノード100は、時刻T40にジョブ#1を開始させる。
中断方法としてマイグレーションを選択する場合、RAM読み出し、データ転送およびRAM書き込みに関するマイグレーション時間を要する。このため、時刻T41よりもマイグレーション時間だけ前にジョブ#1が停止することになる。よって、中断前のジョブ#1の実行可能時間は、時刻T40から、時刻T41よりもマイグレーション時間だけ前までとなる。また、中断後のジョブ#1の実行可能時間は、時刻T41から、時刻T42まで(または、時刻T42よりも退避時間だけ前まで)となる。
管理ノード100は、ジョブ#1の実行予定時間、空き時間(時刻T40から時刻T41までと、時刻41から時刻T42まで)、転送時間を含むマイグレーション時間の推定値などに基づいて、マイグレーションを選択することが適切か判断する。
このように、管理ノード100は、ジョブスケジューリングを行うにあたって退避時間・復帰時間やマイグレーション時間を推定する。この退避時間・復帰時間やマイグレーション時間の推定精度は、並列計算システムの処理能力(スループット)に影響を与える。そこで、管理ノード100は、推定値をハードウェア性能のみに基づいて静的に算出する代わりに、様々な要因を考慮して動的に算出することとする。以下では、退避時間・復帰時間やマイグレーション時間の推定を中心に説明する。
図10は、管理ノードと計算ノードの機能例を示すブロック図である。
管理ノード100は、パラメータ記憶部121、測定情報記憶部122、リソース情報収集部131、スケジューリング部132、時間推定部133およびフィードバック部134を有する。パラメータ記憶部121および測定情報記憶部122は、例えば、RAM102またはHDD103に確保した記憶領域として実現できる。リソース情報収集部131、スケジューリング部132、時間推定部133およびフィードバック部134は、例えば、CPU101が実行するプログラムモジュールとして実現できる。
パラメータ記憶部121は、退避時間・復帰時間・マイグレーション時間などのジョブ中断に関する時間の推定に用いるパラメータの値であって、予め決められた定数を記憶する。この定数は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fやリンクのハードウェア性能に基づいて決まる。また、パラメータ記憶部121は、ジョブ中断に関する時間の推定に用いるパラメータの値であって、フィードバック部134によって更新される係数を記憶する。測定情報記憶部122は、ジョブ中断に関する時間の推定に用いた指標値であって、ジョブの実行状況に応じて変化する変数を記憶する。また、測定情報記憶部122は、ジョブ中断に関する時間を推定した後に測定された転送時間を記憶する。測定情報記憶部122に記憶された指標値や転送時間は、ジョブ中断に関する時間の推定に用いる係数を、回帰分析によって算出するときに参照される。
リソース情報収集部131は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fから定期的に、リソースの使用状況を示すリソース情報を収集する。リソース情報には、各計算ノードで実行されているプロセスのメモリ使用量が含まれる。また、リソース情報には、各計算ノードによるリンク毎の単位時間当たりのリンク使用量(データ通信量)が含まれる。リソース情報収集部131は、スケジューリング部132からの要求に応じて、最新のリソース情報の少なくとも一部をスケジューリング部132に提供する。
スケジューリング部132は、ジョブのスケジュール、すなわち、投入された各ジョブを何れの時刻に何れの計算ノードを用いて実行するかを決定する。スケジューリング部132は、相互結合網30のトポロジや計算ノード1A〜9A,1B〜9B,…,1F〜9Fの座標を示すトポロジ情報を保持する。また、スケジューリング部132は、現在までに決定したジョブのスケジュールを示すスケジュール情報を保持する。トポロジ情報やスケジュール情報は、RAM102またはHDD103に記憶されてもよい。
各ジョブに対しては、ユーザから、当該ジョブが使用する計算ノードの数および隣接関係を示す計算ノード条件(例えば、3×3個など)が指定される。また、各ジョブに対しては、ユーザから、当該ジョブの実行予定時間が指定される。スケジューリング部132は、新たなジョブが投入されると、最新のスケジュール情報を参照して、計算ノード条件を満たしており実行予定時間以上の連続した空き時間をもつ計算リソースを検索する。今後所定時間以内に該当する計算リソースが存在しない場合、スケジューリング部132は、断片化された計算リソースを利用することを検討する。
断片化された計算リソースを利用する場合、スケジューリング部132は、連続した空き時間が実行予定時間よりも短い計算ノードをジョブに割り当てて、当該ジョブを早く開始させる。割り当て時間の終了が近づくと、スケジューリング部132は、最新のスケジュール情報を参照して、中断方法および再開後に用いる計算ノード(再開ノード)を決定する。中断方法および再開ノードは、ジョブ中断に関する時間(退避時間と復帰時間、または、マイグレーション時間)の推定値を考慮して決定する。
中断方法としてジョブスワップまたはチェックポイントリスタート(同一ノード復帰)を検討する場合、スケジューリング部132は、リソース情報収集部131が収集したリソース情報に基づいて、ジョブに割り当てられた計算ノードのメモリ使用量を算出する。そして、スケジューリング部132は、中断方法とメモリ使用量とを指定して、時間推定部133に退避時間・復帰時間の推定を依頼する。スケジューリング部132は、推定された退避時間・復帰時間に基づいて、ノード使用効率の観点から、選択した中断方法および選択した再開ノードの候補を採用するか否か判断する。
中断方法としてチェックポイントリスタート(別ノード復帰)またはマイグレーションを検討する場合、スケジューリング部132は、リソース情報収集部131が収集したリソース情報に基づいて、ジョブに割り当てられた計算ノードのメモリ使用量を算出する。また、スケジューリング部132は、データの転送元と転送先の間に位置する経由ノードを判定し、収集されたリソース情報に基づいて、転送時間に影響する複数の指標値を算出する。そして、スケジューリング部132は、中断方法とメモリ使用量と複数の指標値を指定して、時間推定部133に退避時間・復帰時間またはマイグレーション時間の推定を依頼する。スケジューリング部132は、推定された退避時間・復帰時間またはマイグレーション時間に基づいて、ノード使用効率の観点から、選択した中断方法および選択した再開ノードの候補を採用するか否か判断する。
また、スケジューリング部132は、決定したスケジュールに従い、計算ノード1A〜9A,1B〜9B,…,1F〜9Fにジョブのプロセスの起動を指示する。また、ジョブスワップまたはチェックポイントリスタートによるジョブ中断を決定した場合、スケジューリング部132は、退避開始時刻になると関連する計算ノードにデータの退避を指示し、復帰開始時刻になると関連する計算ノードにデータの復帰を指示する。マイグレーションによるジョブ中断を決定した場合、スケジューリング部132は、マイグレーション開始時刻になると関連する計算ノードにマイグレーションを指示する。
また、上記でチェックポイントリスタート(別ノード復帰)またはマイグレーションを採用した場合、スケジューリング部132は、算出したメモリ使用量および複数の指標値を測定情報記憶部122に保存する。データ転送が行われると、スケジューリング部132は、実際の転送時間を測定し、測定した転送時間を測定情報記憶部122に保存する。そして、スケジューリング部132は、係数を更新するよう依頼する。
時間推定部133は、スケジューリング部132からの依頼に基づいて、ジョブ中断に関する時間(退避時間・復帰時間またはマイグレーション時間)を推定する。時間の推定には、スケジューリング部132から指定される中断方法・メモリ使用量・複数の指標値と、パラメータ記憶部121に記憶されている定数・係数が用いられる。
中断方法としてジョブスワップまたはチェックポイントリスタート(同一ノード復帰)が指定された場合、時間推定部133は、メモリ使用量と定数から退避時間と復帰時間を推定する。中断方法としてチェックポイントリスタート(別ノード復帰)が指定された場合、時間推定部133は、メモリ使用量と定数から退避時間を推定する。また、時間推定部133は、メモリ使用量と複数の指標値と定数と係数から転送時間を推定し、転送時間を含む復帰時間を推定する。マイグレーションが指定された場合、時間推定部133は、チェックポイントリスタート(別ノード復帰)と同様に転送時間を推定し、転送時間を含むマイグレーション時間を推定する。これらの時間の推定方法の詳細は後述する。
フィードバック部134は、スケジューリング部132からの依頼に基づいて、転送時間の推定に用いられる係数を更新する。フィードバック部134は、測定された転送時間を係数にフィードバックしていると言うこともできる。フィードバック部134は、測定情報記憶部122に記憶された複数の指標値とメモリ使用量と測定された転送時間の組を用いて回帰分析を行い、係数を算出する。フィードバック部134は、算出した係数を、時間推定部133を介してパラメータ記憶部121に上書き保存する。
なお、測定情報記憶部122には、複数の指標値とメモリ使用量と測定された転送時間の組が、複数蓄積される。フィードバック部134は、この複数の組を用いて回帰分析を行う。一度回帰分析に使用した組も、測定情報記憶部122から削除せずに残しておいてよい。ただし、測定情報記憶部122に書き込まれてから一定時間以上経過した古い組を、測定情報記憶部122から削除するようにしてもよい。
計算ノード1Aは、リソース監視部311、ジョブ起動部312およびジョブ中断部313を有する。リソース監視部311、ジョブ起動部312およびジョブ中断部313は、例えば、CPU101が実行するプログラムモジュールとして実現できる。他の計算ノードも、計算ノード1Aと同様の構成によって実現できる。
リソース監視部311は、計算ノード1Aに関するリソース情報を生成して管理ノード100に送信する。リソース監視部311は、管理ノード100からの要求に応じてリソース情報を送信してもよいし、要求なしに管理ノード100に対して定期的にリソース情報を送信してもよい。リソース情報には、実行中のジョブのプロセスが使用している計算ノード1AのRAM領域の大きさ(メモリ使用量)が含まれる。また、リソース情報には、計算ノード1Aに接続されているリンク毎に、計算ノード1Aが単位時間当たりに送信したデータの量の平均値(例えば、直近の所定時間の平均値)が含まれる。
ジョブ起動部312は、管理ノード100からジョブ起動コマンドを受信すると、ジョブ起動コマンドで指定されたプログラムを、ジョブ起動コマンドで指定された引数を適用して実行する。これにより、計算ノード1Aでジョブのプロセスが起動する。
ジョブ中断部313は、管理ノード100からの指示に応じてジョブ中断を実行する。ジョブ中断部313は、ジョブスワップ部314、チェックポイントリスタート部315およびマイグレーション部316を有する。
ジョブスワップ部314は、ジョブスワップを指定した退避通知を受信すると、実行中のプロセスを停止させ、プロセスのデータをRAM上の他の記憶領域に退避する。その後に復帰通知を受信すると、ジョブスワップ部314は、退避したデータを元の位置に復帰させ、プロセスを再開させる。
チェックポイントリスタート部315は、チェックポイントリスタート(同一ノード復帰)を指定した退避通知を受信すると、実行中のプロセスを停止させ、プロセスのデータをHDDに退避する。その後に復帰通知を受信すると、チェックポイントリスタート部315は、退避したデータをRAMに復帰させ、プロセスを再開させる。
また、チェックポイントリスタート部315は、チェックポイントリスタート(別ノード復帰)を指定した退避通知を受信すると、実行中のプロセスを停止させ、プロセスのデータをHDDに退避する。その後に再開ノードを指定した復帰通知を受信すると、チェックポイントリスタート部315は、退避したデータをRAMに読み込み、指定された再開ノードに転送する。また、チェックポイントリスタート部315は、他の計算ノードからデータを受信すると、受信したデータをRAMに格納し、プロセスを再開させる。データ転送が終わった時点で、チェックポイントリスタート部315は、管理ノード100に完了通知を送信する。なお、管理ノード100は転送元の計算ノードに加えて再開ノードに対しても、復帰通知を送信するようにしてもよい。
マイグレーション部316は、再開ノードを指定したマイグレーション通知を受信すると、実行中のプロセスを停止させ、プロセスのデータを指定された再開ノードに転送する。また、マイグレーション部316は、他の計算ノードからデータを受信すると、受信したデータをRAMに格納し、プロセスを再開させる。データ転送が終わった時点で、マイグレーション部316は、管理ノード100に完了通知を送信する。なお、管理ノード100はマイグレーション元の計算ノードに加えてマイグレーション先ノードに対しても、マイグレーション通知を送信するようにしてもよい。
図11は、定数テーブルの例を示す図である。
定数テーブル123は、パラメータ記憶部121に記憶されている。定数テーブル123には、定数名と設定値の組が登録される。定数名には、RAM読み出し速度、RAM書き込み速度、HDD読み出し速度、HDD書き込み速度および理想帯域幅が含まれる。
RAM読み出し速度は、単位時間当たりにRAMから読み出し可能なデータ量を示す。RAM書き込み速度は、単位時間当たりにRAMに書き込み可能なデータ量を示す。RAM読み出し速度とRAM書き込み速度は同じであってもよい。HDD読み出し速度は、単位時間当たりにHDDから読み出し可能なデータ量を示す。HDD書き込み速度は、単位時間当たりにHDDに書き込み可能なデータ量を示す。理想帯域幅は、2つの計算ノードの間でデータを転送する場合の理論上の伝送速度を示す。
図12は、回帰分析テーブルの例を示す図である。
回帰分析テーブル124は、測定情報記憶部122に記憶されている。回帰分析テーブル124は、ノード使用率、リンク使用平均、リンク使用分散、ホップ数、ジョブサイズ、メモリ使用量および転送時間の項目を有する。ノード使用率、リンク使用平均、リンク使用分散、ホップ数およびジョブサイズは、転送時間に影響する指標値である。
ノード使用率は、あるジョブのデータを転送する際に経由する経由ノードのうち、他のジョブを実行中であるものの割合を示す。経由ノードは、転送元ノード群と転送先ノード群の間で、ジョブに属する少なくとも1つのプロセスのデータを転送する計算ノードである。何れの計算ノードが経由ノードになるかは、ルーティングアルゴリズムに依存する。図4の例では、計算ノード4A〜9A,4B〜9B,4C〜9Cが経由ノードである。
リンク使用平均は、リンク毎の単位時間当たりのデータ送信量を、経由ノードに接続されている全てのリンクの間で平均化したものである。リンク使用分散は、リンク毎の単位時間当たりのデータ送信量について、経由ノードに接続されている全てのリンクの間の分散を算出したものである。ホップ数は、経由するリンクの数を、転送元ノードと転送先ノードの組全てについて平均化したものである。図4の例では、転送元ノードと転送先ノードの組それぞれは9個のリンクを経由するため、ホップ数は9である。ジョブサイズは、転送対象のジョブに割り当てられている計算ノードの数を示す。
このメモリ使用量は、計算ノード毎のメモリ使用量を、転送対象のジョブに割り当てられている全ての計算ノードの間で平均化したものである。ただし、計算ノード毎のメモリ使用量を、対象ジョブに割り当てられている全ての計算ノードについて合計したもの(ジョブ全体のメモリ使用量)を、指標値として用いてもよい。また、対象ジョブに割り当てられている計算ノードの中で最大のメモリ使用量を、指標値として用いてもよい。転送時間は、データ転送に要した時間の測定値を示す。第2の実施の形態では、管理ノード100が1つ目の計算ノードに復帰通知またはマイグレーション通知を送信してから、最後の計算ノードからの完了通知を受信するまでの時間を、転送時間として測定している。
図13は、係数テーブルの例を示す図である。
転送時間を推定する推定式は、上記の5つの指標値(ノード使用率、リンク使用平均、リンク使用分散、ホップ数およびジョブサイズ)を重み付ける5つの係数を含む。5つの係数は、フィードバック部134が回帰分析を行うことで算出する。
係数テーブル125は、パラメータ記憶部121に記憶されている。係数テーブル125には、係数名と算出値の組が登録される。係数名には、ノード使用率に対応する係数A、リンク使用平均に対応する係数B、リンク使用分散に対応する係数C、ホップ数に対応する係数D、および、ジョブサイズに対応する係数Eが含まれる。これら5個の係数それぞれの算出値は、実数として表現される。なお、回帰分析が行われる前は、係数A,B,C,D,Eの算出値は、0などの所定値に設定されている。
ここで、ジョブ中断に関する時間の推定方法について説明する。
(A)ジョブスワップの退避時間は、メモリ使用量/RAM書き込み速度、として算出できる。メモリ使用量は変数であり、収集されたリソース情報から算出できる。RAM書き込み速度は定数であり、定数テーブル123に登録されている。ジョブスワップの復帰時間は、メモリ使用量/RAM読み出し速度、として算出できる。RAM読み出し速度は定数であり、定数テーブル123に登録されている。
(B)チェックポイントリスタート(同一ノード復帰)の退避時間は、メモリ使用量/HDD書き込み速度、として算出できる。HDD書き込み速度は定数であり、定数テーブル123に登録されている。チェックポイントリスタート(同一ノード復帰)の復帰時間は、メモリ使用量/HDD読み出し速度、として算出できる。HDD読み出し速度は定数であり、定数テーブル123に登録されている。
(C)チェックポイントリスタート(別ノード復帰)の退避時間は、メモリ使用量/HDD書き込み速度、として算出できる。チェックポイントリスタート(別ノード復帰)の復帰時間は、メモリ使用量/HDD読み出し速度+転送時間+メモリ使用量/RAM書き込み速度、として算出できる。(D)マイグレーション時間は、メモリ使用量/RAM読み出し速度+転送時間+メモリ使用量/RAM書き込み速度、として算出できる。
上記の転送時間は、メモリ使用量/平均帯域幅、として算出できる。平均帯域幅は、2つの計算ノードの間でデータを転送する場合の現実的な伝送速度を示す。平均帯域幅は、理想帯域幅+Ax0+Bx1+Cx2+Dx3+Ex4、として算出できる。
理想帯域幅は定数であり、定数テーブル123に登録されている。x0はノード使用率を示す変数であり、スケジュール情報から算出できる。x1はリンク使用平均を示す変数であり、収集されたリソース情報から算出できる。x2はリンク使用分散を示す変数であり、収集されたリソース情報から算出できる。x3はホップ数を示す変数であり、トポロジ情報から算出できる。x4はジョブサイズを示す変数であり、スケジュール情報から算出できる。係数A,B,C,D,Eは変数x0,x1,x2,x3,x4が平均帯域幅に与える影響の重みを示し、係数テーブル125に登録されている。実際の転送時間を係数A,B,C,D,Eにフィードバックすることで、転送時間の推定精度を向上できる。
次に、管理ノード100が行う処理について説明する。
図14は、ジョブ中断の手順例を示すフローチャートである。
このジョブ中断の処理は、あるジョブに実行予定時間よりも短い計算リソースが割り当てられており、割り当てられた計算リソースの終了が近づいた(例えば、次のジョブの開始予定時刻まで所定時間未満となった)ときに実行される。
(S10)スケジューリング部132は、ジョブ中断スケジュールを決定する。ジョブ中断スケジュールは、中断方法、再開ノード、退避時間(推定)、退避開始時刻、退避完了時刻、復帰時間(推定)、復帰開始時刻、復帰完了時刻、マイグレーション時間(推定)、マイグレーション開始時刻、マイグレーション完了時刻などを示す。ジョブ中断スケジュールの決定方法については後述する。
(S11)スケジューリング部132は、決定された再開ノードが、対象ジョブを実行中の計算ノードとは別の計算ノードであるか判断する。別の計算ノードである場合はステップS12に処理が進み、同じ計算ノードである場合はステップS13に処理が進む。
(S12)スケジューリング部132は、退避時間、復帰時間、マイグレーション時間などのジョブ中断に関する時間の推定に用いた指標値およびメモリ使用量を、測定情報記憶部122に記憶された回帰分析テーブル124に保存する。指標値には、ノード使用率、リンク使用平均、リンク使用分散、ホップ数およびジョブサイズが含まれる。
(S13)スケジューリング部132は、中断方法がマイグレーションであるか判断する。マイグレーションである場合はステップS17に処理が進み、ジョブスワップまたはチェックポイントリスタートである場合はステップS14に処理が進む。
(S14)スケジューリング部132は、決定された退避開始時刻になると、対象ジョブを実行中の計算ノードに対して退避通知を送信する。
(S15)スケジューリング部132は、決定された復帰開始時刻になると、対象ジョブを実行中の計算ノードに対して復帰通知を送信する。このとき、スケジューリング部132は、1つ目の復帰通知を送信した時刻を記録しておく。なお、再開ノードが別の計算ノードである場合、スケジューリング部132は、更にデータ転送先の計算ノードに対して復帰通知を送信するようにしてもよい。
(S16)スケジューリング部132は、再開ノードが対象ジョブを実行中の計算ノードと同一の計算ノードであるか判断する。同一の計算ノードである場合はジョブ中断の処理が終了し、別の計算ノードである場合はステップS18に処理が進む。
(S17)スケジューリング部132は、決定されたマイグレーション開始時刻になると、対象ジョブを実行中の計算ノードに対してマイグレーション通知を送信する。このとき、スケジューリング部132は、1つ目のマイグレーション通知を送信した時刻を記録しておく。なお、スケジューリング部132は、更にマイグレーション先の計算ノードに対してマイグレーション通知を送信するようにしてもよい。
(S18)スケジューリング部132は、ステップS15の復帰通知またはステップS17のマイグレーション通知に対応する、データ転送の完了を示す完了通知を受信する。完了通知は、例えば、転送先またはマイグレーション先の計算ノードから受信される。
(S19)スケジューリング部132は、1つ目の復帰通知またはマイグレーション通知を送信したとき(ステップS15またはステップS17で記録した時刻)から、最後の完了通知を受信したときまでの時間を、転送時間として測定する。そして、スケジューリング部132は、測定した転送時間を、ステップS12で保存した指標値やメモリ使用量と対応付けて回帰分析テーブル124に保存する。
(S20)スケジューリング部132は、係数の更新をフィードバック部134に依頼する。フィードバック部134は、回帰分析テーブル124から、蓄積されている指標値とメモリ使用量と転送時間の組を複数取得する。
(S21)フィードバック部134は、ステップS20で取得した指標値とメモリ使用量と転送時間を用いて回帰分析を行い、転送時間の推定式に用いられる係数A,B,C,D,Eを算出する。例えば、フィードバック部134は、平均帯域幅=メモリ使用量/転送時間を目的変数(従属変数)とし、ノード使用率・リンク使用平均・リンク使用分散・ホップ数・ジョブサイズを説明変数(独立変数)として、回帰分析を行う。フィードバック部134は、算出した係数A,B,C,D,Eを時間推定部133に通知する。時間推定部133は、パラメータ記憶部121に記憶された係数テーブル125に係数A,B,C,D,Eを上書き保存することで、係数テーブル125を更新する。
図15は、スケジュール決定の手順例を示すフローチャートである。
このスケジュール決定の処理は、上記のステップS10で実行される。
(S30)スケジューリング部132は、最新のスケジュール情報から、現在以降に存在する一纏まりの空き計算リソース(隣接した計算ノード群および連続した空き時間をもつもの)を検出し、検出した空き計算リソースを時刻の早い順にソートする。ただし、スケジューリング部132は、検出する空き計算リソースを、対象ジョブの計算ノード条件(使用する計算ノードの数および隣接関係)を満たすものに限定する。スケジューリング部132は、時刻の早い方から空き計算リソースを1つ選択する。
(S31)スケジューリング部132は、ステップS30で選択した空き計算リソースをもつ計算ノードが、対象ジョブを実行中の計算ノードと同一であるか判断する。また、スケジューリング部132は、対象ジョブを実行中の計算ノードの全てが、他のジョブのデータを追加的に記憶するのに十分なメモリ残量を有しているか(例えば、メモリ残量が閾値以上であるか)判断する。後者の条件は、収集されたリソース情報が示す各計算ノードのメモリ使用量に基づいて判断できる。上記2つの条件を満たす場合はステップS32に処理が進み、少なくとも一方を満たさない場合はステップS33に処理が進む。
(S32)スケジューリング部132は、ジョブスワップを選択する。
(S33)スケジューリング部132は、選択した空き計算リソースをもつ計算ノードが、対象ジョブを実行中の計算ノードとは別であるか判断する。また、スケジューリング部132は、使用中の計算リソースと選択した空き計算リソースとが中断時に同時に使用可能であるか(例えば、使用中の計算リソースと選択した空き計算リソースとが、時間軸上で所定時間以上重複しているか)判断する。上記2つの条件を満たす場合はステップS34に処理が進み、少なくとも一方を満たさない場合はステップS35に処理が進む。
(S34)スケジューリング部132は、マイグレーションを選択する。
(S35)スケジューリング部132は、チェックポイントリスタートを選択する。
(S36)スケジューリング部132は、時間推定部133を利用して、ジョブ中断に関する時間を推定する。ジョブスワップまたはチェックポイントリスタートが選択された場合は退避時間および復帰時間が推定され、マイグレーションが選択された場合はマイグレーション時間が推定される。時間推定については後述する。
(S37)スケジューリング部132は、中断方法がマイグレーションであるか判断する。マイグレーションである場合はステップS39に処理が進み、ジョブスワップまたはチェックポイントリスタートである場合はステップS38に処理が進む。
(S38)スケジューリング部132は、現在の計算リソースの終了時刻(次のジョブの開始予定時刻)より退避時間だけ早い時刻を、退避開始時刻として算出する。また、スケジューリング部132は、現在の計算リソースの終了時刻を退避完了時刻とみなし、次のジョブの終了予定時刻を復帰開始時刻とみなす。また、スケジューリング部132は、復帰開始時刻から復帰時間だけ遅い時刻を、復帰完了時刻として算出する。スケジューリング部132は、復帰完了時刻から、選択した空き計算リソースの終了時刻までの時間を、実行可能時間として算出する。ただし、スケジューリング部132は、次のジョブ中断を行うための退避時間を実行可能時間から差し引いてもよい。
(S39)スケジューリング部132は、現在の計算リソースの終了時刻(次のジョブの開始予定時刻)よりマイグレーション時間だけ早い時刻を、マイグレーション開始時刻として算出する。また、スケジューリング部132は、現在の計算リソースの終了時刻をマイグレーション完了時刻とみなす。スケジューリング部132は、マイグレーション完了時刻から、選択した空き計算リソースの終了時刻までの時間を、実行可能時間として算出する。ただし、スケジューリング部132は、次のジョブ中断を行うための退避時間を実行可能時間から差し引いてもよい。
(S40)スケジューリング部132は、ジョブが現在の計算リソースを使い切った後の残り実行予定時間を算出する。残り実行予定時間は、ジョブに対して当初指定された実行予定時間とスケジュール情報に基づいて算出できる。スケジューリング部132は、ステップS38またはステップS39で算出した実行可能時間が、残り実行予定時間以上であるか判断する。実行可能時間が残り実行予定時間以上である場合はステップS42に処理が進み、それ以外の場合はステップS41に処理が進む。
(S41)スケジューリング部132は、ステップS38またはステップS39で算出した実行可能時間が、所定の閾値以上であるか判断する。実行可能時間が閾値以上である場合はステップS42に処理が進む。それ以外の場合はステップS30に処理が進み、次に時刻の早い空き計算リソースが割り当て候補として選択される。
(S42)スケジューリング部132は、最後に選択した空き計算リソースを用いるジョブ中断スケジュールを決定する。ジョブ中断スケジュールは、中断方法、再開ノード、退避時間、退避開始時刻、退避完了時刻、復帰時間、復帰開始時刻、復帰完了時刻、マイグレーション時間、マイグレーション開始時刻、マイグレーション完了時刻などを示す。
図16は、時間推定の手順例を示すフローチャートである。
この時間推定の処理は上記のステップS36において実行される。
(S50)スケジューリング部132は、メモリ使用量を算出する。例えば、スケジューリング部132は、収集されたリソース情報から、対象ジョブを実行中の計算ノードそれぞれのメモリ使用量を検索し、メモリ使用量の平均値または最大値を算出する。
(S51)スケジューリング部132は、再開ノードが対象ジョブを実行中の計算ノードと同一の計算ノードであるか判断する。同一の計算ノードである場合はステップS55に処理が進み、別の計算ノードである場合はステップS52に処理が進む。
(S52)スケジューリング部132は、トポロジ情報と、対象ジョブを実行中の計算ノードの座標と、再開ノードの座標と、予め各計算ノードに設定されているルーティングアルゴリズムとに基づいて、対象ジョブのデータを転送する経由ノードを判定する。また、スケジューリング部132は、転送元の計算ノードと転送先の計算ノードの組それぞれについてホップ数を算出し、ホップ数の平均を算出する。
(S53)スケジューリング部132は、スケジュール情報に基づいて、対象ジョブに割り当てられているノードの数(ジョブサイズ)を算出する。また、スケジューリング部132は、スケジュール情報に基づいて、ステップS52で判定された経由ノードのうち他のジョブに割り当てられている経由ノードをカウントし、カウントした経由ノードの数/判定された全ての経由ノードの数をノード使用率として算出する。
(S54)スケジューリング部132は、収集されたリソース情報から、ステップS52で判定された経由ノードのリンク使用量を検索し、経由ノードが使用するリンク1個当たりのリンク使用量の平均および分散を算出する。
(S55)スケジューリング部132は、中断方法とステップS50で算出したメモリ使用量とを指定して、ジョブ中断に関する時間の推定を時間推定部133に依頼する。再開ノードが別の計算ノードである場合、スケジューリング部132は、更に、ステップS52で算出されたホップ数と、ステップS53で算出されたジョブサイズおよびノード使用率と、ステップS54で算出されたリンク使用平均およびリンク使用分散を指定する。時間推定部133は、中断方法がジョブスワップであるか判断する。ジョブスワップである場合はステップS56に処理が進み、それ以外の場合はステップS57に処理が進む。
(S56)時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたRAM書き込み速度とから、退避時間を推定する。また、時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたRAM読み出し速度とから、復帰時間を推定する。そして、時間推定の処理が終了する。
(S57)時間推定部133は、中断方法がマイグレーションであるか判断する。マイグレーションである場合はステップS58に処理が進み、それ以外の場合(チェックポイントリスタートである場合)はステップS59に処理が進む。
(S58)時間推定部133は、指定されたメモリ使用量および複数の指標値と、定数テーブル123に登録された理想帯域幅と、係数テーブル125に登録された係数A,B,C,D,Eとを推定式に代入して、転送時間を推定する。そして、時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたRAM読み出し速度およびRAM書き込み速度と、推定した転送時間とから、マイグレーション時間を推定する。その後、時間推定の処理が終了する。
(S59)時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたHDD書き込み速度とから、退避時間を推定する。
(S60)時間推定部133は、再開ノードが同一の計算ノードであるか、すなわち、中断方法がチェックポイントリスタート(同一ノード復帰)であるか判断する。チェックポイントリスタート(同一ノード復帰)である場合はステップS61に処理が進み、チェックポイントリスタート(別ノード復帰)である場合はステップS62に処理が進む。
(S61)時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたHDD読み出し速度とから、復帰時間を推定する。
(S62)時間推定部133は、指定されたメモリ使用量および複数の指標値と、定数テーブル123に登録された理想帯域幅と、係数テーブル125に登録された係数A,B,C,D,Eとを推定式に代入して、転送時間を推定する。そして、時間推定部133は、指定されたメモリ使用量と、定数テーブル123に登録されたHDD読み出し速度およびRAM書き込み速度と、推定した転送時間とから、復帰時間を推定する。
なお、上記説明では、1つのジョブ中断スケジュールを決定する毎に、回帰分析を行って係数A,B,C,D,Eを更新することとした。これに対し、ある程度の量の情報が回帰分析テーブル124に蓄積されるのを待って、バッチ方式で回帰分析を行ってもよい。
例えば、フィードバック部134は、回帰分析テーブル124への指標値とメモリ使用量と転送時間の組(エントリ)の登録を監視し、一定量のエントリが蓄積されたときに回帰分析を開始する。この場合、フィードバック部134は、回帰分析に使用したエントリを回帰分析テーブル124から削除するようにしてもよい。これにより、回帰分析の実行間隔を調整することができ、管理ノード100の負荷を低減できる。
第2の実施の形態の並列計算システムによれば、ジョブ中断スケジュールを決定するとき、ジョブのデータを中継する経由ノードが判定され、経由ノードの使用状況など転送時間に影響を与える複数の指標値が算出される。そして、算出された複数の指標値とそれら指標値を重み付ける複数の係数とを用いて、転送時間が推定される。これにより、ハードウェア性能などの静的な情報のみに基づいて転送時間を推定する場合と比べて、推定精度を向上できる。また、データ転送が行われると実際の転送時間がフィードバックされ、実際の転送時間と推定に用いられた複数の指標値とを用いて回帰分析が行われ、推定に用いられる複数の係数が更新される。これにより、更に転送時間の推定精度を向上できる。
その結果、データ転送後に確保できる連続した実行可能時間を精度よく算出することができる。よって、ジョブの中断が頻繁に発生するのを抑制でき、実質的なノード使用効率が向上するようにジョブスケジューリングを行うことが容易となる。
[第3の実施の形態]
次に、第3の実施の形態を説明する。第2の実施の形態との違いを中心に説明し、第2の実施の形態と同様の事項は説明を省略することがある。
第3の実施の形態の並列計算システムは、実際の転送時間の測定方法が第2の実施の形態と異なる。第3の実施の形態の並列計算システムは、図2,3,10に示した第2の実施の形態の構成と同様の構成によって実現できる。以下、図2,3,10で使用した符号を用いて、第3の実施の形態について説明する。
図17は、転送時間測定の手順例を示すフローチャートである。
(S70)転送元ノードのジョブ中断部は、管理ノード100から、チェックポイントリスタート(別ノード復帰)の復帰通知またはマイグレーション通知を受信する。すると、転送元ノードのジョブ中断部は、現在時刻(開始時刻)を示すパケットを転送先ノードに送信する。転送先ノードは、管理ノード100から指定される。
(S71)転送先ノードのジョブ中断部は、転送元ノードから受信したパケットが示す開始時刻をRAMまたはHDDに記録しておく。
(S72)転送元ノードのジョブ中断部は、対象ジョブに属するプロセスのデータをRAMから読み出し、転送先ノードに対して送信する。
(S73)転送先ノードのジョブ中断部は、転送元ノードからプロセスのデータを受信し、受信したデータをRAMに書き込む。
(S74)転送先ノードのジョブ中断部は、プロセスのデータを全て受信し終えると、現在時刻(終了時刻)をRAMまたはHDDに記録する。
(S75)転送先ノードのジョブ中断部は、ステップS71で記録した開始時刻とステップS74で記録した終了時刻を管理ノード100に通知する。以上のステップS70〜S75の処理は、転送元ノードと転送先ノードの組毎に実行される。
(S76)管理ノード100のスケジューリング部132は、転送先ノードそれぞれから、開始時刻と終了時刻の通知を受信する。
(S77)スケジューリング部132は、通知された開始時刻のうち最も時間の早い開始時刻を抽出する。また、スケジューリング部132は、通知された終了時刻のうち最も遅い終了時刻を抽出する。そして、スケジューリング部132は、最も遅い終了時刻から最も早い開始時刻を差し引いた時間、すなわち、全てのデータ転送を実行するのに要した時間を転送時間として算出し、回帰分析テーブル124に保存する。
第3の実施の形態の並列計算システムによれば、第2の実施の形態と同様の効果が得られる。更に、第3の実施の形態では、データ転送開始のタイムスタンプが転送元ノードによって生成され、データ転送終了のタイムスタンプが転送先ノードによって生成される。これにより、実際の転送時間の測定精度を向上させることができる。その結果、回帰分析の精度が向上し、転送時間の推定精度を更に向上させることができる。
なお、第1の実施の形態の情報処理は、並列計算制御装置10やノード21〜26にプログラムを実行させることで実現できる。第2および第3の実施の形態の情報処理は、計算ノード1A〜9A,1B〜9B,…,1F〜9Fや管理ノード100にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体113)に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からHDDなどの他の記録媒体(例えば、HDD103)にプログラムをコピーして実行してもよい。
10 並列計算制御装置
11 通信部
12 制御部
13 ジョブ
14 指標値
15 メモリ使用量
16 転送時間
20 ネットワーク
21〜26 ノード

Claims (6)

  1. ネットワークで接続された複数のノードと通信する通信部と、
    前記複数のノードの一部をあるジョブに割り当てる制御部とを有し、
    前記制御部は、前記複数のノードのうち、前記ジョブに割り当てられた第1のノードから第2のノードへの経路上に位置する経由ノードを判定し、前記経由ノードにおけるリソースの使用状況を示す指標値を取得し、前記指標値と前記ジョブのメモリ使用量とに基づいて、前記第1のノードから前記第2のノードに前記ジョブのデータを転送する場合の転送時間の推定値を算出する、
    並列計算制御装置。
  2. 前記推定値の算出には、前記指標値を重み付ける係数を更に用い、
    前記制御部は、前記推定値の算出後に前記第1のノードから前記第2のノードに前記ジョブのデータが転送された場合、当該転送の実行結果に基づいて前記係数を更新する、
    請求項1記載の並列計算制御装置。
  3. 前記指標値として、前記経由ノードにおける他のジョブの実行状況を示す第1の指標値と、通信リンクの使用状況を示す第2の指標値の少なくとも一方を用いる、
    請求項1または2記載の並列計算制御装置。
  4. 前記制御部は、前記推定値とスケジュール上の前記第2のノードの空き時間とに基づいて、前記ジョブのデータを前記第2のノードに転送するか否か決定する、
    請求項1乃至3の何れか一項に記載の並列計算制御装置。
  5. ネットワークで接続された複数のノードと、
    前記複数のノードの一部をあるジョブに割り当てる制御装置とを有し、
    前記制御装置は、前記複数のノードのうち、前記ジョブに割り当てられた第1のノードから第2のノードへの経路上に位置する経由ノードを判定し、前記経由ノードにおけるリソースの使用状況を示す指標値を取得し、前記指標値と前記ジョブのメモリ使用量とに基づいて、前記第1のノードから前記第2のノードに前記ジョブのデータを転送する場合の転送時間の推定値を算出する、
    並列計算システム。
  6. コンピュータに、
    ネットワークで接続された複数のノードのうち、あるジョブに割り当てられた第1のノードから第2のノードへの経路上に位置する経由ノードを判定し、
    前記経由ノードにおけるリソースの使用状況を示す指標値を取得し、
    前記指標値と前記ジョブのメモリ使用量とに基づいて、前記第1のノードから前記第2のノードに前記ジョブのデータを転送する場合の転送時間の推定値を算出する、
    処理を実行させるマイグレーション時間推定プログラム。
JP2015079665A 2015-04-09 2015-04-09 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム Expired - Fee Related JP6447329B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015079665A JP6447329B2 (ja) 2015-04-09 2015-04-09 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム
US15/073,722 US10055252B2 (en) 2015-04-09 2016-03-18 Apparatus, system and method for estimating data transfer periods for job scheduling in parallel computing

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015079665A JP6447329B2 (ja) 2015-04-09 2015-04-09 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム

Publications (2)

Publication Number Publication Date
JP2016200923A JP2016200923A (ja) 2016-12-01
JP6447329B2 true JP6447329B2 (ja) 2019-01-09

Family

ID=57111952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015079665A Expired - Fee Related JP6447329B2 (ja) 2015-04-09 2015-04-09 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム

Country Status (2)

Country Link
US (1) US10055252B2 (ja)
JP (1) JP6447329B2 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8775576B2 (en) 2012-04-17 2014-07-08 Nimbix, Inc. Reconfigurable cloud computing
US9973566B2 (en) 2013-11-17 2018-05-15 Nimbix, Inc. Dynamic creation and execution of containerized applications in cloud computing
US10142417B2 (en) 2012-04-17 2018-11-27 Nimbix, Inc. System and method for managing heterogeneous data for cloud computing applications
JP6487359B2 (ja) * 2016-03-16 2019-03-20 Kddi株式会社 ネットワークサービス評価システム
US10235207B2 (en) * 2016-09-30 2019-03-19 Nimbix, Inc. Method and system for preemptible coprocessing
JP2019020945A (ja) * 2017-07-14 2019-02-07 富士通株式会社 並列処理制御装置およびジョブスワッププログラム
US11061585B1 (en) * 2017-10-19 2021-07-13 EMC IP Holding Company, LLC Integration of NVMe device with DRAM cache system and method
US10521137B1 (en) 2017-10-31 2019-12-31 EMC IP Holding Company LLC Storage device array integration of dual-port NVMe device with DRAM cache and hostside portion of software stack system and method
JP7124592B2 (ja) * 2018-09-21 2022-08-24 日本電気株式会社 ジョブ実行システムおよびジョブ実行方法
JP7180362B2 (ja) * 2018-12-19 2022-11-30 富士通株式会社 情報処理装置、情報処理プログラムおよび情報処理システム
JP7200738B2 (ja) * 2019-02-21 2023-01-10 日本電信電話株式会社 分散システム、データ振り分け方法、及びプログラム
US11068357B2 (en) * 2019-06-03 2021-07-20 EMC IP Holding Company LLC Uninterrupted restore operation using a time based approach
US11630598B1 (en) * 2020-04-06 2023-04-18 Pure Storage, Inc. Scheduling data replication operations
CN111736996B (zh) * 2020-06-17 2022-08-16 上海交通大学 一种面向分布式非易失内存系统的进程持久化方法及装置
US20220413895A1 (en) * 2021-06-24 2022-12-29 Oracle International Corporation Selecting a node dedicated to transactions of a particular work group for executing a target transaction of another work group
US20220413920A1 (en) * 2021-06-24 2022-12-29 Oracle International Corporation Selecting a node of a work group for executing a target transaction of another work group to execute skippable steps prior to a predicted interruption
US20220413896A1 (en) * 2021-06-24 2022-12-29 Oracle International Corporation Selecting a node group of a work group for executing a target transaction of another work group to optimize parallel execution of steps of the target transaction
US20230289216A1 (en) * 2022-03-11 2023-09-14 Rubrik, Inc. Dynamic management of version dependencies for executing parallel workloads

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU657685B2 (en) * 1990-06-14 1995-03-23 Fujitsu Limited A synchronization control system in a parallel computer
JPH06187308A (ja) 1992-12-21 1994-07-08 Toshiba Corp 複合計算機システムに於ける分散共有記憶管理方式及び負荷分散方式
JPH0934847A (ja) * 1995-07-14 1997-02-07 Hitachi Ltd 並列計算機システムの負荷分散方法
JP3213697B2 (ja) * 1997-01-14 2001-10-02 株式会社ディジタル・ビジョン・ラボラトリーズ 中継ノードシステム及び同システムにおける中継制御方法
JP4365916B2 (ja) * 1998-11-27 2009-11-18 キヤノン株式会社 印刷装置、制御方法及び記憶媒体
JP2001109638A (ja) * 1999-10-06 2001-04-20 Nec Corp 推定伸長率に基づくトランザクション負荷分散方法及び方式並びにコンピュータ可読記録媒体
JP2002007364A (ja) * 2000-06-22 2002-01-11 Fujitsu Ltd 並列計算機システムのジョブスケジューリングを行うスケジューリング装置
JP4265087B2 (ja) * 2000-06-29 2009-05-20 ソニー株式会社 データ変換装置及び方法、データ送受信装置及び方法、ネットワークシステム
JP2002203057A (ja) * 2000-11-01 2002-07-19 Cec:Kk 付加価値データ倉庫システム
JP2004355060A (ja) * 2003-05-27 2004-12-16 Hitachi Ltd ネットワーク構成に基づくタスク割当方法
JP5056844B2 (ja) * 2007-03-20 2012-10-24 富士通株式会社 一意情報集団通信プログラム、計算ノード、および一意情報集団通信方法
US8385345B2 (en) * 2007-09-19 2013-02-26 At&T Intellectual Property Ii, L.P. Data forwarding in hybrid mesh networks
JP4760875B2 (ja) * 2008-08-13 2011-08-31 日本電気株式会社 負荷制御システム
JP2010182199A (ja) 2009-02-06 2010-08-19 Nec Corp ジョブスケジューリングシステム、方法、及びプログラム
JP5577745B2 (ja) * 2010-02-25 2014-08-27 日本電気株式会社 クラスタシステム、プロセス配置方法、及びプログラム
JP5672521B2 (ja) 2010-03-05 2015-02-18 日本電気株式会社 コンピュータシステム、およびそのチェックポイントリスタート方法
JP2014102691A (ja) * 2012-11-20 2014-06-05 Toshiba Corp 情報処理装置、通信機能を持つカメラ、および情報処理方法
US8938730B2 (en) * 2012-12-17 2015-01-20 Itron, Inc. Utilizing a multi-system set configuration to update a utility node system set
US20140226975A1 (en) * 2013-02-13 2014-08-14 Sodero Networks, Inc. Method and apparatus for boosting data intensive processing through optical circuit switching
JP6191332B2 (ja) * 2013-08-22 2017-09-06 富士通株式会社 並列計算機システム、並列計算機システムの制御方法及び管理装置の制御プログラム
US20160013990A1 (en) * 2014-07-09 2016-01-14 Cisco Technology, Inc. Network traffic management using heat maps with actual and planned /estimated metrics
US10050862B2 (en) * 2015-02-09 2018-08-14 Cisco Technology, Inc. Distributed application framework that uses network and application awareness for placing data

Also Published As

Publication number Publication date
US10055252B2 (en) 2018-08-21
JP2016200923A (ja) 2016-12-01
US20160299795A1 (en) 2016-10-13

Similar Documents

Publication Publication Date Title
JP6447329B2 (ja) 並列計算制御装置、並列計算システムおよびマイグレーション時間推定プログラム
JP7138126B2 (ja) リソース配置を最適化するための適時性リソース移行
US10831387B1 (en) Snapshot reservations in a distributed storage system
JP6056453B2 (ja) プログラム、データ管理方法および情報処理装置
CN109684074B (zh) 物理机资源分配方法及终端设备
JP6075226B2 (ja) プログラム、仮想マシン管理方法および情報処理装置
JP6372074B2 (ja) 情報処理システム,制御プログラム及び制御方法
US20160266923A1 (en) Information processing system and method for controlling information processing system
WO2014073046A1 (ja) 情報処理装置、プログラムおよび仮想マシン移動方法
JP5803496B2 (ja) ストレージシステム
US20170161117A1 (en) Apparatus and method to determine a service to be scaled out based on a predicted virtual-machine load and service importance
JP6246923B2 (ja) 管理サーバ、計算機システム及び方法
JP6477266B2 (ja) ダンプ管理装置、ダンプ管理プログラム及びダンプ管理方法
JP5515889B2 (ja) 仮想マシンシステム、自動マイグレーション方法および自動マイグレーションプログラム
JP6115575B2 (ja) データセット多重度変更装置、サーバ、データセット多重度変更方法、およびコンピュータ・プログラム
US20180217875A1 (en) Data processing system and data processing method
JP6940761B2 (ja) 情報処理装置、仮想マシン監視プログラム、および情報処理システム
US10394615B2 (en) Information processing apparatus and job management method
US10061624B2 (en) Parallel computing system, job management device, and job management method
JP6279816B2 (ja) ストレージ監視システムおよびその監視方法
JP5617586B2 (ja) 情報処理プログラム、中継装置及び中継管理装置
WO2017098591A1 (ja) 計算機及びストレージ装置を有するシステム、及びシステムの制御方法
US20230185632A1 (en) Management system, data rebalancing management method, and recording medium
JP2010231296A (ja) 並列計算システム
JP6736932B2 (ja) 情報処理システム、ストレージ装置、情報処理方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180912

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20181106

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20181119

R150 Certificate of patent or registration of utility model

Ref document number: 6447329

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees