(57)【特許請求の範囲】
【請求項１】
複数のノードに接続された情報処理装置であって、
ユーザ端末から、ジョブの状態を示すジョブ状態情報の表示要求を受信した場合、前記ユーザ端末から投入されたジョブの投入ジョブ数、または投入ジョブのうち、実行中のジョブが使用しているノードのジョブ使用ノード数に基づいて、前記表示要求に応答する予測時間を示す予測値を算出する算出部と、
前記予測値に応じて、前記表示要求を複数のグループの何れかに分類する分類部と、
前記グループごとに、前記表示要求に応じたジョブ状態情報を収集し、前記ユーザ端末に出力する出力部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記算出部は、前記投入ジョブ数と、前記ジョブ使用ノード数との両方に基づいて、前記予測値を算出する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記算出部は、前記投入ジョブ数よりも、前記ジョブ使用ノード数に高い重み付けをして、前記予測値を算出する、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記複数のグループのそれぞれに対応するキューをさらに備え、
前記分類部は、前記キューのうち、分類した前記表示要求に対応するグループのキューに、前記表示要求を登録し、
前記出力部は、前記グループごとに、対応するキューから前記表示要求を取得する、
ことを特徴とする請求項１乃至３のうち何れか１項に記載の情報処理装置。
【請求項５】
複数のノードに接続された情報処理装置により実行されるジョブ状態表示方法であって、
ユーザ端末から、ジョブの状態を示すジョブ状態情報の表示要求を受信した場合、前記ユーザ端末から投入されたジョブの投入ジョブ数、または投入ジョブのうち、実行中のジョブが使用しているノードのジョブ使用ノード数に基づいて、前記表示要求に応答する予測時間を示す予測値を算出し、
前記予測値に応じて、前記表示要求を複数のグループの何れかに分類し、
前記グループごとに、前記表示要求に応じたジョブ状態情報を収集し、前記ユーザ端末に出力する、
ことを特徴とするジョブ状態表示方法。
【請求項６】
複数のノードに接続された情報処理装置に、
ユーザ端末から、ジョブの状態を示すジョブ状態情報の表示要求を受信した場合、前記ユーザ端末から投入されたジョブの投入ジョブ数、または投入ジョブのうち、実行中のジョブが使用しているノードのジョブ使用ノード数に基づいて、前記表示要求に応答する予測時間を示す予測値を算出し、
前記予測値に応じて、前記表示要求を複数のグループの何れかに分類し、
前記グループごとに、前記表示要求に応じたジョブ状態情報を収集し、前記ユーザ端末に出力する、
処理を実行させるためのジョブ状態表示プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、ジョブ状態表示方法およびジョブ状態表示プログラムに関する。
【背景技術】
【０００２】
並列計算機システムにおいて、複数の計算ノードが並列して計算を行なう。複数の計算ノードはジョブ管理ノードに接続され、ジョブ管理ノードは、複数のユーザ端末に接続される。ジョブ管理ノードは、ジョブを管理するジョブスケジューラを有し、該ジョブスケジューラは、ユーザ端末からジョブが投入されると、計算ノードにジョブを送信する制御を行う。
【０００３】
並列計算機システムでは、多数のジョブが投入されることがあり、新たなジョブがジョブ管理ノードに投入された際に、新たなジョブを実行する計算ノードの数が不足することがある。この場合、ジョブスケジューラは、投入されたジョブを実行待ちジョブとして、ジョブ管理ノード内で管理する。
【０００４】
関連する技術として、端末利用者からの表示要求に対してシステム全体のジョブ実行情報から利用者に関連する情報のみを抽出収集し、且つその情報を端末に表示可能な形式に編集し、端末に常時表示する技術が提案されている（例えば、特許文献１を参照）。
【０００５】
また、複数の計算機をネットワーク接続した負荷分散バッチシステムにおいて、計算機間の通信回数を減らし、ジョブ実行の進行状況を把握する技術が提案されている（例えば、特許文献２を参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭６３−２６８０４５号公報
【特許文献２】特開平１０−４９５０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ユーザ端末を操作するユーザは、ユーザ端末から投入されたジョブの状態を確認するための操作をユーザ端末に対して行うことがある。ユーザ端末は、該操作を受け付けると、ジョブの状態を取得するためのリクエストを、ジョブ管理ノードに送信する。
【０００８】
ジョブ管理ノードは、上記リクエストを受信すると、ジョブの状態に関する情報を収集する。この際、ジョブの数や、ジョブが計算ノードで実行中であるか否か等によって、ジョブの状態に関する情報を収集する時間（以下、収集時間）が長くなる場合があり、収集時間が短い場合もある。
【０００９】
ジョブ管理ノードが、複数のユーザ端末から上記リクエストを受信した順番で、ジョブの状態に関する情報を収集する処理を行なうと、収集時間が長いリクエストが先に処理されることにより、収集時間が短いリクエストが待たされることがある。この場合、短時間で、ユーザ端末にジョブの状態に関する情報を表示できる場合であっても、待ち時間が生じることにより、ジョブの状態の関する情報を表示するまでの時間が長くなる。
【００１０】
１つの側面として、本発明は、ジョブの状態に関する情報が表示されるまでの時間が長くなることを抑制することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、複数のノードに接続された情報処理装置は、ユーザ端末から、ジョブの状態を示すジョブ状態情報の表示要求を受信した場合、前記ユーザ端末から投入されたジョブの数、または投入ジョブのうち、実行中のジョブが使用しているノードのジョブ使用ノード数に基づいて、前記表示要求に応答する予測時間を示す予測値を算出する算出部と、前記予測値に応じて、前記表示要求を複数のグループの何れかに分類する分類部と、前記グループごとに、前記表示要求に応じたジョブ状態情報を収集し、前記ユーザ端末に出力する出力部と、を含む。
【発明の効果】
【００１２】
１つの側面によれば、ジョブの状態に関する情報が表示されるまでの時間が長くなることを抑制することができる。
【図面の簡単な説明】
【００１３】
【図１】並列計算機システムの一例を示す図である。
【図２】ジョブスケジューラの一例を示す図である。
【図３】予測制御情報の一例を示す図である。
【図４】ジョブ関連情報の一例を示す図である。
【図５】ジョブ状態一覧情報の一例を示す図である。
【図６】表示情報の一例を示す図である。
【図７】応答負荷予測部の処理の流れの一例を示すフローチャートである。
【図８】リクエストキュー部の処理の流れの一例を示すフローチャートである。
【図９】スレッド管理部の処理の流れの一例を示すフローチャートである。
【図１０】スレッドの処理の流れの一例を示すフローチャート（その１）である。
【図１１】スレッドの処理の流れの一例を示すフローチャート（その２）である。
【図１２】ジョブ管理ノードのハードウェア構成の一例を示す図である。
【発明を実施するための形態】
【００１４】
＜並列計算機システムの一例＞
以下、図面を参照して、実施形態について説明する。図１は、並列計算機システム１の一例を示す図である。並列計算機システム１において、ジョブ管理ノード２に、複数のユーザ端末３（３Ａ、３Ｂ、・・・３Ｅ）および複数の計算ノード４（４−１、４−２、・・・、４−Ｎ）が接続されている。
【００１５】
ジョブ管理ノード２は、各ユーザ端末３から受信したジョブを管理するノードである。以下、ジョブ管理ノード２が受信したジョブを、投入されたジョブまたは投入ジョブと称することがある。ジョブ管理ノード２は、情報処理装置の一例である。
【００１６】
ユーザ端末３は、所定の端末であり、ユーザにより操作される端末である。実施形態では、ユーザ端末３は、ジョブを投入するためのコマンド（ジョブ投入コマンド）およびジョブの状態の表示を要求するためのコマンド（ジョブ状態表示要求コマンド）を、ジョブ管理ノード２に送信する。ユーザ端末３の台数は、任意の台数であってよい。
【００１７】
各計算ノード４は、ジョブに応じた処理を行なう。各計算ノード４は、ジョブの状態を管理する機能を有している。図１の例では、Ｎ（Ｎは２以上の整数）台の計算ノード４が、ジョブ管理ノード２に接続される。Ｎは、任意の数であってよい。各計算ノード４は、並列して計算を行なう。計算ノード４の台数が多くなるに応じて、並列計算機システムの並列度が高くなる。
【００１８】
ジョブ管理ノード２は、ジョブスケジューラ１１と記憶部１２と通信部１３とを含む。ジョブスケジューラ１１は、ユーザ端末３から投入されたジョブを管理する。
【００１９】
ジョブスケジューラ１１は、ユーザ端末３からジョブ管理ノード２にジョブが投入されると、各計算ノード４のうち、ジョブの実行が可能な計算ノード４を検索する。該計算ノード４は、空き計算ノードとも称される。
【００２０】
多数のジョブがジョブ管理ノード２に投入されると、各計算ノード４の多くが使用される。また、１つのジョブが、多くの計算ノード４を使用する場合もある。従って、多くの計算ノード４が使用されている際に、新たなジョブが投入されると、該新たなジョブを実行する計算ノード４の数が不足することがある。
【００２１】
上記の場合、ジョブスケジューラ１１は、記憶部１２に新たなジョブを記憶し、該新たなジョブを待機ジョブとして管理する。記憶部１２は、各種の情報を記憶する。例えば、記憶部１２は、待機ジョブを記憶する。
【００２２】
通信部１３は、各ユーザ端末３および各計算ノード４と通信を行う。実施形態では、ジョブ管理ノード２と各ユーザ端末３とを接続するネットワークと、ジョブ管理ノード２と各計算ノード４とを接続するネットワークとは、異なるネットワークであるものとして説明する。
【００２３】
＜ジョブスケジューラの一例＞
図２を参照して、ジョブスケジューラ１１の一例について説明する。ジョブスケジューラ１１は、応答負荷予測部２１とリクエストキュー部２２と出力部２３とを含む。上述したように、ジョブ管理ノード２は、ジョブ状態表示要求コマンドを受信する。該ジョブ状態表示要求コマンドは、ジョブの状態の表示を要求するリクエスト（以下、ジョブ状態表示リクエストと称する）でもある。ジョブ状態表示リクエストは、表示要求の一例である。
【００２４】
応答負荷予測部２１は、算出部２１Ａと分類部２１Ｂとを含む。算出部２１Ａは、記憶部１２に記憶された予測制御情報を参照して、ジョブ状態表示リクエストに応答する予測時間を示す予測値を算出する。
【００２５】
上記予測時間は、ユーザ端末３が、ジョブ状態表示リクエスト（またはジョブ状態表示要求コマンド）をジョブ管理ノード２に送信してから、該ユーザ端末３が投入したジョブの状態を示す情報を表示するまでの予測時間を示す。
【００２６】
算出部２１Ａは、ジョブ状態表示リクエストに対応するユーザ端末３が投入したジョブ数と、投入されたジョブの実行に使用されるノード数とのうち何れか一方または両方に基づいて、予測値を算出する。
【００２７】
算出部２１Ａは、以下の式（１）により、予測値を算出する。
「予測値＝投入ジョブ数×第１の係数＋実行中ノード数×第２の係数」（式１）
投入ジョブ数は、上記ユーザ端末３がジョブ管理ノード２に投入したジョブの数であり、実行中ノード数は、投入ジョブのうち、実行中のジョブが使用しているノードの数である。実行中ノード数は、ジョブ使用ノード数の一例である。
【００２８】
図３（Ａ）を参照して、第１の係数および第２の係数について説明する。第１の係数は、１つのジョブについてのジョブ状態情報を生成する場合に与えられる重みである。第２の係数は、ジョブ管理ノード２が、１台の計算ノード４からジョブ状態情報を受信する場合に与えられる重みである。
【００２９】
図３（Ａ）の例に示されるように、第１の計数の値は「１」であり、第２の係数の値は「５」である。従って、算出部２１Ａは、投入ジョブ数よりも実行中ノード数に高い重み付けをして、予測値を算出する。
【００３０】
ジョブ管理ノード２が、計算ノード４からジョブ状態情報を受信する場合、ジョブ管理ノード２が、計算ノード４に、ネットワークを介して、ジョブ状態情報の参照依頼を送信する。
【００３１】
計算ノード４は、参照依頼を受信すると、該計算ノード４が処理を行なっているジョブの状態を示すジョブ状態情報を、ネットワークを介して、ジョブ管理ノード２に送信する。従って、ジョブ管理ノード２が、計算ノード４から実行中ノード数を取得するために、通信時間が発生する。
【００３２】
投入ジョブ数は、記憶部１２の投入ジョブ情報２４に記録されており、応答負荷予測部２１が、投入ジョブ数を得るために、通信は発生しない。従って、投入ジョブ数を得るための時間より、実行中ノード数を得るための時間の方が長くなる。
【００３３】
そこで、第２の係数の値は、第１の係数の値よりも高く設定される。第１の係数の値および第２の係数の値は、任意の値であってもよい。例えば、第１の係数の値を基準として、ジョブ管理ノード２と計算ノード４との間のネットワークの状況に応じて、第２の係数の値が設定されてもよい。
【００３４】
上述した（式１）において、第１の係数はゼロであってもよい。この場合、予測値は、以下の（式２）により算出される。
「予測値＝実行中ノード数×第２の係数」（式２）
例えば、投入ジョブ数が少なく、且つ１つのジョブが多くの計算ノード４を使用する場合、投入ジョブ数に比して、実行中ノード数が多くなる。この場合、投入ジョブ数よりも、実行中ノード数の方が、予測値に支配的な影響を与えるため、投入ジョブ数は、予測値の算出から除外されてもよい。
【００３５】
一方、投入ジョブ数が多い場合、投入ジョブ数が予測値に与える影響が大きくなる。従って、算出部２１Ａが、上述した（式１）のように、投入ジョブ数と実行中ノード数との両者に基づいて、予測値を算出することで、予測値の算出精度が向上する。なお、実行中ノード数がゼロまたはゼロに近い場合、予測値は、投入ジョブ数に基づいて、算出されてもよい。
【００３６】
分類部２１Ｂは、算出部２１Ａが算出した予測値に応じて、ジョブ状態表示リクエストを、レベルごとのグループに分類する。図２の例では、分類部２１Ｂは、ジョブ状態表示リクエストを、３つのグループに分類する。
【００３７】
図３（Ｂ）の例の場合、分類部２１Ｂは、算出部２１Ａが算出した予測値が「９９９以下」である場合、ジョブ状態表示リクエストを、レベル１のグループに分類する。算出部２１Ａが算出した予測値が「１０００以上、且つ９９９９未満」である場合、分類部２１Ｂは、ジョブ状態表示リクエストを、レベル２のグループに分類する。
【００３８】
算出部２１Ａが算出した予測値が「１００００以上」である場合、分類部２１Ｂは、ジョブ状態表示リクエストを、レベル３のグループに分類する。グループの数は任意の数であってよく、予測値範囲は任意の範囲に設定されてよい。
【００３９】
上述したように、ジョブ状態表示リクエストは、ユーザ端末３から送信されたリクエストである。従って、１つのジョブ状態表示リクエストは、ユーザ端末３と対応付けられている。
【００４０】
算出部２１Ａが算出した予測値が小さいほど、ユーザ端末３にジョブ状態が表示されるまでの時間が短くなると予測される。一方、算出部２１Ａが算出した予測値が大きいほど、ユーザ端末３にジョブ状態が表示されるまでの時間が長くなると予測される。
【００４１】
実施形態のジョブスケジューラ１１の出力部２３において、算出部２１Ａが算出した予測値に応じて、複数のグループが、それぞれ並列に、ジョブ状態表示リクエストについての処理を行なう。これにより、予測値が小さいジョブ状態表示リクエストと予測値が大きいジョブ状態表示リクエストとが並列に処理される。
【００４２】
予測値が小さいジョブ状態表示リクエストは、ユーザ端末３に、投入ジョブの状態を表示させる時間が短いリクエストである。予測値が小さいジョブ状態表示リクエストと予測値が大きいジョブ状態表示リクエストとが並列に処理されることで、予測値が小さいジョブ状態表示リクエストが待たされることがなくなる。これにより、ジョブの状態に関する情報が表示されるまでの時間が長くなることを抑制することができる。
【００４３】
図２を参照して、リクエストキュー部２２について説明する。リクエストキュー部２２は、複数のキューを含み、各キューは、上記のグループに対応する。図２の例では、リクエストキュー部２２は、レベル１のキューとレベル２のキューとレベル３のキューとを含む。分類部２１Ｂは、分類したジョブ状態表示リクエストを、対応するレベルのキューに登録する。以下、上記のキューをレベルキューと称することがある。
【００４４】
出力部２３は、レベルごとにスレッドを含む。また、出力部２３は、スレッド管理部２３Ａを含む。スレッドは、ジョブ状態表示リクエストに関する処理を行なう。出力部２３の各レベルには、複数のスレッドが含まれていてもよい。
【００４５】
１つのレベルに複数のスレッドが含まれる場合、複数のスレッドにより、ジョブ状態表示リクエストに関する処理を並列に行うことができる。例えば、出力部２３は、レベルごとに、レベルプールを有し、各レベルプールに１または複数のスレッドが含まれる。
【００４６】
リクエストキュー部２２は、各レベルの何れかのキューに、ジョブ状態表示リクエストが登録されると、何れのレベルのキューにジョブ状態表示リクエストが登録されているかを示す情報を、出力部２３のスレッド管理部２３Ａに通知する。
【００４７】
スレッド管理部２３Ａは、リクエストキュー部２２からの通知に基づいて、対応するレベルのスレッドに、キューにジョブ状態表示リクエストが登録されたことを通知する。該通知に基づいて、スレッドは、ジョブ状態表示リクエストに関する処理を行なう。
【００４８】
＜各種情報の一例＞
図４は、ジョブ関連情報の一例を示す。ジョブ関連情報は、記憶部１２に記憶される。図４（Ａ）は、投入ジョブ情報の一例を示す。投入ジョブ情報は、ユーザと投入ジョブ数と実行中ジョブ数と実行中ジョブＩＤ（Identification）との項目を含む。
【００４９】
ユーザは、ジョブを投入したユーザ端末３を識別する情報である。実施形態では、ジョブ状態表示リクエストに、ユーザ端末３を識別する情報が含まれているものとする。該情報に基づいて、ユーザ端末３を識別する情報が特定される。
【００５０】
投入ジョブ数は、ユーザ端末３ごとの、投入ジョブの数を示す。実行中ジョブ数は、投入ジョブのうち、計算ノード４が実行中のジョブの数を示す。実行中ジョブＩＤは、計算ノード４が実行中のジョブのＩＤを示す。
【００５１】
図４（Ｂ）は、実行中計算ノード情報の一例を示す。実行中計算ノード情報は、記憶部１２に記憶される。実行中計算ノード情報は、実行中ジョブＩＤと実行中計算ノード数との項目を含む。
【００５２】
実行中ジョブＩＤは、投入ジョブ情報の実行中ジョブＩＤに対応する。実行中計算ノード数は、実行中ジョブＩＤで特定されるジョブが使用している計算ノード４の数を示す。
【００５３】
図４（Ｃ）は、応答予測レベル情報の一例を示す。応答予測レベルは、上述した予測値に基づいて分類されたレベルである。応答予測レベル情報は、ユーザと予測値と応答予測レベルとの項目を含む。
【００５４】
ユーザは、投入ジョブ情報のユーザに対応する。予測値は、ユーザ端末３に対応して、算出部２１Ａが算出した予測値を示す。レベルは、ユーザ端末３に対応して、分類部２１Ｂが分類したレベルを示す。
【００５５】
例えば、図２において、ジョブスケジューラ１１に、ジョブ状態表示リクエストが入力されたとする。該ジョブ状態表示リクエストに対応するユーザ端末３は、ユーザ端末３Ａであり、該ユーザ端末３Ａに対応するユーザは、ユーザＡであるとする。
【００５６】
算出部２１Ａは、投入ジョブ情報および実行中計算ノード数情報を参照し、上述した（式１）を用いて、予測値を算出する。図４に示されるように、ユーザＡの投入ジョブ数は「１０」であり、実行中ジョブＩＤは、「１」、「７」および「８」である。
【００５７】
実行中ジョブＩＤ「１」に対応する実行中計算ノード数は「２００」であり、実行中ジョブＩＤ「７」に対応する実行中計算ノード数は「１１００」であり、実行中ジョブＩＤ「８」に対応する実行中計算ノード数は「５００」である。従って、ユーザの実行中ノード数は「１８００＝２００＋１１００＋５００」である。
【００５８】
第１の係数は「１」であり、第２の係数は「５」であることから、ユーザＡについての予測値は、（式１）から、「９０１０＝１０×１＋１８００×５」として、算出部２１Ａにより算出される。分類部１２Ｂは、記憶部１２に記憶されたレベル情報を参照して、上記予測値がレベル２に該当することを認識する。
【００５９】
従って、分類部２１Ｂは、上記のユーザ端末３Ａのジョブ状態表示リクエストを、リクエストキュー部２２のレベル２のキューに登録する。
【００６０】
また、ジョブスケジューラ１１に、ユーザ端末３Ｄ（対応するユーザはユーザＤ）のジョブ状態表示リクエストが入力されたとする。ユーザＤの投入ジョブ数は「５」であり、実行ジョブＩＤ「５」に対応する実行中計算ノード数は「１００」である。よって、算出部２１Ａは、ユーザＤについての予測値を「５０５＝５×１＋１００×５」として算出する。
【００６１】
分類部１２Ｂは、記憶部１２に記憶されたレベル情報を参照して、上記予測値がレベル１に該当することを認識する。従って、分類部２１Ｂは、上記のユーザ端末３Ｄのジョブ状態表示リクエストを、リクエストキュー部２２のレベル１のキューに登録する。
【００６２】
各スレッドは、ユーザ端末３からのジョブ状態表示リクエストに基づいて、該ユーザ端末３により投入されたジョブ状態情報を収集する。収集されたジョブ状態情報は、表示情報として、ユーザ端末３に送信される。
【００６３】
レベル２のスレッドは、ユーザ端末３Ａのジョブ状態表示リクエストに基づいて、各計算ノード４に、ジョブ状態情報の参照依頼を送信する制御を行う。該制御により、通信部１３は、各計算ノード４に参照依頼を送信する。各計算ノード４は、参照依頼に応じて、ジョブ状態情報を、ジョブ管理ノード２に送信する。これにより、レベル２のスレッドは、ユーザ端末３Ａのジョブ状態情報を、各計算ノード４から取得する。
【００６４】
図４（Ａ）に示されるように、ユーザＡに対応する投入ジョブ数は「１０」であり、実行中ジョブ数は「３」である。よって、７つのジョブが記憶部１２で待機中である。レベル２のスレッドは、記憶部１２に記憶されているジョブから、ジョブ状態情報を取得する。
【００６５】
以上により、レベル２のスレッドは、ユーザ端末３Ａのジョブ状態情報を収集する。レベル２のスレッドは、各計算ノード４から受信したジョブ状態情報と記憶部１２から取得したジョブ状態情報とを含む情報を生成する。該情報が、上述した表示情報である。
【００６６】
レベル２のスレッドは、ジョブ状態表示リクエストを送信したユーザ端末３Ａに、上記の表示情報を出力する。ユーザ端末３Ａは、ディスプレイ等の表示装置に、表示情報を表示する。
【００６７】
レベル１のスレッドは、ユーザ端末３Ｄのジョブ状態表示リクエストに基づいて、各計算ノード４から、ユーザ端末３Ｄのジョブ状態情報を取得する。
【００６８】
ユーザＤに対応する投入ジョブ数は「５」であり、実行中ジョブ数は「１」である。よって、４つのジョブが記憶部１２で待機中である。レベル１のスレッドは、記憶部１２に記憶されているジョブから、ジョブ状態情報を取得する。
【００６９】
以上により、レベル１のスレッドは、ユーザ端末３Ｄのジョブ状態情報を収集する。レベル１のスレッドは、上述した表示情報を生成し、ジョブ状態表示リクエストを送信したユーザ端末３Ｄに、上記の表示情報を出力する。ユーザ端末３Ｄは、ディスプレイ等の表示装置に、表示情報を表示する。
【００７０】
レベル２のスレッドは、レベル１のスレッドよりも、予測値が高いジョブ状態情報の処理を行なうため、レベル２のスレッドの処理は、レベル１のスレッドの処理よりも時間が長くなる。
【００７１】
しかし、レベル１のスレッドとレベル２のスレッドとは並列に動作するため、レベル１のスレッドの処理は、レベル２のスレッドの処理とは独立して実行される。従って、ユーザ端末３Ｄによるジョブ状態表示リクエストに基づく表示処理は、ユーザ端末３Ａによるジョブ状態表示リクエストに基づく表示処理を待たなくてもよい。
【００７２】
よって、ユーザ端末３Ｄのディスプレイに、ジョブ状態情報を含む表示情報が表示されるまでの時間が長くなることが抑制される。
【００７３】
図５は、ジョブ管理ノード２に投入された各ジョブについてのジョブ状態一覧情報の一例を示す。ジョブ状態一覧情報は、「JOB_ID」、「STATUS」、「USER」、「NODE」、「START_TIME」、「CPU_TIME」、「MEM_SIZE」および「I/O_SIZE」の項目を含む。ジョブ状態一覧情報は、記憶部１２に記憶される。
【００７４】
「JOB_ID」は、上述したＩＤを示す。「STATUS」は、ジョブが計算ノード４で実行中であれば「RUN」を示し、待機中であれば「QUE」を示す。「USER」は、上述したユーザ名を示す。
【００７５】
「NODE」は、上述した実行中計算ノード数を示す。「START_TIME」は、計算ノード４でジョブが実行された時刻を示す。該「START_TIME」は、さらに日付の情報を含んでもよい。「CPU_TIME」は、ジョブを実行している計算ノード４のＣＰＵ（Central Processing Unit）の使用時間を示す。
【００７６】
「MEM_SIZE」は、ジョブを実行している計算ノード４のメモリの使用量を示す。「I/O_SIZE」は、ジョブを実行している計算ノード４のInput/Output(I/O)のサイズを示す。ジョブ状態一覧情報のうち「JOB_ID」以外の各項目は、「JOB_ID」ごとの情報である。
【００７７】
図５の例に示されるように、「STATUS」が「QUE」であるジョブについては、「NODE」、「START_TIME」、「CPU_TIME」、「MEM_SIZE」および「I/O_SIZE」の項目に情報が記録されていない。
【００７８】
「STATUS」が「QUE」であるジョブは、待機中のジョブであり、該ジョブについてのジョブ状態情報は、計算ノード４から取得されていない。このため、「STATUS」が「QUE」であるジョブに対応する上記の各項目には、情報が記録されていない。
【００７９】
図６は、ユーザ端末３Ａのディスプレイに表示される表示情報の一例を示す。レベル２のスレッドは、図５のジョブ状態一覧情報のうち、「USER」が「A」である情報を、表示情報として、ユーザ端末３Ａに送信する制御を行う。該制御により、通信部１３は、表示情報をユーザ端末３Ａに送信する。ユーザ端末３Ａのディスプレイは、受信した表示情報を表示する。
【００８０】
表示情報は、「STATUS」、「USER」、「NODE」、「START_TIME」、「CPU_TIME」、「MEM_SIZE」および「I/O_SIZE」以外の情報を含んでいてもよいし、各情報のうち何れかの情報を含まなくてもよい。また、表示情報は、上記の各項目以外の情報であってもよい。
【００８１】
＜実施形態の処理の流れの一例＞
以下、応答負荷予測部２１の処理とリクエストキュー部２２の処理と出力部２３の処理とについて説明する。応答負荷予測部２１とリクエストキュー部２２と出力部２３とは、独立して動作する。従って、応答負荷予測部２１の処理とリクエストキュー部２２の処理と出力部２３の処理とは、並列に行なわれる。
【００８２】
図７は、応答負荷予測部２１の処理の一例を示すフローチャートである。応答負荷予測部２１は、ジョブ状態表示リクエストが入力されたかを判定する（ステップＳ１）。ステップＳ１でＮＯの場合、処理は、次のステップに進まない。
【００８３】
ステップＳ１でＹＥＳの場合、応答負荷予測部２１は、入力されたジョブ状態表示リクエストが示すユーザ端末３を特定する（ステップＳ２）。応答負荷予測部２１は、記憶部１２に記憶されている投入ジョブ情報および実行中計算ノード情報から、特定されたユーザ端末３（ユーザ）に対応するジョブ数、実行中ジョブＩＤおよび各ジョブの状態を取得する（ステップＳ３）。
【００８４】
算出部２１Ａは、実行中ジョブＩＤに対応する実行中計算ノード数に基づいて、ユーザ端末３に対応する実行中計算ノード数を算出する（ステップＳ４）。そして、算出部２１Ａは、上述した（式１）を用いて、特定されたユーザ端末３に対応する予測値を算出する（ステップＳ５）。
【００８５】
分類部２１Ｂは、記憶部１２に記憶されているレベル情報を参照して、ステップＳ４で算出された予測値に対応するレベルに、入力されたジョブ状態表示リクエストを分類する（ステップＳ６）。
【００８６】
応答負荷予測部２１は、分類されたジョブ状態表示リクエストを、リクエストキュー部２２のうち、分類されたレベルに対応するキューに、ジョブ状態表示リクエストを登録する（ステップＳ７）。ステップＳ７の後、処理は、ステップＳ１に移行する。
【００８７】
上述したように、複数のユーザ端末３が、ジョブ管理ノード２に、ジョブ状態表示リクエストを送信する。例えば、ジョブ管理ノード２が、ユーザ端末３Ａ、ユーザ端末３Ｂ、ユーザ端末３Ｃ、ユーザ端末３Ｄ、ユーザ端末３Ｅの順番に、ジョブ状態表示リクエストを受信したとする。
【００８８】
上述したステップＳ１〜Ｓ７の処理が行われることにより、図４に示されるように、ユーザ端末３Ａのジョブ状態表示リクエストは、予測値に応じて、レベル２に分類される。ユーザ端末３Ｂのジョブ状態表示リクエストは、予測値に応じて、レベル２に分類される。
【００８９】
ユーザ端末３Ｃのジョブ状態表示リクエストは、予測値に応じて、レベル３に分類される。ユーザ端末３Ｄのジョブ状態表示リクエストは、予測値に応じて、レベル１に分類される。ユーザ端末３Ｅのジョブ状態表示リクエストは、予測値に応じて、レベル３に分類される。
【００９０】
応答負荷予測部２１は、分類部２１Ｂがジョブ状態表示リクエストを分類すると、分類されたジョブ状態表示リクエストを、リクエストキュー部２２のうち、対応するレベルキューに、順次、登録する。
【００９１】
上述の場合、レベル１のレベルキューには、ユーザ端末３Ｄのジョブ状態表示リクエストが登録される。レベル２のレベルキューには、先頭に、ユーザ端末３Ａのジョブ状態表示リクエストが登録され、次に、ユーザ端末３Ｂのジョブ状態表示リクエストが登録される。レベル３のレベルキューには、先頭に、ユーザ端末３Ｃのジョブ状態表示リクエストが登録され、次に、ユーザ端末３Ｅのジョブ状態表示リクエストが登録される。
【００９２】
レベル２のスレッドが、ユーザ端末３Ａのジョブ状態表示リクエストの処理を行っている間、ユーザ端末３Ｂのジョブ状態表示リクエストの処理は待たされる。また、レベル３のスレッドが、ユーザ端末３Ｃのジョブ状態表示リクエストの処理を行っている間、ユーザ端末３Ｅのジョブ状態表示リクエストの処理は待たされる。
【００９３】
この点、ジョブ状態表示リクエストのレベルに対応するスレッドが実行中であったとしても、応答負荷予測部２１は、ジョブ状態表示リクエストを入力した順に、リクエストキュー部２２のレベルキューに登録すればよい。このため、応答負荷予測部２１の処理が待たされることなく、入力順にジョブ状態表示リクエストを処理することが可能になる。
【００９４】
図８は、リクエストキュー部２２の処理の流れの一例を示すフローチャートである。リクエストキュー部２２は、何れかのリクエストキューにジョブ状態表示リクエストが登録されたかを判定する（ステップＳ１１）。
【００９５】
ステップＳ１１でＮＯの場合、処理は、次のステップに進まない。ステップＳ１１でＹＥＳの場合、リクエストキュー部２２は、ジョブ状態表示リクエストが登録されたリクエストキューのレベルを示す情報を出力部２３に通知する（ステップＳ１２）。
【００９６】
図９は、出力部２３のスレッド管理部２３Ａの処理の流れの一例を示すフローチャートである。スレッド管理部２３Ａは、リクエストキュー部２２から、ジョブ状態表示リクエストが登録されたリクエストキューのレベルを示す情報が通知されたかを判定する（ステップＳ２１）。
【００９７】
ステップＳ２１でＮＯの場合、処理は、次のステップに進まない。ステップＳ２１でＹＥＳの場合、スレッド管理部２３Ａは、通知されたリクエストキューのレベルに応じたスレッドに、ジョブ状態表示リクエストをリクエストキューから取り出しする通知を行う（ステップＳ２２）。
【００９８】
図１０および図１１は、出力部２３の各スレッドの処理の流れの一例を示すフローチャートである。各スレッドは、スレッド管理部２３Ａから、通知を受けたかを判定する（ステップＳ３１）。
【００９９】
ステップＳ３１でＮＯの場合、処理は、次のステップに進まない。ステップＳ３１でＹＥＳの場合、スレッドは、リクエストキュー部２２のうち、該スレッドに対応するレベルキューにジョブ状態表示リクエストがあるかを判定する（ステップＳ３２）。
【０１００】
例えば、１つのレベルプールに複数のスレッドが含まれる場合、あるスレッドが、レベルキューからジョブ状態表示リクエストを取り出すと、他のスレッドが、レベルキューから取り出すジョブ状態表示リクエストがないことがある。この場合、ステップＳ３２の判定はＮＯとなる。
【０１０１】
ステップＳ３２でＮＯの場合、処理は、ステップＳ３１に移行する。ステップＳ３２でＹＥＳの場合、スレッドは、該スレッドに対応するレベルキューから、ジョブ状態表示リクエストを取り出す（ステップＳ３３）。
【０１０２】
スレッドは、記憶部１２に記憶された投入ジョブ情報を参照して、ジョブ状態表示リクエストに対応するユーザの実行中ジョブ数がゼロであるかに基づいて、実行中ジョブの表示が必要かを判定する（ステップＳ３４）。
【０１０３】
ステップＳ３４でＮＯの場合、ジョブ状態表示リクエストに対応する全てのジョブは、計算ノード４で実行されていない。この場合、ジョブ状態表示リクエストに対応する全てのジョブは、記憶部１２に記憶されているため、スレッドは、記憶部１２に記憶されているジョブに基づいて、ジョブ状態情報を生成する（ステップＳ３５）。
【０１０４】
スレッドが、生成したジョブ状態情報を含む表示情報を、ユーザ端末３に送信する制御を行うことで、通信部１３は、表示情報を、ジョブ状態表示リクエストを送信したユーザ端末３に送信する（ステップＳ３６）。
【０１０５】
ステップＳ３４でＹＥＳの場合、処理は、「Ａ」に移行する。「Ａ」以降の処理について、図１１を参照して説明する。スレッドは、ジョブ実行中の各計算ノード４にジョブ状態の参照依頼を送信する制御を行う。該制御により、各計算ノード４にジョブ状態の参照依頼が送信される（ステップＳ３７）。
【０１０６】
各計算ノードは、参照依頼に応じて、実行中のジョブのジョブ状態情報を、ジョブ管理ノード２に送信する。スレッドは、受信したジョブ状態情報を記憶部１２に記憶する（ステップＳ３８）。
【０１０７】
スレッドは、参照依頼を送信した全ての計算ノード４からジョブ状態情報を受信したかを判定する（ステップＳ３９）。ステップＳ３９でＮＯの場合、処理は、ステップＳ３８に移行する。
【０１０８】
ステップＳ３９でＹＥＳの場合、スレッドは、受信したジョブ状態情報および記憶部１２に記憶されているジョブに基づいて、表示情報を生成する（ステップＳ４０）。そして、処理は、「Ｂ」から、図１０のステップＳ３６に移行する。
【０１０９】
ステップＳ３６の後、処理は、ステップＳ３２に移行する。例えば、レベル２のスレッドが、ユーザ端末３Ａに対応するジョブ状態表示リクエストを処理している間に、レベル２のレベルキューに、ユーザ端末３Ｂに対応するジョブ状態表示リクエストが登録されたとする。
【０１１０】
上記の場合、スレッド管理部２３Ａが、レベル２のスレッドに通知を行なう。この際、該レベル２のスレッドは、ユーザ端末３Ａに対応するジョブ状態表示リクエストを処理しているため、上記通知は無視される。
【０１１１】
ステップＳ３６の処理が終了後に、ステップＳ３１に戻ると、上記通知が無視されたことにより、レベル２のスレッドは、ユーザ端末３Ｂに対応するジョブ状態表示リクエストを処理することができなくなる。
【０１１２】
このため、ステップＳ３６の処理が終了した後、処理は、ステップＳ３１ではなく、ステップＳ３２に移行する。これにより、レベル２のスレッドは、ユーザ端末３Ａに対応するジョブ状態表示リクエストを処理した後に、ユーザ端末３Ｂに対応するジョブ状態表示リクエストを処理することができる。
【０１１３】
＜ジョブ管理ノードのハードウェア構成の一例＞
次に、図１２の例を参照して、ジョブ管理ノード２のハードウェア構成の一例を説明する。図１２の例に示すように、バス１００に対して、プロセッサ１１１とRandom Access Memory(RAM)１１２とRead Only Memory(ROM)１１３とが接続される。また、該バス１００に対して、補助記憶装置１１４と媒体接続部１１５と通信インタフェース１１６とが接続される。
【０１１４】
プロセッサ１１１はＲＡＭ１１２に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行うジョブ状態表示プログラムが適用されてもよい。
【０１１５】
ＲＯＭ１１３はＲＡＭ１１２に展開されるジョブ状態表示プログラムを記憶する不揮発性の記憶装置である。補助記憶装置１１４は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。媒体接続部１１５は、可搬型記録媒体１１５Ｍと接続可能に設けられている。
【０１１６】
可搬型記録媒体１１５Ｍとしては、可搬型のメモリ（例えば、光学ディスクや半導体メモリ等）が適用されてもよい。この可搬型記録媒体１１５Ｍに実施形態の処理を行うジョブ状態表示プログラムが記録されていてもよい。
【０１１７】
上述したジョブスケジューラ１１は、与えられたジョブ状態表示プログラムをプロセッサ１１１が実行することにより実現されてもよい。記憶部１２は、ＲＡＭ１１２や補助記憶装置１１４等により実現されてもよい。通信部１３は、通信インタフェース１１６により実現されてもよい。
【０１１８】
ＲＡＭ１１２、ＲＯＭ１１３、補助記憶装置１１４および可搬型記録媒体１１５Ｍは、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
【０１１９】
＜その他＞
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。以上の実施形態に関し、以下の付記を開示する。
【符号の説明】
【０１２０】
１    並列計算機システム
２    ジョブ管理ノード
３    ユーザ端末
４    計算ノード
１１    ジョブスケジューラ
１２    記憶部
１３    通信部
２１    応答負荷予測部
２１Ａ  算出部
２１Ｂ  分類部
２２    リクエストキュー部
２３    出力部
２３Ａ  スレッド管理部
１１１    プロセッサ
１１２    ＲＡＭ
１１３    ＲＯＭ
【図１】
0006988556.tif 000002
【図２】
0006988556.tif 000003
【図３】
0006988556.tif 000004
【図４】
0006988556.tif 000005
【図５】
0006988556.tif 000006
【図６】
0006988556.tif 000007
【図７】
0006988556.tif 000008
【図８】
0006988556.tif 000009
【図９】
0006988556.tif 000010
【図１０】
0006988556.tif 000011
【図１１】
0006988556.tif 000012
【図１２】
0006988556.tif 000013