(57)【要約】【課題】退避対象ジョブの転送先の計算ノードと転送するメモリ退データサイズとを容易に決定できるようにする。【解決手段】新たなジョブが入力された場合に、複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定する退避ジョブ決定部１１１と、空きメモリ情報１２１と経路状況情報１２２とに基づき、各計算ノードからメモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、この評価式の演算結果に基づき、退避対象ジョブの転送先の計算ノードの決定と、転送するメモリデータサイズの決定とを行なう、退避決定部１１２とを備える【選択図】図５
2019020945.tif 000002
【特許請求の範囲】
【請求項１】
複数の計算ノードにジョブを割り当てて演算処理を行なわせる並列処理制御装置であって、
前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得する経路状況情報取得部と、
前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得する、空きメモリ情報取得部と、
新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定する退避ジョブ決定部と、
前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう、退避決定部と
を備える、並列処理制御装置。
【請求項２】
前記退避決定部が、
全ての計算ノードを前記退避対象ジョブの転送先の計算ノードの対象として選択し、選択した計算ノードへのデータ転送性能を最大にする線形計画法の問題として解くことで、前記退避対象ジョブの転送先の計算ノードの決定と、前記メモリデータサイズの決定とを行なう
ことを特徴とする、請求項１記載の並列処理制御装置。
【請求項３】
前記退避決定部が、前記複数の計算ノードにおける空きメモリ量に関する第１の評価式と、前記経路のバンド幅に関する第２の評価式とに基づき、各計算ノードから各空きメモリ計算ノードへの転送量の合計を規定する目的関数を最大化する、前記退避対象ジョブの転送元の計算ノードと前記退避対象ジョブの転送先の計算ノードとの組み合わせと、前記送信するメモリデータサイズとを決定する
ことを特徴とする、請求項１または２記載の並列処理制御装置。
【請求項４】
前記複数の計算ノードの中から、候補選択ポリシーに従って、前記退避対象ジョブの転送先の計算ノードの候補を選択する候補選択部を備え、
前記退避決定部が、前記退避対象ジョブの転送先の計算ノードの候補の中から、前記退避対象ジョブの転送先の計算ノードを決定する
ことを特徴とする、請求項１〜３のいずれか１項に記載の並列処理制御装置。
【請求項５】
複数の計算ノードにジョブを割り当てて演算処理を行なわせる並列処理制御装置のプロセッサに、
前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得し、
前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得し、
新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定し、
前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう
処理を実行させる、ジョブスワッププログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理制御装置およびジョブスワッププログラムに関する。
【背景技術】
【０００２】
並列計算機システムは、ネットワークを介して接続された複数の計算ノードを備え、これらの複数の計算ノードのそれぞれにジョブを割り当てることで並列に処理させる。なお、計算ノードを計算機資源という場合がある。
【０００３】
並列計算機システムにおいては、処理対象のジョブの計算機資源への割り当てや、計算機資源におけるジョブの処理時間の管理等のスケジューリングを行なう、ジョブ管理ノードも備えられる。
【０００４】
並列計算機システムにおいて、緊急に処理を行なうことが求められる緊急ジョブが入力された場合に、割り当て可能な計算機資源の空きがない場合には、この緊急ジョブを処理することができない。
【０００５】
このように、割り当て可能な計算機資源の空きがなく、処理させることができないでいるジョブを、計算機資源の空き待ちのジョブという場合がある。
【０００６】
従来の並列計算機システムにおいて、計算機資源の空き待ちの緊急ジョブが生じた場合には、この緊急ジョブに計算機資源を割り当てるために、他のジョブを実行中の計算機資源にジョブの処理を停止させてから、この計算機資源に緊急ジョブを割り当てる。
【０００７】
この際に、この緊急ジョブの割り当て先の計算ノードにおいて、実行中のジョブを停止させ、そのメモリのデータ（以下、スワップデータという場合がある）をディスク装置等に書き出させる（スワップアウト）必要がある。メモリには、その計算ノードにおいて処理されていたジョブの演算結果が格納されている。従って、メモリのデータを他の計算ノードに転送することは、ジョブを転送させることと同意といえる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２０１６−５１９３７８号公報
【特許文献２】国際公開第２０１３／１４５５１２号
【特許文献３】特開２０１６−２２４８３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
並列計算機システムにおいて、緊急ジョブの割り当て先として決定された計算ノードにおいては、緊急ジョブの実行に必要なメモリの空き容量を確保できない場合がある。このような場合には、緊急ジョブの割り当て先の計算ノードにおいて、メモリ上のスワップデータをＨＤＤ（Hard Disk Drive）等のディスク装置へ書き出すことで、メモリに空き領域を確保する。
【００１０】
ただし、一般に、ディスク装置のＩ／Ｏ（Input／Output）性能は低いので、ディスク装置へのＩ／Ｏを伴うジョブスワップ処理は、緊急ジョブが実行可能となるまでに時間を要する。
【００１１】
そこで、ディスク装置にスワップデータを書き出す代わりに、並列計算機システム上に備えられた他のノードのメモリの使用されていない領域（空き領域）をスワップデータ用キャッシュとして使用することが考えられる。
【００１２】
ジョブを実行していた一の計算ノードのメモリ上のスワップデータを他の計算ノードのメモリに転送させることで、一の計算ノードにおいて実行されていたジョブが他の計算ノードに転送されることになる。以下、一の計算ノードのスワップデータを他の計算ノードのメモリに転送させることを、ジョブスワップという場合がある。
【００１３】
以下、並列計算機システム上に備えられた、メモリに空き領域を有するノードを空きノードという場合がある。また、スワップデータが書き出される側の計算ノードをスワップ元ノードという場合がある。さらに、スワップデータ用キャッシュとして用いられるメモリを有し、スワップ先として用いられる計算ノードをスワップ先ノードという場合がある。
【００１４】
空きノードのメモリをスワップ先として用いるべくジョブスワップを行なう場合に、以下に示す理由により、スワップ元ノードとスワップ先ノードとの組み合わせに応じて、ジョブスワップにかかる処理性能に大きな違いが生じる。
【００１５】
すなわち、スワップ元ノードからスワップ先ノードまでの通信経路における通信バンド幅は、スワップ元ノードとスワップ先ノードとの組み合わせに応じて、その時々で様々な値になる。この通信バンド幅の変化が、スワップアウトの処理時間に影響を及ぼすからである。
【００１６】
そして、並列計算機システムにおいて、計算ノード間や計算ノードとＩ／Ｏノードとの間の通信経路上において、他のジョブによって生じる通信との干渉の度合いが通信バンド幅の変化に影響を及ぼすと考えられる。なお、Ｉ／Ｏノードとは、並列計算機システムの外部装置と通信するために用いられるノードである。
【００１７】
従って、従来の並列計算機システムにおいて、空きノードのメモリをスワップ先として用いるべく、計算ノード間においてジョブスワップを行なう場合に、最適なスワップ先ノードを決定することが困難であるという課題がある。
【００１８】
１つの側面では、本発明は、退避対象ジョブの転送先の計算ノードを容易に決定できるようにすることを目的とする。
【課題を解決するための手段】
【００１９】
このため、この並列処理制御装置は、複数の計算ノードにジョブを割り当てて演算処理を行なわせる並列処理制御装置であって、前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得する経路状況情報取得部と、前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得する、空きメモリ情報取得部と、新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定する退避ジョブ決定部と、前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう、退避決定部とを備える。
【発明の効果】
【００２０】
一実施形態によれば、退避対象ジョブの転送先の計算ノードを容易に決定することができる。
【図面の簡単な説明】
【００２１】
【図１】実施形態の一例としての並列計算機システムの構成を示す図である。
【図２】実施形態の一例としての並列計算機システムの計算ノードのハードウェア構成の一例を示すブロック図である。
【図３】実施形態の一例としての並列計算機システムにおける計算ノードの機能構成の一例を示すブロック図である。
【図４】実施形態の一例としての並列計算機システムのジョブ管理ノードのハードウェア構成の一例を示すブロック図である。
【図５】実施形態の一例としての並列計算機システムにおけるジョブ管理ノードの機能構成の一例を示すブロック図である。
【図６】実施形態の一例としての並列計算機システムにおけるジョブスワップ元およびジョブスワップ先の決定方法を説明するための図である。
【図７】実施形態の一例としての並列計算機システムにおけるジョブスワップ先の決定方法を説明するための図である。
【図８】実施形態の一例としての並列計算機システムにおけるジョブスワップ先の決定方法を説明するための図である。
【図９】実施形態の一例としての並列計算機システムにおけるジョブスワップ先の決定方法を説明するための図である。
【図１０】実施形態の一例としての並列計算機システムにおける緊急ジョブが投入された際のジョブ管理ノードの処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本並列処理制御装置およびジョブスワッププログラムに係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。また、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２３】
（１）構成
図１は実施形態の一例としての並列計算機システム１の構成を示す図である。
【００２４】
並列計算機システム１は、図１に示すように、計算ノード群２０２とジョブ管理ノード１００とを備える。
【００２５】
計算ノード群２０２においては、複数の計算ノード２００がネットワーク２０１を介して相互に通信可能に接続され、これによりＮ次元の相互結合網が構成されている（Ｎは自然数）。また、ネットワーク２０１には、ジョブ管理ノード１００が接続されている。
【００２６】
ネットワーク２０１は通信回線であり、例えば、ＬＡＮ（Local Area Network）や光通信路である。
【００２７】
（１−１）計算ノード２００
計算ノード２００は情報処理装置であり、計算ノード群２０２に備えられた複数の計算ノード２００は、互いに同様の構成をそなえる。
【００２８】
図２は実施形態の一例としての並列計算機システム１の計算ノード２００のハードウェア構成の一例を示すブロック図である。
【００２９】
計算ノード２００は、例えば、プロセッサ２１，ＲＡＭ２２，ＨＤＤ２３，グラフィック処理装置２４，入力インタフェース２５，光学ドライブ装置２６，機器接続インタフェース２７およびネットワークインタフェース２８を構成要素として有する。これらの構成要素２１〜２８は、バス２９を介して相互に通信可能に構成される。
【００３０】
ＲＡＭ２２は、計算ノード２００の主記憶装置として使用される。ＲＡＭ２２には、プロセッサ２１に実行させるＯＳプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ２２には、プロセッサ２１による処理に必要な各種データが格納される。アプリケーションプログラムには、計算ノード２００においてジョブ演算処理機能や計算ノード管理機能を実現するためにプロセッサ２１によって実行される計算ノード用制御プログラムが含まれてもよい。
【００３１】
また、本並列計算機システム１においては、プロセッサ２１がジョブを実行する際に、このＲＡＭ２２上にジョブの実行に際して生成されるデータ等が格納される。そして、このＲＡＭ２２のデータがスワップデータとして他の計算ノード２００（スワップ先計算ノード２００）に送信される。
【００３２】
さらに、ＲＡＭ２２の空き領域には、他の計算ノード２００（スワップ元計算ノード２００）から送信されるスワップデータが格納される場合がある。
【００３３】
ＨＤＤ２３は、計算ノード２００の補助記憶装置として使用される。ＨＤＤ２３には、ＯＳプログラム，アプリケーションプログラム、および各種データが格納される。
【００３４】
グラフィック処理装置２４には、モニタ２４ａが接続されている。グラフィック処理装置２４は、プロセッサ２１からの命令に従って、画像をモニタ２４ａの画面に表示させる。モニタ２４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置等が挙げられる。
【００３５】
入力インタフェース２５には、キーボード２５ａおよびマウス２５ｂが接続されている。入力インタフェース２５は、キーボード２５ａやマウス２５ｂから送られてくる信号をプロセッサ２１に送信する。なお、マウス２５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル，タブレット，タッチパッド，トラックボール等が挙げられる。
【００３６】
光学ドライブ装置２６は、レーザ光等を利用して、光ディスク２６ａに記録されたデータの読み取りを行なう。光ディスク２６ａは、光の反射によって読み取り可能にデータを記録された可搬型の非一時的な記録媒体である。光ディスク２６ａには、ＤＶＤ（Digital Versatile Disc），ＤＶＤ−ＲＡＭ，ＣＤ−ＲＯＭ（Compact Disc Read Only Memory
），ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等が挙げられる。
【００３７】
機器接続インタフェース２７は、計算ノード２００に周辺機器を接続するための通信インタフェースである。例えば、機器接続インタフェース２７には、メモリ装置２７ａやメモリリーダライタ２７ｂを接続することができる。メモリ装置２７ａは、機器接続インタフェース２７との通信機能を搭載した非一時的な記録媒体、例えばＵＳＢ（Universal Serial Bus）メモリである。メモリリーダライタ２７ｂは、メモリカード２７ｃへのデータの書き込み、またはメモリカード２７ｃからのデータの読み出しを行なう。メモリカード２７ｃは、カード型の非一時的な記録媒体である。
【００３８】
ネットワークインタフェース２８は、ネットワーク２０１に接続される。ネットワークインタフェース２８は、ネットワーク２０１を介して、他のコンピュータ（計算ノード２００，ジョブ管理ノード１００）または通信機器との間でデータの送受信を行なう。
なお、計算ノード２００のハードウェア構成はこれに限定されるものではなく、適宜変更して実施することができる。例えば、グラフィック処理装置２４，モニタ２４ａ，入力インタフェース２５，キーボード２５ａ，マウス２５ｂ等の一部の構成を省略してもよい。
【００３９】
プロセッサ２１は、計算ノード２００全体を制御する。プロセッサ２１は、マルチプロセッサであってもよい。プロセッサ２１は、例えばＣＰＵ，ＭＰＵ（Micro Processing Unit），ＤＳＰ（Digital Signal Processor），ＡＳＩＣ（Application Specific Integrated Circuit），ＰＬＤ（Programmable Logic Device），ＦＰＧＡ（Field Programmable Gate Array）のいずれか一つであってもよい。また、プロセッサ２１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００４０】
なお、計算ノード２００は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム（計算ノード用制御プログラム等）を実行することにより、本実施形態のジョブ演算処理機能や計算ノード管理機能を実現する。計算ノード２００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、計算ノード２００に実行させるプログラムをＨＤＤ２３に格納しておくことができる。プロセッサ２１は、ＨＤＤ２３内のプログラムの少なくとも一部をＲＡＭ２２にロードし、ロードしたプログラムを実行する。
【００４１】
また、計算ノード２００（プロセッサ２１）に実行させるプログラムを、光ディスク２６ａ，メモリ装置２７ａ，メモリカード２７ｃ等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ２１からの制御により、ＨＤＤ２３にインストールされた後、実行可能になる。また、プロセッサ２１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４２】
そして、計算ノード２００において、プロセッサ２１が、計算ノード用制御プログラムを実行することで、ジョブ演算処理機能および計算ノード管理機能が実現される。
【００４３】
ジョブ演算処理機能は、ジョブ実行の制御を行なう。ジョブ演算処理機能は、後述するジョブ管理ノード１００から実行（演算）を依頼されたジョブについて、実行開始，実行状態の監視および終了等を制御する。なお、ジョブ管理ノード１００が計算ノード２００に「ジョブの実行を依頼する」ことを、「ジョブを割り当てる」という場合がある。
【００４４】
また、ジョブ演算処理機能は、ジョブ管理ノード１００から送信されるジョブ処理（実行）依頼に応じて、一部の計算資源の管理を行なってもよい。
【００４５】
なお、計算ノード２００におけるジョブの実行等の各処理は既知の手法を用いて実現することができ、その詳細な説明は省略する。
【００４６】
また、ジョブ演算処理機能においては、ジョブの処理結果（演算結果）を、必要に応じて、他の計算ノード２００やジョブの依頼元のホスト装置（図示省略）に対して、ネットワーク２０１を介して送信してもよい。
【００４７】
計算ノード管理機能は、当該計算ノード管理機能が動作する計算ノード２００（以下、自計算ノード２００という場合がある）を管理する。
【００４８】
図３は実施形態の一例としての並列計算機システム１における計算ノード２００の機能構成の一例を示すブロック図であり、計算ノード管理機能を実現するための機能構成を例示する。
【００４９】
計算ノード２００は、図３に示すように、通信リンク監視処理部２１１，スワップ処理部２１２およびメモリ資源監視処理部２１３としての機能を備え、これらにより計算ノード管理機能としての機能を実現する。
【００５０】
通信リンク監視処理部２１１は、監視プロセスとして、ネットワーク２０１において自計算ノード２００からのリンクを監視する。
【００５１】
計算ノード群２０２を構成するネットワーク２０１は、１つ以上の中継装置（図示省略）を介して複数の通信リンク（以下、単にリンクという）が結合されたものとみなすことができる。
【００５２】
通信リンク監視処理部２１１は、各リンクにおける単位時間毎のデータの通信量（転送量；例えば、単位はｂｐｓ（bit per second））を取得する。なお、リンクにおけるデータの通信量の取得は、既知の種々の手法を用いて実現することができる。
【００５３】
ここで、自計算ノード２００からのリンクとは、ネットワーク２０１における自計算ノード２００と他の計算ノード２００との間を接続する通信経路である。自計算ノード２００からのリンクは、ネットワーク２０１の構成や種類に応じて適宜決定される。
【００５４】
通信リンク監視処理部２１１は、取得した各リンクのデータ通信量の情報（実測値）を、ジョブ管理ノード１００の資源管理部１２０（図５参照）に定期的に送信する。
【００５５】
スワップ処理部２１２は、ジョブ管理ノード１００から受信したジョブスワップの実行依頼をトリガーとして、ＲＡＭ２２における実行中ジョブのメモリデータ（スワップ対象データ，スワップデータ）を他の計算ノード２００（スワップ先計算ノード２００，退避先計算ノード２００）に送信して、このスワップ先計算ノード２００のＲＡＭ２２（バッファ）に格納（退避）させる、スワップアウトを実現する。
【００５６】
なお、以下、スワップアウトないし空きノード２００へのスワップデータの転送に伴って行なわれる、スワップ元計算ノード２００からスワップ先計算ノード２００へのデータ通信を、スワップ通信（管理された通信）という場合がある。
【００５７】
また、スワップ通信以外の通信であり、計算ノード２００においてジョブを実行することによりリンクに生じる通信を非スワップ通信（管理されていない通信）という場合がある。
【００５８】
本並列計算機システム１において、空きノード２００とは、ＲＡＭ２２に空き領域がある計算ノード２００を示す。
【００５９】
また、スワップ元計算ノード２００をメモリ退避元ノード２００といってもよく、スワップ先計算ノード２００をメモリ退避先ノード２００といってもよい。
【００６０】
スワップ処理部２１２は、ジョブ管理ノード１００（ジョブスケジューラ１１０；図５参照）から、退避メモリ量およびスワップ先計算ノード２００とともにスワップ指示を受信すると、ＲＡＭ１２から退避メモリ量に相当するスワップデータを読み出してスワップ先計算ノード２００に送信する。
【００６１】
また、スワップ処理部２１２は、スワップデータの退避先の他の計算ノード２００（スワップ先計算ノード２００）に対して、スワップデータの送信を要求することで、他の計算ノード２００に退避させていたメモリデータを取り戻す。例えば、スワップ処理部２１２は、スワップ先の計算ノード２００に対して、スワップデータの送信を要求する所定の信号（スワップデータ取戻し要求信号）を送信する。
【００６２】
スワップ処理部２１２は、このスワップデータ取戻し要求信号に応答して送信された（取り戻した）スワップデータを、ＲＡＭ１２に格納（展開）することで、自計算ノード２００をスワップの開始前の状態に戻す。すなわち、スワップ処理部２１２は、スワップデータを復元する。
【００６３】
また、スワップ処理部２１２は、他の計算ノード２００からスワップデータが送信されてきた場合には、そのスワップデータを受信する。スワップ処理部２１２は、この受信したスワップデータを、ＲＡＭ２２における空き領域に格納する（退避させる）。また、スワップ処理部２１２は、スワップデータの送信元である計算ノード２００（以下、スワップ元計算ノード２００）からスワップデータ取戻し要求信号（スワップデータの取り戻し依頼）を受信した場合には、自計算ノード２００のＲＡＭ２２に格納されたスワップデータを送信（応答）する。
【００６４】
メモリ資源監視処理部２１３は、自計算ノード２００におけるメモリ資源の使用状況を監視する。例えば、メモリ資源監視処理部２１３は、メモリ資源の使用状況としてＲＡＭ２２の使用量（メモリ使用量）を監視し、使用状況に変化が生じると、ジョブ管理ノード１００の資源管理部１２０に、随時、変更後のメモリ使用量を通知する。なお、メモリ資源監視処理部２１３は、資源管理部１２０に対して、ＲＡＭ２２における使用していない領域サイズ（空きメモリ量）を通知してもよい。
【００６５】
また、メモリ資源監視処理部２１３は、自計算ノード２００がジョブのスワップ先として利用可能であるか、すなわち、自計算ノード２００のＲＡＭ２２に、他の計算ノード２００のスワップデータの少なくとも一部を格納できるだけの空きがあるか否かを判断し、空きノード状態としてジョブ管理ノード１００に通知する。例えば、メモリ資源監視処理部２１３は、ＲＡＭ２２に所定値以上の空き領域がある場合に、空きノードである旨を示す情報を通知する。なお、メモリ資源監視処理部２１３は、自計算ノード２００がジョブを実行中であるか否かを示す情報を空きノード状態としてジョブ管理ノード１００に通知してもよい。
【００６６】
従って、メモリ資源監視処理部２１３は、ジョブ管理ノード１００に対して、自計算ノード２００の使用状況を示す情報を通知する。
【００６７】
また、メモリ資源監視処理部２１３は、自計算ノード２００において使用状況の変化を検知すると、更新後の情報を、使用状況が変化したことを示す更新通知とともにジョブ管理ノード１００（資源管理部１２０）に、随時、送信することが望ましい。
【００６８】
本並列計算機システム１においては、各計算ノード２００がジョブの配置単位であるノードに相当する。計算ノード２００を単にノード２００という場合がある。
【００６９】
（１−２）ジョブ管理ノード１００
ジョブ管理ノード１００は、計算ノード群２０２に備えられた複数の計算ノード２００のうち、１つ以上の計算ノード２００にジョブを実行させる制御を行なう。ジョブ管理ノード１００は、２つ以上の計算ノード２００にジョブを割り当てることで２以上のジョブを並列に処理させる、並列処理制御装置である。
【００７０】
図４は実施形態の一例としての並列計算機システム１のジョブ管理ノード１００のハードウェア構成の一例を示すブロック図である。
【００７１】
ジョブ管理ノード１００は、情報処理装置であり、図４に例示するように、例えば、プロセッサ１１，ＲＡＭ１２，ＨＤＤ１３，グラフィック処理装置１４，入力インタフェース１５，光学ドライブ装置１６，機器接続インタフェース１７およびネットワークインタフェース１８を構成要素として有する。これらの構成要素１１〜１８は、バス１９を介して相互に通信可能に構成される。
【００７２】
ジョブ管理ノード１００における、これらのプロセッサ１１，ＲＡＭ１２，ＨＤＤ１３，グラフィック処理装置１４，入力インタフェース１５，光学ドライブ装置１６，機器接続インタフェース１７，ネットワークインタフェース１８およびバス１９は、それぞれ、計算ノード２００における、プロセッサ２１，ＲＡＭ２２，ＨＤＤ２３，グラフィック処理装置２４，入力インタフェース２５，光学ドライブ装置２６，機器接続インタフェース２７，ネットワークインタフェース２８およびバス２９と同様の機能構成を有する。従って、これらの各部の詳細な説明は省略する。
【００７３】
ＲＡＭ１２には、プロセッサ１１に実行させるＯＳプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１２には、プロセッサ１１による処理に必要な各種データが格納される。アプリケーションプログラムには、ジョブ管理ノード１００によって本実施形態のジョブ管理機能を実現するためにプロセッサ１１によって実行されるジョブスワッププログラムが含まれてもよい。
【００７４】
プロセッサ１１は、ジョブ管理ノード１００全体を制御する。プロセッサ１１は、マルチプロセッサであってもよい。プロセッサ１１は、例えばＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのいずれか一つであってもよい。また、プロセッサ１１は、ＣＰＵ，ＭＰＵ，ＤＳＰ，ＡＳＩＣ，ＰＬＤ，ＦＰＧＡのうちの２種類以上の要素の組み合わせであってもよい。
【００７５】
なお、ジョブ管理ノード１００は、例えばコンピュータ読み取り可能な非一時的な記録媒体に記録されたプログラム（ジョブスワッププログラム等）を実行することにより、本実施形態のジョブスワップ制御を実現する。ジョブ管理ノード１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、ジョブ管理ノード１００に実行させるプログラムをＨＤＤ１３に格納しておくことができる。プロセッサ１１は、ＨＤＤ１３内のプログラムの少なくとも一部をＲＡＭ１２にロードし、ロードしたプログラムを実行する。
【００７６】
また、ジョブ管理ノード１００（プロセッサ１１）に実行させるプログラムを、光ディスク１６ａ，メモリ装置１７ａ，メモリカード１７ｃ等の非一時的な可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１１からの制御により、ＨＤＤ１３にインストールされた後、実行可能になる。また、プロセッサ１１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００７７】
図５は実施形態の一例としての並列計算機システム１におけるジョブ管理ノード１００の機能構成の一例を示すブロック図である。
【００７８】
図５に示すように、ジョブ管理ノード１００は、ジョブスケジューラ１１０および資源管理部１２０としての機能をそなえる。
【００７９】
資源管理部１２０は、本並列計算機システム１の計算ノード群２０２の各計算ノード２００に関する情報を管理する。
【００８０】
資源管理部１２０は、図５に示すように、ノード状態管理情報１２１および通信状態管理情報１２２を管理し、これらを用いて、計算機資源である、計算ノード群２０２の各計算ノード２００に関する情報を管理する。
【００８１】
通信状態管理情報１２２は、計算ノード群２０２における計算ノード２００間を接続する通信経路（リンク，経路）についての通信状況を示す情報である。
【００８２】
資源管理部１２０は、各計算ノード２００の通信リンク監視処理部２１１から送信される各リンクのデータ転送量（実測値，経路状態情報）を取得し、通信状態管理情報１２２において、リンク毎に保存する。
【００８３】
従って、通信状態管理情報１２２には、計算ノード群２０２に含まれる各計算ノード２００について、各計算ノード２００に接続されるリンクを特定する情報に対してデータ転送量が対応付けて登録される。また、通信状態管理情報１２２には、過去に取得された、所定期間分の各リンクのデータ転送量が記録されている。
【００８４】
なお、通信状態管理情報１２２は、各自計算ノード２００に接続されたリンクの構成情報を、各計算ノード２００の通信リンク監視処理部２１１等から取得してもよい。また、各自計算ノード２００に接続されたリンクの構成情報を、システム管理者等が、予め、設定してもよい。
【００８５】
資源管理部１２０は、通信状態管理情報１２２に記録されている、過去のデータ転送量に基づき、各リンク毎に所定期間あたりのデータ転送量の平均値（移動平均値）を算出する。資源管理部１２０は、これらの算出した平均値を、次の単位時間における各リンク毎にデータ転送量の推定値（Ｌｅ）として用いる。
【００８６】
すなわち、資源管理部１２０は、通信状態管理情報１２２に記録されているデータ転送量に基づき、非スワップ通信におけるデータ転送量をリンク毎に推定する。
【００８７】
ただし、このようなデータ転送量の推定は、所定期間あたりのデータ転送量の平均値（移動平均値）を算出して用いる代わりに、他の手法を用いて適宜変形して実施することができる。
【００８８】
また、資源管理部１２０は、スワップ先計算ノード２００への各リンクの使用可能なバンド幅の推定値を算出する。
【００８９】
すなわち、資源管理部１２０は、複数の計算ノード２００が行なうスワップ通信において、計算ノード２００の組み合わせ毎に、各スワップ先計算ノード２００に対して同時に通信する際に共通に使用されるリンクで、スワップ通信のために使用可能なバンド幅の推定値（Ｌｂ）を、非スワップ通信におけるデータ転送量の推定値に基づき求める。
【００９０】
例えば、スワップ通信のために使用可能なバンド幅の推定値（Ｌｂ）を、当該リンクの仕様上のバンド幅から、次の単位時間における当該リンクのデータ転送量の推定値（Ｌｅ）を減算することにより算出してもよい。
【００９１】
例えば、資源管理部１２０は、バンド幅が１００Ｍｂｐｓのリンクにおいて、データ転送量の推定値（Ｌｅ）が２０Ｍｂｐｓである場合には、このリンクの使用可能なバンド幅の推定値（Ｌｂ）は、８０Ｍｂｐｓ（=１００−２０）となる。
【００９２】
さらに、資源管理部１２０は、上述の如く算出したリンクにおける使用可能なバンド幅の推定値（Ｌｂ）に基づき、各リンクにおけるバンド幅の上限値を設定する。すなわち、資源管理部１２０は、スワップ通信を行なう場合の、各リンクで送信可能なデータの転送量の上限値を設定する。
【００９３】
具体的には、資源管理部１２０は、複数の計算ノード２００から同時に１つの宛先（スワップ先計算ノード２００）に転送する際のボトルネックとなるリンクのバンド幅を上限値として用いる。すなわち、複数のスワップ通信により共通に使用される１つ以上のリンクの各使用可能なバンド幅の推定値（Ｌｂ）のうち最小値を、リンクにおける使用可能なバンド幅の推定値（Ｌｂ）とする。
【００９４】
ノード状態管理情報１２１は、計算ノード群２０２における各計算ノード２００についての使用状況を示す情報である。
【００９５】
計算ノード２００についての使用状況を示す情報としては、例えば、空きノード状態，ＣＰＵ使用率，空きメモリ量等であってもよい。
【００９６】
なお、空きノード状態は、その計算ノード２００のＲＡＭ２２に、他の計算ノード２００のスワップデータの一部を格納できるだけの空きがあるか否かを示す。例えば、ＲＡＭ２２に所定値以上の空き領域がある場合には、空きノードである旨を示す値が設定される。
【００９７】
空きメモリ量は、その計算ノード２００に備えられたＲＡＭ２２において使用されていない領域の容量である。
【００９８】
これらの計算ノード２００についての使用状況を示す情報は、例えば、各計算ノード２００のメモリ資源監視処理部２１３から送信される。
【００９９】
ノード状態管理情報１２１において、空きノード状態を参照することで、スワップ先計算ノード２００として利用可能な空きノード２００を知ることができる。また、空きメモリ量を参照することで、各空きノード２００のメモリ残量を把握することができる。
【０１００】
上述したノード状況管理情報１２１および通信状態管理情報１２２は、ジョブスケジューラ１１０によって用いられる。
【０１０１】
ジョブスケジューラ１１０は、図示しないホスト装置等から実行依頼（サブミット）されたジョブに対する実行予約を行なう。ジョブスケジューラ１１０は、例えば、ジョブの割り当て先の計算ノード２００（計算ノード資源）を示す情報と、その計算ノード２００を使用可能な時間帯を示す情報との対を実行予約情報として作成し、管理する。
【０１０２】
そして、ジョブスケジューラ１１０は、この実行予約情報を参照して、例えば、実行予約情報に予定された時刻に、割り当て先の計算ノード２００に対してジョブの実行を依頼する。
【０１０３】
図５に示すように、ジョブスケジューラ１１０は、スワップジョブ決定部１１１およびメモリ退避ノード決定部１１２としての機能を備える。
【０１０４】
本並列計算機システム１においては、ホスト装置等から緊急ジョブが投入された場合において、当該緊急ジョブを割り当てられる計算ノード２００がない場合に、ジョブスワップを行なう。
【０１０５】
スワップジョブ決定部１１１は、ジョブスワップを行なうに際して、計算ノード群２０２において実行中の１つ以上のジョブの中から、どのジョブをスワップ対象とするかを決定する。すなわち、スワップジョブ決定部１１１は、計算ノード群２０２を構成する複数の計算ノード２００の中から、スワップ元計算ノード２００を選択する。
【０１０６】
なお、スワップ対象のジョブの決定方法、すなわち、スワップ元計算ノード２００の選択方法は、既知の種々の手法を用いて実現することができ、その説明は省略する。
【０１０７】
メモリ退避ノード決定部１１２は、ジョブスワップを行なう際に、どの計算ノード２００にどれだけスワップデータ（メモリデータ）を退避させるかを決定する。さらに、メモリ退避ノード決定部１１２は、スワップアウトするジョブの計算ノード２００にスワップ依頼を行なう。
【０１０８】
メモリ退避ノード決定部１１２は、計算ノード群２０２の複数の計算ノード２００の中から、スワップ通信において、次の単位時間におけるスワップデータの送信先（退避先）とするスワップ先計算ノード２００の候補を限定（選択）する。
【０１０９】
以下、スワップ先計算ノード２００の候補の計算ノード２００を、スワップ先計算ノード候補２００という場合がある。
【０１１０】
メモリ退避ノード決定部１１２は、予め規定された候補選択ポリシーに従って、計算ノード群２０２における空きノード２００の中から、１つ以上のスワップ先計算ノード候補２００を選択する。
【０１１１】
候補選択ポリシーは、例えば、スワップ元計算ノード２００からの通信レイテンシが所定時間以内であることである。ただし、候補選択ポリシーはこれに限定されるものではなく、適宜変更して実施することができる。
【０１１２】
メモリ退避ノード決定部１１２は、スワップ先計算ノード候補２００として、計算ノード群２０２の計算ノード２００の中から、候補選択ポリシーを満たす計算ノード２００を所定数選択する。選択されるスワップ先計算ノード候補２００の数（所定数）は１以上であり、特に複数であることが望ましい。
【０１１３】
そして、メモリ退避ノード決定部１１２は、全計算ノード２００からのデータ転送量の合計を最大化の目的関数とする線形計画法により、各計算ノード２００から、１つ以上のスワップ先計算ノード２００を決定するとともに、各スワップ先計算ノード２００（転送先）へスワップさせるスワップデータのサイズ（最適転送量）を決定する。
【０１１４】
すなわち、メモリ退避ノード決定部１１２は、全ての計算ノード２００をスワップ先計算ノード２００の対象として選択し、選択した計算ノード２００へのデータ転送性能を最大にする線形計画法の問題として解く。これにより、各計算ノード２００から、１つ以上のスワップ先計算ノード２００を決定するとともに、各スワップ先計算ノード２００（転送先）へスワップさせるスワップデータのサイズ（最適転送量）を決定する。
【０１１５】
このように、メモリ退避ノード決定部１１２は、「ある計算ノード２００上のジョブのスワップ先計算ノード２００を求めるにあたり、特定の空きノード２００を一つ選択し、この選択した計算ノード２００へのスワップデータの転送性能が最大になるようにする」制御を、「スワップ先計算ノード２００を全計算ノード２００を対象として、選択した計算ノード２００へのスワップデータの転送性能を最大になるようにする」制御として取り扱う。
【０１１６】
なお、本実施例の説明で使用する記号を以下のように定める。
【０１１７】
C = {1, 2, ..., m}：次の単位時間にスワップ通信を行なう計算ノード２００の通番の集合であり、外部からの入力値として与えられる。
【０１１８】
E = {1, 2, ...., n}：メモリ退避ノード決定部１１２により限定されたスワップ先計算ノード候補２００（空きノード２００）の通番の集合である。
【０１１９】
r(j)：j∈E に対し、j 番の空きノード２００の空きメモリ量。なお、この空きメモリ量は、ノード状態管理情報１２１を参照することで把握することができる。
【０１２０】
d(j)：j番の空きノード２００にスワップ通信を行なうことが許可された計算ノード２００の集合である。
【０１２１】
L：d(j) に属する計算ノード２００から j番の空きノード２００への経路に現れるリンクの集合である。
【０１２２】
B(l,j)：l∈L とし、資源管理部１２０により設定された、ボトルネックとなるリンクのバンド幅（単位時間あたり最大転送量）である。すなわち、j番の空きノード２００への経路上における送信可能なデータの転送量の上限値である。
【０１２３】
以下に、メモリ退避ノード決定部１１２が用いる線形計画法を例示する。
【０１２４】
［変数］
次の単位時間に行なうスワップ通信について、各計算ノード２００から、メモリ退避ノード決定部１１２が限定した各空きノード２００へのデータ転送量およびデータ転送に要する時間を、それぞれ変数とする。
【０１２５】
x(i,j)：次の単位時間に第i 番の計算ノード２００から第j 番の空きノード２００に転送するデータ転送量を表す変数である。
【０１２６】
t(i,j)：第i 番の計算ノード２００から第j 番の空きノード２００へのデータ転送に必要な時間を表す定数である。ジョブスケジューラ１１０が任意に設定してもよい。
【０１２７】
［制約式］
以下の制約式（１）は、特定のスワップ先計算ノード２００に転送されるデータ転送量の合計が、この特定のスワップ先の計算ノード２００の空きメモリ量以下となることを要件とする１次不等式である。なお、スワップ対象のジョブが複数の計算ノード２００で処理されている場合には、i（スワップ元計算ノード２００の数）は２以上となる。
【０１２８】
また、制約式（２）は、特定のスワップ先計算ノード２００に転送されるデータ転送量の合計が、この特定のスワップ先の計算ノード２００に至る経路のうちボトルネックとなるリンクのバンド幅以下となることを要件とする１次不等式である
【０１２９】
空きメモリ量に関する制約式（１）（j=1, 2, ..., n）
【数１】
2019020945.tif 000003
【０１３０】
転送バンド幅に関する制約式（２）（j=1, 2, ..., n）
【数２】
2019020945.tif 000004
【０１３１】
［最大化の目的関数（各計算ノードから各空きノードへの転送量の合計値）］
【数３】
2019020945.tif 000005
上述した目的関数（３）の最大値を与える際の各変数x(i,j) を求めることで、演算結果“i,j：z”が得られる。
【０１３２】
なお、zは、第i 番の計算ノード２００から第j 番の空きノード２００へのデータ転送に転送（スワップ）させるデータ転送量（スワップメモリ量，退避メモリ量）を示す。
【０１３３】
メモリ退避ノード決定部１１２は、上述の如く線形計画法により求められたi，jに基づき、スワップ元計算ノード２００およびスワップ先計算ノード２００を特定する。そして、メモリ退避ノード決定部１１２は、線形計画法により求められたzをデータ転送量として、スワップ元計算ノード２００のＲＡＭ２２におけるスワップデータのうちデータサイズzに相当するデータ（スワップメモリ量，退避メモリ量）をスワップ先計算ノード２００へ転送（スワップ通信）させる指示を作成する。
【０１３４】
例えば、メモリ退避ノード決定部１１２は、スワップ元計算ノード２００に対して、退避メモリ量のスワップデータを、スワップ先計算ノード２００に送信させる指示を行なう。また、メモリ退避ノード決定部１１２は、スワップ先計算ノード２００に対して、スワップ元計算ノード２００から送信されたスワップデータを、ＲＡＭ２２に格納させる指示を行なう。
【０１３５】
スワップ元計算ノード２００およびスワップ先計算ノード２００が、これらの指示に従って処理を行なうことで、スワップ元計算ノード２００からスワップ先計算ノード２００へのジョブスワップが完了する。
【０１３６】
なお、空きメモリ量に関する制約式に関し、適切な空きノード２００が存在しない場合が考えられる。このような場合には、例えば、スワップ元計算ノード２００のＨＤＤ２３へのスワップアウトを実行しても良い。
【０１３７】
メモリ退避ノード決定部１１２による線形計画法を用いた、スワップ先計算ノード２００の決定方法を例示する。
【０１３８】
図６は実施形態の一例としての並列計算機システム１におけるジョブスワップ元およびジョブスワップ先の決定方法を説明するための図である。この図６に示す例においては、複数のスワップ元計算ノード２００（Ｎ１〜Ｎ７）を備えるスワップ元計算ノード群と、複数のスワップ先計算ノード２００（Ｍ１〜Ｍ８）を備えるスワップ元計算ノード群とを示す。
【０１３９】
以下、スワップ元計算ノードＮ１〜Ｎ７を、計算ノードＮｉと表す場合がある（ｉ=１，２，・・・７）。また、スワップ先計算ノードＭ１〜Ｍ８を、計算ノードＭｊと表す場合がある（ｊ=１，２，・・・８）。
【０１４０】
計算ノードＭｊのそれぞれが、スワップ元計算ノードＮ１〜Ｎ７と通信可能に接続されている。
【０１４１】
x(i,j)は、スワップ元計算ノードＮｉからスワップ先計算ノードＭｊへの１秒あたりのデータ転送量である。
【０１４２】
t(i,j)は、計算ノードＮｉから計算ノードＭｊへのデータ転送までにかかる時間であり、予めジョブスケジューラ１１０等により決められた値を用いることが望ましい。
【０１４３】
r(j)は、計算ノードＭｊにおける空きメモリ量（単位；バイト）とする。
【０１４４】
このような場合に、線形計画法を適用することで以下のように表される。なお、線形計画法の解法には、単体法等の既知の標準的な手法を用いることが望ましい。
【０１４５】
x（i, j)≧0  i,jは任意の値。
【０１４６】
空きメモリ２２に関するデータ転送量についての制約式は以下のとおりである。
【数４】
2019020945.tif 000006
【０１４７】
また、転送バンド幅に関する制約式は、以下のとおりである。
【数５】
2019020945.tif 000007
ただし、B(j)は、計算ノードM(j)へ通信する場合における、使用可能なバンド幅（単位：例えば、バイト／秒）である。
【０１４８】
最大化の目的関数は以下のとおりである。
【数６】
2019020945.tif 000008
【０１４９】
メモリ退避ノード決定部１１２は、この目的関数を最大化する｛x(i,j)｝（ｉ＝１，２，  ・・・７，ｊ=１，２，・・・８）を求める。
（２）動作
先ず、図７〜図９を参照しながら、実施形態の一例としての並列計算機システム１におけるジョブスワップ先の決定方法を説明する。以下に例示するジョブスワップ先の決定方法は、処理（Ａ）〜（Ｈ）を有する。
【０１５０】
図７〜図９に示す例においては、６つの計算ノード２００が図示されている（例えば、図７の矢印Ｐ１参照）。また、図７〜図９に示す例においては、これらの計算ノード２００に符号＃１〜＃６を付して表すことで、任意の計算ノード２００を特定する。以下、符号＃１〜＃６に含まれる数字をノード識別番号という場合がある。
【０１５１】
また、図７〜図９に示す例においては、計算ノード２００間を接続するリンクを、文字Ｌに、当該リンクの両端に接続されている各計算ノード２００のノード識別番号を付加することで表す。例えば、計算ノード＃１と計算ノード＃２を接続するリンクを符号Ｌ１２で表す。
【０１５２】
処理（Ａ）：各計算ノード２００において、通信リンク監視処理部２１１は、リンク毎に単位時間毎のデータ転送量を収集する（図７の符号（Ａ）参照）。通信リンク監視処理部２１１は収集した各リンクのデータ通信状量を、ジョブ管理ノード１００の資源管理部１２０に送信する。
【０１５３】
処理（Ｂ）：ジョブ管理ノード１００において、資源管理部１２０は、各計算ノード２００から送信されたリンク毎のデータ転送量の情報を通信状態管理情報１２２に記録する（図７の符号（Ｂ）参照）。
【０１５４】
資源管理部１２０は、各リンクにおいて監視されたデータ転送量の推移記録に基づき、非スワップ通信により発生する各リンクの次の単位時間におけるデータ転送量の移動平均値を算出し、推定値（Ｌｅ）とする。
【０１５５】
図７に示す例においては、資源管理部１２０は、計算ノード２００毎に、各計算ノード２００に接続される各リンクについて、それぞれ、所定期間あたりのデータ転送量の移動平均値を推定値（Ｌｅ１２，Ｌｅ１３，・・・）として求める。
【０１５６】
また、資源管理部１２０は、全計算ノード２００について各リンクのデータの推定値を管理し、推定値に変更が生じた場合にはジョブスケジューラ１１０に通知する。
【０１５７】
処理（Ｃ）：資源管理部１２０は、ジョブのスワップ通信のために、ノード状態管理情報１２１を用いて、利用可能な空きノード２００および各空きノード２００のメモリ残量を管理する（図７の符号（Ｃ）参照）。
【０１５８】
処理（Ｄ）：メモリ退避ノード決定部１１２は、スワップ先計算ノード候補２００を限定する（図８の符号（Ｄ）参照）。メモリ退避ノード決定部１１２は、例えば、スワップ元計算ノード２００からの通信レイテンシが所定時間以内である計算ノード２００を計算ノード群２０２の中から抽出し、これらの中から所定数の計算ノード２００をスワップ先計算ノード候補２００とする。
【０１５９】
図８に示す例においては、計算ノード＃１，＃２がスワップ元計算ノード２００であり、計算ノード＃３，＃５，＃６がスワップ先候補計算ノード２００である（矢印Ｐ２参照）。
処理（Ｅ）：資源管理部１２０は、処理（Ｂ）において求めた、各リンクの次の単位時間におけるデータ転送量の推定値（Ｌｅ）に基づき、各リンクにおいて使用可能なバンド幅の推定値を求める（図８の符号（Ｅ）参照）。
【０１６０】
資源管理部１２０は、複数の計算ノード２００間において行なうスワップ通信に関し、計算ノード２００の組み合わせ毎に、各リンクについて、スワップ通信のために使用可能なバンド幅の推定値（Ｌｂ）を求める。
【０１６１】
「スワップ通信のために使用可能なバンド幅の推定値（Ｌｂ）」=「当該リンクの仕様上のバンド幅」−「次の単位時間における当該リンクのデータ転送量の推定値（Ｌｅ）」
処理（Ｆ）：資源管理部１２０は、処理（Ｅ）において求めた使用可能なバンド幅の推定値（Ｌｂ）に基づき、同時にスワップ通信を行なう場合の、各通信経路で可能な転送量の上限値を設定する（図８の符号（Ｆ）参照）。
【０１６２】
具体的には、「複数の計算ノード２００から同時に１つの宛先に転送する際のボトルネックのバンド幅」＝「共通に使用されるリンクにおける使用可能なバンド幅の推定値の最小値」とする。
【０１６３】
なお、複数のスワップ通信のデータ転送が同一の経路を使用する場合には、経路上の使用可能なバンド幅の最小値が用いられる。
【０１６４】
処理（Ｇ）：メモリ退避ノード決定部１１２は、全計算ノード２００からのデータ転送量の合計を最大化の目的関数とする線形計画法により、各計算ノード２００から、各スワップ先計算ノード２００（転送先）への最適転送量を決定する（図９の符号（Ｇ）参照）。
【０１６５】
メモリ退避ノード決定部１１２は、空きメモリ量に関する制約式と、転送バンド幅に関する制約式とを用いて、各計算ノード２００から各空きノード２００への転送量の合計値を最大にする変数x(i,j) を求める。また、線形計画法においては、各スワップ元計算ノード２００からスワップ先計算ノード２００への最適転送量も求められる。
【０１６６】
処理（Ｈ）：メモリ退避ノード決定部１１２は、処理（Ｇ）において選択されたスワップ元計算ノード２００に対して、算出された最適転送量のデータをスワップ元計算ノード２００へ転送（スワップ）させる依頼を行なう。これにより、スワップ転送が実行される（図９の符号（Ｈ）参照）。
【０１６７】
次に、実施形態の一例としての並列計算機システム１における緊急ジョブが投入された際のジョブ管理ノード１００の処理を、図１０に示すフローチャート（ステップＳ１〜Ｓ５）に従って説明する。
【０１６８】
並列計算機システム１に緊急ジョブが入力されると、ステップＳ１において、ジョブスケジューラ１１０のスワップジョブ決定部１１１が、計算ノード群２０２の計算ノード２００において実行されているジョブの中から、スワップ対象のジョブを決定する。
【０１６９】
ステップＳ２において、ジョブスケジューラ１１０は、計算ノード群２０２の計算ノード２００において実行されているジョブの中に、スワップ対象とすることができるジョブがあるかを確認する。
【０１７０】
確認の結果、スワップ対象にするジョブがない場合には（ステップＳ２のＮＯルート参照）、ステップＳ５に移行する。
【０１７１】
ステップＳ５においては、緊急ジョブの実行を阻止する。または、スワップ元計算ノード２００のＨＤＤ２３へのスワップアウトを実行しても良く、また、ジョブを強制終了させてもよい。その後、処理を終了する。
【０１７２】
また、ステップＳ２の確認の結果、スワップ対象にするジョブがある場合には（ステップＳ２のＹＥＳルート参照）、ステップＳ３に移行する。
【０１７３】
ステップＳ３においては、メモリ退避ノード決定部１１２が、線形計画法を用いて、スワップ先計算ノード２００および退避メモリ量を決定する。
【０１７４】
ステップＳ４において、メモリ退避ノード決定部１１２は、ステップＳ３において決定した、スワップ先計算ノード２００および退避メモリ量を、ジョブの実行ノード２００（スワップ元計算ノード２００）に送信する。その後、処理を終了する。
【０１７５】
（３）効果
このように、実施形態の一例としての並列計算機システム１においては、緊急ジョブが投入されたことにより実行を停止されることになったジョブ（停止対処ジョブ）のスワップ先とするスワップ先計算ノード２００を容易に決定することができる。
【０１７６】
すなわち、ジョブ管理ノード１００において、メモリ退避ノード決定部１１２が、各計算ノード２００からのデータ転送量の合計を最大化の目的関数とする線形計画法により、各計算ノード２００から、各スワップ先計算ノード２００（転送先）への最適転送量を決定する。
【０１７７】
線形計画法は変数の増加に伴う計算時間の増加が緩やかな計算手法であり、例えば単体法で大規模システムに対しても高速に実行できる。また、線形計画法を用いることで、スワップ先とスワップサイズが容易に求められ、一つのスワップ先計算ノード２００のジョブを複数のスワップ先計算ノード２００に容易に退避させることができ、利便性が高い。
【０１７８】
本並列計算機システム１においては、「あるノード上のジョブのスワップ先として、特定の空きノードを一つ選択し、選択したノードへのスワップデータの転送性能が最大になるようにする」制御を、数理最適化の問題として見る。これにより、スワップ対象となるジョブを実行中ノードとデータ退避先ノードの対応関係を定める「組み合わせ最適化」、ないし対応関係の有無を表す0 と 1 しか値をとらない変数の値を定める「整数計画法」と呼ばれる種類の問題として扱うことを可能にする。これにより、従来においては困難であった最適なスワップ先ノード決定を容易に実現することができる。
【０１７９】
本並列計算機システム１においては、単位時間内のネットワーク２０１のリンク毎のスワップ以外の通信でのデータ転送量と、本並列計算機システム１内のジョブスワップアウトデータのスワップ先計算ノード２００の空きメモリ量とを入力変数とする。また、各スワップ先計算ノード２００への単位時間内のデータ転送量を出力変数とする。そして、メモリ退避ノード決定部１１２が、単位時間内のスワップアウトでのデータ転送量合計を最大化目的関数とする線形計画法によって定めた通信量を各計算ノード２００の各転送先（スワップ先）への転送量とする。これにより、単位時間あたりのデータ転送量、すなわち転送バンド幅が最大の転送を実現することができる。従って、緊急ジョブが投入された場合において、効率的にジョブを処理することができる。
【０１８０】
本並列計算機システム１においては、「ある計算ノード２００上のジョブのスワップ先計算ノード２００を求めるにあたり、特定の空きノード２００を一つ選択し、この選択した計算ノード２００へのスワップデータの転送性能が最大になるようにする」制御を、「スワップ先計算ノード２００を全計算ノード２００を対象として、選択した計算ノード２００へのスワップデータの転送性能を最大になるようにする」制御として取り扱う。これにより、計算困難性のある「組み合わせ最適化」・「整数計画法」と呼ばれる種類の問題として扱うのではなく、「線形計画法」の問題として扱うことで、計算困難性を回避して、制御処理の高速化を図ることができる。
【０１８１】
（４）その他
開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成および各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１８２】
例えば、上述した実施形態において、メモリ退避ノード決定部１１２が、空きメモリ量に関する制約式（１）および転送バンド幅に関する制約式（２）を用いているが、これに限定されるものではなく、これら以外の制約式を用いてもよい。
【０１８３】
また、ジョブ管理ノード１００における一部の機能を、他の情報処理装置に実行させてもよい。例えば、ジョブ管理ノード１００にけるメモリ退避ノード決定部１１２としての機能を、一部の計算ノード２００に実行させてもよく、これによりジョブ管理ノード１００におけるジョブスケジューラ１１０の処理負荷を軽減させることができる。
【０１８４】
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
【０１８５】
（５）付記
以上の実施形態に関し、さらに以下の付記を開示する。
【０１８６】
（付記１）
複数の計算ノードにジョブを割り当てて演算処理を行なわせる並列処理制御装置であって、
前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得する経路状況情報取得部と、
前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得する、空きメモリ情報取得部と、
新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定する退避ジョブ決定部と、
前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう、退避決定部と
を備える、並列処理制御装置。
【０１８７】
（付記２）
前記退避決定部が、
全ての計算ノードを前記退避対象ジョブの転送先の計算ノードの対象として選択し、選択した計算ノードへのデータ転送性能を最大にする線形計画法の問題として解くことで、前記退避対象ジョブの転送先の計算ノードの決定と、前記メモリデータサイズの決定とを行なう
ことを特徴とする、付記１記載の並列処理制御装置。
【０１８８】
（付記３）
前記退避決定部が、前記複数の計算ノードにおける空きメモリ量に関する第１の評価式と、前記経路のバンド幅に関する第２の評価式とに基づき、各計算ノードから各空きメモリ計算ノードへの転送量の合計を規定する目的関数を最大化する、前記退避対象ジョブの転送元の計算ノードと前記退避対象ジョブの転送先の計算ノードとの組み合わせと、前記送信するメモリデータサイズとを決定する
ことを特徴とする、付記１または２記載の並列処理制御装置。
【０１８９】
（付記４）
前記複数の計算ノードの中から、候補選択ポリシーに従って、前記退避対象ジョブの転送先の計算ノードの候補を選択する候補選択部を備え、
前記退避決定部が、前記退避対象ジョブの転送先の計算ノードの候補の中から、前記退避対象ジョブの転送先の計算ノードを決定する
ことを特徴とする、付記１〜３のいずれか１項に記載の並列処理制御装置。
【０１９０】
（付記５）
複数の計算ノードにジョブを割り当てて演算処理を行なわせる並列処理制御装置のプロセッサに、
前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得し、
前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得し、
新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定し、
前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう
処理を実行させる、ジョブスワッププログラム。
【０１９１】
（付記６）
全ての計算ノードを前記退避対象ジョブの転送先の計算ノードの対象として選択し、選択した計算ノードへのデータ転送性能を最大にする線形計画法の問題として解くことで、
前記退避対象ジョブの転送先の計算ノードの決定と、前記メモリデータサイズの決定とを行なう
処理を前記プロセッサに実行させる、付記５記載のジョブスワッププログラム。
【０１９２】
（付記７）
前記複数の計算ノードにおける空きメモリ量に関する第１の評価式と、前記経路のバンド幅に関する第２の評価式とに基づき、各計算ノードから各空きメモリ計算ノードへの転送量の合計を規定する目的関数を最大化する、前記退避対象ジョブの転送元の計算ノードと前記退避対象ジョブの転送先の計算ノードとの組み合わせと、前記送信するメモリデータサイズとを決定する
処理を前記プロセッサに実行させる、付記５または６記載のジョブスワッププログラム。
【０１９３】
（付記８）
前記複数の計算ノードの中から、候補選択ポリシーに従って、前記退避対象ジョブの転送先の計算ノードの候補を選択し、
前記退避対象ジョブの転送先の計算ノードの候補の中から、前記退避対象ジョブの転送先の計算ノードを決定する
処理を、前記プロセッサに実行させる、付記５〜７のいずれか１項に記載のジョブスワッププログラム
【０１９４】
（付記９）
複数の計算ノードと、
前記複数の計算ノードに対して実行させるジョブを管理するジョブスケジューラと、
前記複数の計算ノード間を接続する経路の通信状況を示す経路状況情報を取得する経路状況情報取得部と、
前記複数の計算ノードにおけるメモリの使用状況を示す空きメモリ情報を取得する、空きメモリ情報取得部と、
新たなジョブが入力された場合に、前記複数の計算ノードの少なくとも一部で処理されている複数のジョブの中から、退避対象ジョブを決定する退避ジョブ決定部と、
前記空きメモリ情報と前記経路状況情報とに基づき、各計算ノードから前記メモリに空きがある空きメモリ計算ノードへのデータ転送の評価式を生成し、前記評価式の演算結果に基づき、前記退避対象ジョブの転送先の計算ノードの決定と、前記退避対象ジョブの転送元の計算ノードから前記転送先の計算ノードに送信するメモリデータサイズの決定とを行なう、退避決定部と
を備える、計算機システム。
【符号の説明】
【０１９５】
１    並列計算機システム
１１，２１    プロセッサ
１２，２２    ＲＡＭ
１３，２３    ＨＤＤ
１４，２４    グラフィック処理装置
１４ａ，２４ａ    モニタ
１５，２５    入力インタフェース
１５ａ，２５ａ    キーボード
１５ｂ，２５ｂ    マウス
１６，２６    光学ドライブ装置
１６ａ，２６ａ    光ディスク
１７，２７    機器接続インタフェース
１７ａ，２７ａ    メモリ装置
１７ｂ，２７ｂ    メモリリーダライタ
１７ｃ，２７ｃ    メモリカード
１８，２８    ネットワークインタフェース
１８ａ，２８ａ    ネットワーク
１９，２９    バス
１１０    ジョブスケジューラ
１１１    スワップジョブ決定部
１１２    メモリ退避ノード決定部
１２０    資源管理部
１２１    ノード状態管理情報
１２２    通信状態管理情報
１００    ジョブ管理ノード
２００    計算ノード
２１１    通信リンク監視処理部
２１２    スワップ処理部
２１３    メモリ資源監視処理部
２０２    計算ノード群
【図１】
2019020945.tif 000009
【図２】
2019020945.tif 000010
【図３】
2019020945.tif 000011
【図４】
2019020945.tif 000012
【図５】
2019020945.tif 000013
【図６】
2019020945.tif 000014
【図７】
2019020945.tif 000015
【図８】
2019020945.tif 000016
【図９】
2019020945.tif 000017
【図１０】
2019020945.tif 000018