(57)【要約】【課題】ノードの保守作業によるノードで実行予定の処理への悪影響を抑制すること。【解決手段】並列処理装置１００は、第１時刻と第２時刻とを取得する。並列処理装置１００は、取得した第１時刻から第２時刻までの期間に、複数のノードＮのそれぞれのノードＮに対する保守作業を実施させることを規定する、複数のスケジュール候補を生成する。並列処理装置１００は、生成した複数のスケジュール候補のそれぞれのスケジュール候補を、取得した第１時刻から第２時刻までの期間におけるノードＮによる処理の実行予定に基づいて評価する。並列処理装置１００は、評価した結果に基づいて、複数のスケジュール候補のいずれかのスケジュール候補を出力する。【選択図】図１
2019012366.tif 000002
【特許請求の範囲】
【請求項１】
第１時刻と第２時刻とを取得し、
複数のノードを複数のグループに分け、取得した前記第１時刻から前記第２時刻までの期間における、前記グループに含まれるノードの保守作業にかかる所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補のそれぞれのスケジュール候補を、前記期間における前記ノードによる処理の実行予定に基づいて評価し、
評価した結果に基づいて、前記複数のスケジュール候補のいずれかのスケジュール候補を出力する、
制御部を有することを特徴とする並列処理装置。
【請求項２】
前記制御部は、
前記期間における前記ノードによる処理の実行予定に基づいて、前記複数のグループのそれぞれのグループに含まれる、前記期間において処理の実行予定があるノードの数が小さくなるように、前記複数のノードを前記複数のグループに分ける、前記複数のスケジュール候補を生成する、ことを特徴とする請求項１に記載の並列処理装置。
【請求項３】
前記制御部は、
前記複数のグループの少なくともいずれかのグループが、所定数以上のノードを含むように、前記複数のノードを前記複数のグループに分ける、前記複数のスケジュール候補を生成する、ことを特徴とする請求項１または２に記載の並列処理装置。
【請求項４】
実行済みの処理に用いられたノードの数の平均値に基づいて前記所定数を設定する、ことを特徴とする請求項３に記載の並列処理装置。
【請求項５】
前記制御部は、
前記複数のグループのそれぞれのグループに割り当てる時間帯が連続するように、前記期間における、前記所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補を生成する、ことを特徴とする請求項１〜４のいずれか一つに記載の並列処理装置。
【請求項６】
コンピュータが、
第１時刻と第２時刻とを取得し、
複数のノードを複数のグループに分け、取得した前記第１時刻から前記第２時刻までの期間における、前記グループに含まれるノードの保守作業にかかる所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補のそれぞれのスケジュール候補を、前記期間における前記ノードによる処理の実行予定に基づいて評価し、
評価した結果に基づいて、前記複数のスケジュール候補のいずれかのスケジュール候補を出力する、
処理を実行することを特徴とする並列処理装置の保守方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、並列処理装置、および並列処理装置の保守方法に関する。
【背景技術】
【０００２】
従来、科学技術計算などの大規模な計算を、複数の計算機を用いた並列計算により実現する並列処理システムがある。計算機は、例えば、ノードと呼ばれる。並列処理システムでは、管理用計算機が設けられ、管理用計算機が、ジョブをいずれの時間帯にいずれの計算機に実行させるかを予め決定し、計算機でのジョブの実行予定を管理する。
【０００３】
先行技術としては、例えば、ジョブがデータ処理要求をしたプロセッサ、データ処理要求をしたジョブより優先度が低いジョブを実行しているプロセッサ、および遊休プロセッサが、データ処理要求に応じたデータ処理機能を並列処理するものがある。また、例えば、複数のジョブキューにより実行待ちジョブおよび実行中ジョブを管理し、各ジョブのシステム資源要求量、待ち時間などに応じて所属キューおよびキュー内優先度を設定する技術がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１８４３２６号公報
【特許文献２】特開平８−１６４１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来技術では、ノードの保守作業が実施される際、ノードで実行予定の処理への悪影響を与えてしまう場合がある。例えば、ノードの保守作業が完了するまで、ノードで実行予定の処理が実行開始されず、ノードで実行予定の処理の実行開始のタイミングが遅延してしまう。
【０００６】
１つの側面では、本発明は、ノードの保守作業によるノードで実行予定の処理への悪影響を抑制することができる並列処理装置、および並列処理装置の保守方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
１つの実施態様によれば、第１時刻と第２時刻とを取得し、複数のノードを複数のグループに分け、取得した前記第１時刻から前記第２時刻までの期間において、前記ノードの保守作業にかかる所定時間分の、前記グループごとに異なる時間帯を割り当て、前記グループごとに保守作業を実施させる、複数のスケジュール候補のそれぞれのスケジュール候補を、前記期間における前記ノードによる処理の実行予定に基づいて評価し、評価した結果に基づいて、前記複数のスケジュール候補のいずれかのスケジュール候補を出力する並列処理装置、および並列処理装置の保守方法が提案される。
【発明の効果】
【０００８】
一態様によれば、ノードの保守作業によるノードで実行予定の処理への悪影響を抑制することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】図１は、実施の形態にかかる並列処理装置１００の保守方法の一実施例を示す説明図である。
【図２】図２は、並列処理システム２００の一例を示す説明図である。
【図３】図３は、並列処理装置１００のハードウェア構成例を示すブロック図である。
【図４】図４は、並列処理装置１００の機能的構成例を示すブロック図である。
【図５】図５は、実施例１を示す説明図（その１）である。
【図６】図６は、実施例１を示す説明図（その２）である。
【図７】図７は、実施例１を示す説明図（その３）である。
【図８】図８は、実施例１を示す説明図（その４）である。
【図９】図９は、実施例１を示す説明図（その５）である。
【図１０】図１０は、実施例１を示す説明図（その６）である。
【図１１】図１１は、実施例１を示す説明図（その７）である。
【図１２】図１２は、実施例１を示す説明図（その８）である。
【図１３】図１３は、実施例１を示す説明図（その９）である。
【図１４】図１４は、実施例１を示す説明図（その１０）である。
【図１５】図１５は、保守処理手順の一例を示すフローチャートである。
【図１６】図１６は、保守領域候補リスト作成処理手順の一例を示すフローチャートである。
【図１７】図１７は、保守領域候補リスト選択処理手順の一例を示すフローチャートである。
【図１８】図１８は、評価値算出処理手順の一例を示すフローチャートである。
【図１９】図１９は、実施例２を示す説明図（その１）である。
【図２０】図２０は、実施例２を示す説明図（その２）である。
【図２１】図２１は、実施例２を示す説明図（その３）である。
【図２２】図２２は、実施例２を示す説明図（その４）である。
【図２３】図２３は、実施例２を示す説明図（その５）である。
【図２４】図２４は、実施例２を示す説明図（その６）である。
【図２５】図２５は、実施例２を示す説明図（その７）である。
【発明を実施するための形態】
【００１０】
以下に、図面を参照して、本発明にかかる並列処理装置、および並列処理装置の保守方法の実施の形態を詳細に説明する。
【００１１】
（実施の形態にかかる並列処理装置１００の保守方法の一実施例）
図１は、実施の形態にかかる並列処理装置１００の保守方法の一実施例を示す説明図である。図１において、並列処理装置１００は、並列処理システムを実現する複数のノードＮに対する保守作業を管理するコンピュータである。保守作業は、例えば、ノードＮのシステムソフトのバージョンアップなどを含む。システムソフトは、例えば、ＯＳ（Ｏｐｅｒａｔｉｏｎ  Ｓｙｓｔｅｍ）などである。
【００１２】
並列処理システムでは、管理用ノードが設けられ、管理用ノードが、ジョブをいずれの時間帯にいずれのノードに実行させるかを予め決定し、ノードでのジョブの実行予定を管理する。管理用ノードは、例えば、ジョブスケジューラにより、並列処理システムの利用者から端末装置を介して実行依頼されたジョブのスケジューリングを実施し、ジョブの実行開始予定時刻になると、ジョブを１以上のノードに実行させる。
【００１３】
ここで、並列処理システムが、多数の利用者によって利用される場合、利用者は、利用したいノードの台数と利用したい時間の長さとを指定して、端末装置を介してジョブスケジューラにジョブを実行依頼する傾向がある。これに対し、ジョブスケジューラは、指定された台数のノードを、指定された時間の長さ分の時間帯だけ、ジョブの実行のために確保し、ジョブの実行予定を決定し、決定したジョブの実行予定を利用者に通知する。ジョブスケジューラについては、例えば、下記参考文献１を参照することができる。
【００１４】
参考文献１：Ｅｔｓｉｏｎ，  Ｙｏａｖ，  ａｎｄ  Ｄａｎ  Ｔｓａｆｒｉｒ．  “Ａ  ｓｈｏｒｔ  ｓｕｒｖｅｙ  ｏｆ  ｃｏｍｍｅｒｃｉａｌ  ｃｌｕｓｔｅｒ  ｂａｔｃｈ  ｓｃｈｅｄｕｌｅｒｓ．”  Ｓｃｈｏｏｌ  ｏｆ  Ｃｏｍｐｕｔｅｒ  Ｓｃｉｅｎｃｅ  ａｎｄ  Ｅｎｇｉｎｅｅｒｉｎｇ，  Ｔｈｅ  Ｈｅｂｒｅｗ  Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｊｅｒｕｓａｌｅｍ  ４４２２１  （２００５）：  ２００５−１３．
【００１５】
また、並列処理システムでは、複数のノードに対する保守作業が実施されることがある。この際、並列処理システムでは、下記（１）〜（５）に示すような、様々な事項が実現されるように望まれる傾向がある。
【００１６】
（１）ジョブスケジューラがジョブの実行予定を決定した後、ノードの保守作業が実施されたりして並列処理システムの状況が変化した場合、実行予定通りにジョブが実行されず、ジョブの実行開始時刻が、実行開始予定時刻から遅延してしまうことがある。ジョブの実行開始時刻が、実行開始予定時刻から遅延するほど、利用者の業務や研究活動に支障を来す可能性が大きくなり、利用者との契約違反が生じる可能性も大きくなるため、ジョブの実行開始時刻の、実行開始予定時刻からの遅延を抑制することが望まれる。
【００１７】
（２）また、並列処理システムでは、ネットワーク部分のコストをノード部分のコストに対して一定比率以下に抑制する観点から、ネットワークトポロジーをメッシュ状またはトーラス状にすることがある。そして、異なるジョブの通信が干渉しないように、それぞれのジョブに割り当てる１以上のノードが、サブメッシュ状またはサブトーラス状になるようにすることが望まれる。
【００１８】
（３）また、並列処理システムでは、ノードの保守作業が実施される場合、保守作業が実施中であるノードにおいて、利用者から実行依頼されたジョブを実行しないようにすることが望まれることがある。例えば、利用者から実行依頼されたジョブの目的、保守作業の性質などによっては、保守作業が実施中であるノードにおいて、利用者から実行依頼されたジョブを実行しないようにすることが望まれる。
【００１９】
（４）そして、緊急性が比較的小さい保守作業については、すべてのノードに対して一律保守作業を実施させるよりも、いくつかのノードごとに段階的に保守作業を実施させ、並列処理システム全体を利用不可能な期間を発生させないことが望まれる。例えば、保守作業にかかる期間より長めに保守作業の実施を許可する期間を設定し、設定した期間内でいくつかのノードごとに段階的に保守作業を実施させることが望まれる。
【００２０】
（５）また、段階的に保守作業を実施させる場合、段階的に保守作業を実施させる途中で、保守作業が実施されたノードと、保守作業が実施されていないノードとが混在してしまい、システムソフトの互換性がないノードが混在してしまうことがある。システムソフトの互換性がないノードを、１つのジョブに割り当てることはできないため、システムソフトの互換性がないノードが混在しづらいように段階的に保守作業を実施させることが望まれる。
【００２１】
以上のように、並列処理システムでは、複数のノードに対する保守作業が実施される際、ノードに対する保守作業によるノードで実行予定のジョブへの悪影響を抑制しつつ、ジョブに１以上のノードを効率よく割り当てやすくすることが望まれる。
【００２２】
そこで、本実施の形態では、複数のノードを複数のグループに分けて所定期間内で時間帯をずらして保守作業を実施させる複数のスケジュールを、所定期間内に実行予定の処理への影響に基づいて評価することができる保守方法について説明する。
【００２３】
並列処理装置１００は、保守情報を取得する。保守情報は、例えば、第１時刻と第２時刻とを含む。第１時刻は、保守作業の実施を許可する期間の開始時刻である。第２時刻は、保守作業の実施を許可する期間の終了時刻である。時刻は、何時かを指定してもよいし、何時何分かを指定してもよい。時刻は、さらに、日付を指定してもよい。
【００２４】
並列処理装置１００は、取得した第１時刻から第２時刻までの期間に、複数のノードＮのそれぞれのノードＮに対する保守作業を実施させることを規定する、複数のスケジュール候補を生成する。スケジュール候補は、複数のノードＮを複数のグループに分け、取得した第１時刻から第２時刻までの期間における、グループに含まれるノードＮの保守作業にかかる所定時間分の時間帯を、グループ間で重複しないように割り当てることを規定する情報である。所定時間は、秒単位、分単位、時間単位、日単位などであってもよい。
【００２５】
スケジュール候補Ｓは、具体的には、複数のノードＮを、グループＧ１，Ｇ２に分け、第１時刻から第２時刻までの期間のうち、時間帯ＡをグループＧ１に割り当て、時間帯ＢをグループＧ２に割り当て、保守作業を実施させることを規定する。
【００２６】
並列処理装置１００は、取得した第１時刻から第２時刻までの期間におけるノードＮによる処理の実行予定を取得する。処理は、例えば、ジョブである。実行予定は、例えば、処理の実行開始予定時刻を含む。実行予定は、例えば、処理の実行終了予定時刻を含んでもよい。
【００２７】
並列処理装置１００は、生成した複数のスケジュール候補のそれぞれのスケジュール候補を、取得した第１時刻から第２時刻までの期間におけるノードＮによる処理の実行予定に基づいて評価する。並列処理装置１００は、例えば、それぞれのスケジュール候補の評価値を、ノードＮによる処理の実行開始時刻が実行開始予定時刻より遅延する度合いが小さいほど評価値が大きくなるように算出する。
【００２８】
並列処理装置１００は、評価した結果に基づいて、複数のスケジュール候補のいずれかのスケジュール候補を出力する。並列処理装置１００は、例えば、算出した評価値が最も大きいスケジュール候補を出力する。並列処理装置１００は、出力したスケジュール候補に基づいて、複数のノードＮによる処理の実行予定を調整し、複数のノードＮに保守作業を実施させる。
【００２９】
これにより、並列処理装置１００は、複数のノードＮを複数のグループに分けて段階的に保守作業を実施させ、ノードＮの保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当てやすくすることができる。
【００３０】
並列処理装置１００は、例えば、それぞれのスケジュール候補をノードＮによる処理の実行予定に基づいて評価するため、処理の実行開始時刻の、最初の実行開始予定時刻からの遅延を抑制することができる。このため、並列処理装置１００は、並列処理システムの利便性の向上を図ることができる。
【００３１】
並列処理装置１００は、複数のノードＮを複数のグループに分ける際、グループにサブメッシュ状またはサブトーラス状になる１以上のノードＮが含まれるようにすることが可能である。このため、並列処理装置１００は、グループに含まれる１以上のノードＮの保守作業が実施された後、グループに含まれる１以上のノードＮをまとめて処理に割り当てて、他の処理の通信と干渉しないようにすることができる。
【００３２】
並列処理装置１００は、出力したスケジュール候補に基づいて、複数のノードＮによる処理の実行予定を調整するため、保守作業が実施中であるノードＮにおいて、利用者から実行依頼された処理を実行しないようにすることができる。このため、並列処理装置１００は、保守作業も、利用者から実行依頼された処理も不安定になることを防止することができる。
【００３３】
並列処理装置１００は、例えば、複数のノードＮを複数のグループに分けて段階的に保守作業を実施させるため、並列処理システム全体を利用不可能な期間を発生させないようにすることができる。このため、並列処理装置１００は、並列処理システムの利便性の向上を図ることができる。
【００３４】
並列処理装置１００は、グループに含まれるノードＮの保守作業にかかる所定時間分の時間帯を、グループ間で重複しないように割り当てる際、それぞれのグループに割り当てる時間帯が連続するように割り当てることが可能である。このため、並列処理装置１００は、システムソフトの互換性がないノードＮが混在しづらくなるように、段階的に保守作業を実施させることができる。
【００３５】
ここでは、並列処理装置１００が、複数のスケジュール候補を生成して、それぞれのスケジュール候補を評価する場合について説明したが、これに限らない。例えば、並列処理装置１００が、予め用意された複数のスケジュール候補を取得し、または、過去に生成した複数のスケジュール候補を流用し、それぞれのスケジュール候補を評価する場合があってもよい。
【００３６】
（並列処理システム２００の一例）
次に、図２を用いて、図１に示した並列処理装置１００を適用した、並列処理システム２００の一例について説明する。
【００３７】
図２は、並列処理システム２００の一例を示す説明図である。図２において、並列処理システム２００は、並列処理装置１００と、利用者装置２０１と、管理者装置２０２と、複数のノードＮとを含む。
【００３８】
並列処理システム２００において、並列処理装置１００と、利用者装置２０１と、管理者装置２０２とは、有線または無線のネットワーク２１０を介して接続される。また、並列処理システム２００において、並列処理装置１００と、複数のノードＮのそれぞれのノードＮとは、有線または無線のネットワーク２１０を介して接続される。ネットワーク２１０は、例えば、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどである。また、並列処理システム２００において、複数のノードＮは、１次元トーラス状に接続される。
【００３９】
並列処理装置１００は、ジョブの実行依頼２０３を受け付け、ノードＮによるジョブの実行を管理するジョブスケジューラ２０４を有する。並列処理装置１００は、ノードＮに対する保守作業の実施を管理する保守スケジューラ２０５を有する。並列処理装置１００は、スケジュール情報を記憶するスケジュールＤＢ（Ｄａｔａ  Ｂａｓｅ）２０６を有する。
【００４０】
スケジュール情報は、例えば、ノードＮの利用状況を示す情報、および、ジョブの実行予定を示す情報などを含む。スケジュール情報は、ジョブの実行履歴を示す情報を含んでもよい。実行履歴は、例えば、実行済みのジョブが使用したノードＮの数を含む。
【００４１】
ジョブスケジューラ２０４は、ジョブの実行依頼２０３を受け付けると、スケジュールＤＢ２０６に記憶されたスケジュール情報に基づいて、ジョブのスケジューリングを実施する。ジョブスケジューラ２０４は、ジョブの実行開始予定時刻になると、ジョブを１以上のノードＮに実行させる。
【００４２】
（２−１）保守スケジューラ２０５は、保守情報を含む保守依頼を、管理者装置２０２から受信する。保守情報は、例えば、第１時刻と第２時刻とを含む。第１時刻は、保守作業の実施を許可する期間の開始時刻である。第２時刻は、保守作業の実施を許可する期間の終了時刻である。以下の説明では、保守作業の実施を許可する期間の開始時刻を「保守開始時刻」と表記し、保守作業の実施を許可する期間の終了時刻を「保守終了時刻」と表記し、保守作業の実施を許可する期間を「保守予定期間」と表記する場合がある。保守情報は、さらに、ノードＮの保守作業にかかる所定時間の長さを含んでもよい。以下の説明では、ノードＮの保守作業にかかる所定時間を「保守時間」と表記する場合がある。
【００４３】
（２−２）保守スケジューラ２０５は、スケジュールＤＢ２０６に記憶されたスケジュール情報に基づいて、複数のノードＮを複数のグループに分けた結果を示す、複数のグループリストを生成する。以下の説明では、グループを「保守領域候補」と表記し、グループリストを「保守領域候補リスト」と表記する場合がある。保守領域候補リストを生成する具体例は、例えば、実施例１において図９および図１０を用いて後述する。
【００４４】
（２−３）保守スケジューラ２０５は、生成した複数の保守領域候補リストのそれぞれの保守領域候補リストについて、ノードＮの保守作業にかかる保守時間分の時間帯を、保守領域ごとに重複しないように割り当て、複数のスケジュール候補を生成する。以下の説明では、ノードＮの保守作業にかかる保守時間分の時間帯を「保守時間帯」と表記する場合がある。
【００４５】
保守スケジューラ２０５は、生成した複数の保守領域候補リストのいずれかの保守領域候補リストを選択し、ノードＮの保守作業にかかる保守時間分の時間帯を、保守領域ごとに重複しないように割り当て、複数のスケジュール候補を生成してもよい。いずれかの保守領域候補リストを選択する具体例は、例えば、実施例１において図１１を用いて説明する。複数のスケジュール候補を生成する具体例は、例えば、実施例１において図１２を用いて説明する。
【００４６】
（２−４）保守スケジューラ２０５は、いずれかのスケジュール候補を含む再スケジューリング依頼を、ジョブスケジューラ２０４に送信する。ジョブスケジューラ２０４は、いずれかのスケジュール候補に基づいて、再スケジューリングする。再スケジューリングする具体例は、例えば、実施例１において図１３および図１４を用いて後述する。並列処理装置１００は、例えば、サーバやＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などである。
【００４７】
利用者装置２０１は、並列処理システム２００の利用者が使用するコンピュータである。利用者装置２０１は、利用者から、ジョブの実行に使用する１以上のノードＮの形状と、ノードＮを使用する時間の長さなどの指定を受け付け、ジョブの実行依頼２０３を並列処理装置１００に送信する。利用者装置２０１は、例えば、ジョブの実行依頼２０３を並列処理装置１００のジョブスケジューラ２０４に送信する。利用者装置２０１は、例えば、ＰＣ、ノートＰＣ、タブレット端末、スマートフォンなどである。
【００４８】
管理者装置２０２は、並列処理システム２００の管理者が使用するコンピュータである。管理者装置２０２は、管理者から、保守情報の指定を受け付け、保守依頼を並列処理装置１００に送信する。管理者装置２０２は、例えば、保守依頼を並列処理装置１００の保守スケジューラ２０５に送信する。管理者装置２０２は、例えば、ＰＣ、ノートＰＣ、タブレット端末、スマートフォンなどである。
【００４９】
ノードＮは、ジョブスケジューラ２０４の制御にしたがって、ジョブを実行するコンピュータである。ノードＮは、例えば、ジョブ実行機構２０７を有し、ジョブ実行機構２０７によりジョブを実行する。ノードＮは、ジョブスケジューラ２０４の制御にしたがって、保守作業を実施する。ノードＮは、例えば、サーバやＰＣなどである。
【００５０】
ここでは、並列処理装置１００がジョブスケジューラ２０４を有する場合について説明したが、これに限らない。例えば、並列処理装置１００がジョブスケジューラ２０４を有さない場合があってもよい。この場合、例えば、並列処理装置１００がジョブスケジューラ２０４を有する他のコンピュータと通信可能であり、並列処理装置１００が他のコンピュータにジョブの実行予定を管理させる。
【００５１】
（並列処理装置１００のハードウェア構成例）
次に、図３を用いて、並列処理装置１００のハードウェア構成例について説明する。
【００５２】
図３は、並列処理装置１００のハードウェア構成例を示すブロック図である。図３において、並列処理装置１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３０１と、メモリ３０２と、ネットワークＩ／Ｆ（Ｉｎｔｅｒｆａｃｅ）３０３と、記録媒体Ｉ／Ｆ３０４と、記録媒体３０５とを有する。また、各構成部は、バス３００によってそれぞれ接続される。
【００５３】
ここで、ＣＰＵ３０１は、並列処理装置１００の全体の制御を司る。メモリ３０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）およびフラッシュＲＯＭなどを有する。具体的には、例えば、フラッシュＲＯＭやＲＯＭが各種プログラムを記憶し、ＲＡＭがＣＰＵ３０１のワークエリアとして使用される。メモリ３０２に記憶されるプログラムは、ＣＰＵ３０１にロードされることで、コーディングされている処理をＣＰＵ３０１に実行させる。
【００５４】
ネットワークＩ／Ｆ３０３は、通信回線を通じてネットワーク２１０に接続され、ネットワーク２１０を介して他のコンピュータに接続される。そして、ネットワークＩ／Ｆ３０３は、ネットワーク２１０と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。ネットワークＩ／Ｆ３０３には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００５５】
記録媒体Ｉ／Ｆ３０４は、ＣＰＵ３０１の制御にしたがって記録媒体３０５に対するデータのリード／ライトを制御する。記録媒体Ｉ／Ｆ３０４は、例えば、ディスクドライブ、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ポートなどである。記録媒体３０５は、記録媒体Ｉ／Ｆ３０４の制御で書き込まれたデータを記憶する不揮発メモリである。記録媒体３０５は、例えば、ディスク、半導体メモリ、ＵＳＢメモリなどである。記録媒体３０５は、並列処理装置１００から着脱可能であってもよい。
【００５６】
並列処理装置１００は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイ、プリンタ、スキャナ、マイク、スピーカーなどを有してもよい。また、並列処理装置１００は、記録媒体Ｉ／Ｆ３０４や記録媒体３０５を有していなくてもよい。
【００５７】
（利用者装置２０１のハードウェア構成例）
利用者装置２０１のハードウェア構成例は、例えば、図３に示した並列処理装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００５８】
（管理者装置２０２のハードウェア構成例）
管理者装置２０２のハードウェア構成例は、例えば、図３に示した並列処理装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００５９】
（ノードＮのハードウェア構成例）
ノードＮのハードウェア構成例は、例えば、図３に示した並列処理装置１００のハードウェア構成例と同様であるため、説明を省略する。
【００６０】
（並列処理装置１００の機能的構成例）
次に、図４を用いて、並列処理装置１００の機能的構成例について説明する。
【００６１】
図４は、並列処理装置１００の機能的構成例を示すブロック図である。並列処理装置１００は、取得部４０１と、設定部４０２と、評価部４０３と、割当部４０４と、出力部４０５とを含む。
【００６２】
記憶部４００は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域によって実現される。
【００６３】
取得部４０１〜出力部４０５は、制御部となる機能である。取得部４０１〜出力部４０５は、具体的には、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶されたプログラムをＣＰＵ３０１に実行させることにより、または、ネットワークＩ／Ｆ３０３により、その機能を実現する。各機能部の処理結果は、例えば、図３に示したメモリ３０２や記録媒体３０５などの記憶領域に記憶される。
【００６４】
記憶部４００は、並列処理システム２００を実現する複数のノードＮの管理情報を記憶する。複数のノードＮは、例えば、１次元トーラス状に接続される。管理情報は、例えば、ノードＮの座標やノードＮ間の接続関係などを示す情報を含む。記憶部４００は、スケジュール情報を記憶する。スケジュール情報は、例えば、ノードＮの利用状況を示す情報、および、ノードＮによる処理の実行予定を示す情報などを含む。処理は、例えば、ジョブである。
【００６５】
記憶部４００は、保守情報を記憶する。保守情報は、例えば、第１時刻と第２時刻とを含む。第１時刻は、保守予定期間についての保守開始時刻である。第２時刻は、保守予定期間についての保守終了時刻である。保守予定期間は、保守作業の実施が許可された期間である。保守情報は、さらに、保守時間の長さを含んでもよい。保守時間は、ノードＮの保守作業にかかる所定時間である。記憶部４００は、複数のノードＮを複数のグループに分ける際に、いずれかのグループに含めることが好ましいノードＮの数を示す所定数を記憶する。これにより、記憶部４００は、各機能部の処理に用いられる情報を、各機能部が参照可能にすることができる。
【００６６】
取得部４０１は、第１時刻と第２時刻とを取得する。取得部４０１は、例えば、保守予定期間についての保守開始時刻と保守終了時刻とを取得する。取得部４０１は、具体的には、保守予定期間についての保守開始時刻と保守終了時刻とを含む保守情報を、管理者装置２０２から受信する。これにより、取得部４０１は、いずれの期間に保守作業の実施が許可されているかを特定可能にすることができる。
【００６７】
設定部４０２は、複数のスケジュール候補を生成する。スケジュール候補は、複数のノードＮを複数のグループに分け、保守予定期間における、グループに含まれるノードＮの保守作業にかかる保守時間分の保守時間帯を、グループ間で重複しないように割り当てることを規定する情報である。保守時間帯は、ノードＮの保守作業にかかる保守時間分の時間帯である。
【００６８】
設定部４０２は、例えば、スケジュール情報に含まれる、保守予定期間におけるノードＮによる処理の実行予定に基づいて、第１条件にしたがって複数のスケジュール候補を生成する。第１条件は、例えば、それぞれのグループに含まれる、保守予定期間において処理の実行予定があるノードＮの数が小さくなるようにすることである。
【００６９】
設定部４０２は、具体的には、それぞれのグループに含まれる、保守予定期間において処理の実行予定があるノードＮの数が小さくなるように、複数のノードＮを複数のグループに分ける、複数のスケジュール候補を生成する。これにより、設定部４０２は、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい複数のスケジュール候補を生成することができ、比較的好ましくないスケジュール候補を生成しなくてもよいようにすることができる。このため、設定部４０２は、評価部４０３における評価の対象になるスケジュール候補の数を抑制し、評価部４０３における評価にかかる処理量の低減化を図ることができる。
【００７０】
設定部４０２は、例えば、管理情報に含まれる、ノードＮの座標やノードＮ間の接続関係などを示す情報に基づいて、第２条件にしたがって複数のスケジュール候補を生成する。第２条件は、例えば、複数のグループの少なくともいずれかのグループが、所定数以上のノードＮを含むようにすることである。
【００７１】
設定部４０２は、具体的には、複数のグループの少なくともいずれかのグループが、所定数以上のノードＮを含むように、複数のノードＮを複数のグループに分ける、複数のスケジュール候補を生成する。これにより、設定部４０２は、いずれかのグループに含まれるノードＮが保守作業を実施すれば、所定数のノードＮが使用可能になるようにすることができ、処理が使用するノードＮが不足することを防止しやすくすることができる。
【００７２】
設定部４０２は、例えば、管理情報に含まれる、ノードＮの座標やノードＮ間の接続関係などを示す情報に基づいて、第３条件にしたがって複数のスケジュール候補を生成する。第３条件は、例えば、複数のグループの少なくともいずれかのグループが、連続的に接続された複数のノードＮを含むようにすることである。
【００７３】
設定部４０２は、具体的には、複数のグループの少なくともいずれかのグループが、連続的に接続された２以上のノードＮを含むように、複数のノードＮを複数のグループに分ける、複数のスケジュール候補を生成する。これにより、設定部４０２は、いずれかのグループに含まれるノードＮが保守作業を実施すれば、連続的に接続された２以上のノードＮが使用可能になるようにすることができる。このため、設定部４０２は、処理がサブメッシュ状またはサブトーラス状になる１以上のノードＮを使用する場合に対応することができ、他の処理の通信と干渉しないようにすることができる。
【００７４】
設定部４０２は、例えば、第４条件にしたがって複数のスケジュール候補を生成する。第４条件は、例えば、それぞれのグループに割り当てる保守時間帯が連続するように、保守予定期間における、保守時間分の保守時間帯を、グループ間で重複しないように割り当てることである。
【００７５】
設定部４０２は、具体的には、それぞれのグループに割り当てる保守時間帯が連続するように、保守予定期間における、保守時間分の保守時間帯を、グループ間で重複しないように割り当てる、複数のスケジュール候補を生成する。これにより、設定部４０２は、システムソフトの互換性がないノードＮが混在しづらくなるように、段階的に保守作業を実施させることができる。
【００７６】
設定部４０２は、第１条件〜第４条件のいくつかの条件にしたがって複数のスケジュール候補を生成してもよい。また、設定部４０２は、第１条件〜第４条件のすべてにしたがって複数のスケジュール候補を生成してもよい。
【００７７】
設定部４０２は、実行済みの処理に用いられたノードＮの数の平均値に基づいて、いずれかのグループに含めることが好ましいノードＮの数を示す所定数を設定する。設定部４０２は、例えば、実行済みの処理に用いられたノードＮの数の平均値を、いずれかのグループに含めることが好ましいノードＮの数を示す所定数として設定し、記憶部４００に記憶する。これにより、設定部４０２は、いずれかのグループに含めることが好ましいノードＮの数を示す所定数として、過去に処理に用いられたノードＮの数の平均値に基づいて適当な数と判断される数を自動で設定することができる。
【００７８】
評価部４０３は、複数のスケジュール候補のそれぞれのスケジュール候補を、保守予定期間におけるノードＮによる処理の実行予定に基づいて評価する。評価部４０３は、例えば、それぞれのスケジュール候補の評価値を、ノードＮによる処理の実行開始時刻が実行開始予定時刻より遅延する度合いが小さいほど、評価が高いことを示すように算出する。これにより、評価部４０３は、ノードＮで実行予定の処理への悪影響が小さいスケジュール候補が、相対的に高く評価されるようにすることができる。
【００７９】
割当部４０４は、評価した結果に基づいて、複数のスケジュール候補のいずれかのスケジュール候補を出力する。割当部４０４は、例えば、いずれかのスケジュール候補に基づいて、複数のノードＮを複数のグループに分けて段階的に保守作業を実施させ、保守予定期間におけるノードＮによる処理の実行予定を変更し、記憶部４００に記憶されたスケジュール情報を更新する。
【００８０】
割当部４０４は、具体的には、評価値が最も評価が高いことを示すスケジュール候補に基づいて、複数のノードＮを複数のグループに分けて段階的に保守作業を実施させる。また、割当部４０４は、評価値が最も評価が高いことを示すスケジュール候補に基づいて、ジョブスケジューラ２０４を制御し、保守予定期間におけるノードＮによる処理の実行予定を変更し、記憶部４００に記憶されたスケジュール情報を更新する。これにより、割当部４０４は、ノードＮに対する保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当て直すことができる。
【００８１】
出力部４０５は、各機能部の処理結果を出力する。出力形式は、例えば、ディスプレイへの表示、プリンタへの印刷出力、ネットワークＩ／Ｆ３０３による外部装置への送信、または、メモリ３０２や記録媒体３０５などの記憶領域への記憶である。出力部４０５は、例えば、各機能部の処理結果を、管理者装置２０２に送信する。これにより、管理者は、各機能部の処理結果を把握し、並列処理システム２００の管理に利用可能になる。
【００８２】
出力部４０５は、並列処理装置１００がジョブスケジューラ２０４を有さなければ、ジョブスケジューラを有する他のコンピュータに、評価値が最も評価が高いことを示すスケジュール候補を送信してもよい。これにより、出力部４０５は、ジョブスケジューラを有する他のコンピュータに、複数のノードＮを複数のグループに分けて段階的に保守作業を実施させることができる。
【００８３】
（実施例１）
次に、図５〜図１４を用いて、実施例１について説明する。実施例１は、並列処理システム２００を実現するノードＮの数が、１つの保守領域当たりに含めることが好ましいノードＮの数を示す所定数で割り切れる場合についての実施例である。
【００８４】
図５〜図１４は、実施例１を示す説明図である。実施例１では、並列処理システム２００は、１２個のノードＮを含む。１２個のノードＮは、１次元トーラス状に接続される。それぞれのノードＮは、座標Ｘが割り当てられる。以下の説明では、それぞれのノードＮを区別する場合、ノードＮｘと表記する場合がある。また、実施例１では、保守開始時刻は０５であるとする。また、実施例１では、保守終了時刻は１０であるとする。時刻は、例えば、１単位時間ごとに区切られている。また、実施例１では、保守時間は１単位時間であるとする。ここで、図５の説明に移行する。
【００８５】
＜複数のノードＮによる複数のジョブの実行予定＞
図５は、実施例１の初期状態における、複数のノードＮによる複数のジョブの実行予定を示す。具体的には、図５のグラフ５００は、複数のノードＮによる複数のジョブの実行予定を示す。図５のグラフ５００の縦軸は、ノードＮの座標を示す。図５のグラフ５００の横軸は、０１〜１１までの時刻を示す。
【００８６】
図５のグラフ５００内の四角形は、ジョブに対して、いずれのノードＮと、いずれの時間帯とが割り当てられたかを示す。図５のグラフ５００内の四角形の縦軸方向の辺の長さは、ジョブに対して割り当てられたノードＮの数を示す。図５のグラフ５００内の四角形の横軸方向の辺の長さは、ジョブに対して割り当てられた時間帯の長さを示す。
【００８７】
図５の例では、例えば、ジョブＪ１に対して、ノードＮ１〜Ｎ６と、時刻０１〜０６の時間帯とを割り当てた実行予定がある。ジョブＪ２に対して、ノードＮ９〜Ｎ１２と、時刻０１〜０３の時間帯とを割り当てた実行予定がある。ジョブＪ３に対して、ノードＮ７〜Ｎ９と、時刻０３〜０７の時間帯とを割り当てた実行予定がある。ジョブＪ４に対して、ノードＮ１〜Ｎ６と、時刻０６〜１０の時間帯とを割り当てた実行予定がある。ジョブＪ５に対して、ノードＮ８〜Ｎ１１と、時刻０７〜１１の時間帯とを割り当てた実行予定がある。ここで、図６の説明に移行し、並列処理装置１００が、上述したノードＮの座標をどのように記憶するかについて説明する。
【００８８】
＜ノード管理ＤＢ６００の記憶内容の一例＞
図６は、ノードＮの座標を記憶するノード管理ＤＢ６００の記憶内容の一例を示す。並列処理装置１００は、上述したノードＮの座標を、ノード管理ＤＢ６００を用いて記憶する。ノード管理ＤＢ６００は、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００８９】
図６に示すように、ノード管理ＤＢ６００は、計算機名と座標とのフィールドを有する。ノード管理ＤＢ６００は、ノードＮごとに各フィールドに情報を設定することにより、ノードＮ管理情報がレコードとして記憶される。
【００９０】
計算機名のフィールドには、ノードＮを識別する名称が設定される。ノードＮを識別する名称は、例えば、「Ｎｘ」である。ノードＮを識別する名称は、具体的には、「Ｎ１〜Ｎ１２」である。座標のフィールドには、ノードＮの座標が設定される。ノードＮの座標は、例えば、「Ｘ」である。ここで、図７の説明に移行し、並列処理装置１００が、上述した複数のジョブの実行予定をどのように記憶するかについて説明する。
【００９１】
＜実行予定ＤＢ７００の記憶内容の一例＞
図７は、複数のジョブの実行予定を記憶する実行予定ＤＢ７００の記憶内容の一例を示す。並列処理装置１００は、上述した複数のジョブの実行予定を、実行予定ＤＢ７００を用いて記憶する。実行予定ＤＢ７００は、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００９２】
図７に示すように、実行予定ＤＢ７００は、ＩＤと、Ｘ座標最大値（Ｘｍａｘ）と、Ｘ座標最小値（Ｘｍｉｎ）と、ジョブ開始予定時刻（Ｊｓｔａｒｔ）と、ジョブ終了予定時刻（Ｊｅｎｄ）とのフィールドを有する。実行予定ＤＢ７００は、ジョブごとに各フィールドに情報を設定することにより、実行予定情報がレコードとして記憶される。
【００９３】
ＩＤのフィールドには、ジョブを識別するＩＤが設定される。Ｘ座標最大値のフィールドには、ＩＤが示すジョブに割り当てられたノードＮの座標の最大値が設定される。Ｘ座標最小値のフィールドには、ＩＤが示すジョブに割り当てられたノードＮの座標の最小値が設定される。
【００９４】
ジョブ開始予定時刻のフィールドには、ＩＤが示すジョブに割り当てられた時間帯の先頭時刻であり、ＩＤが示すジョブが実行開始される実行開始予定時刻が設定される。ジョブ終了予定時刻のフィールドには、ＩＤが示すジョブに割り当てられた時間帯の末尾時刻であり、ＩＤが示すジョブが実行終了される実行終了予定時刻が設定される。ここで、図８の説明に移行し、並列処理装置１００が、上述した保守開始時刻、保守終了時刻、および保守時間などの保守情報を、どのように記憶するかについて説明する。
【００９５】
＜保守情報ＤＢ８００の記憶内容の一例＞
図８は、保守情報を記憶する保守情報ＤＢ８００の記憶内容の一例を示す。並列処理装置１００は、上述した保守情報を、保守情報ＤＢ８００を用いて記憶する。保守情報ＤＢ８００は、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【００９６】
図８に示すように、保守情報ＤＢ８００は、保守開始時刻（Ｈｓｔａｒｔ）と、保守終了時刻（Ｈｅｎｄ）と、一回の保守時間（Ｈｌｏｎｇ）とのフィールドを有する。保守情報ＤＢ８００は、各フィールドに情報を設定することにより、保守情報がレコードとして記憶される。
【００９７】
保守開始時刻のフィールドには、保守作業の実施が許可された保守予定期間の先頭時刻が設定される。保守終了時刻のフィールドには、保守作業の実施が許可された保守予定期間の末尾時刻が設定される。一回の保守時間のフィールドには、保守作業にかかる所定時間が設定される。ここで、図９〜図１１の説明に移行し、並列処理装置１００が、保守領域候補リストを生成する具体例について説明する。
【００９８】
＜保守領域候補リストを生成する具体例＞
図９〜図１１は、保守領域候補リストを生成する具体例を示す。図９〜図１１において、並列処理装置１００は、システムソフトの互換性がないノードＮが混在し、ジョブが使用するノードＮが不足することを防止しやすくするために、ノードＮがどのくらいの数のノードＮを使用する傾向があるかを特定しておく。
【００９９】
そして、並列処理装置１００は、特定した数を、１つの保守領域当たりに含めることが好ましいノードＮの数を示す所定数として設定し、保守領域候補リストを生成する。結果として、並列処理装置１００は、保守領域に含まれるノードＮが保守作業を実施すれば、所定数のノードＮが使用可能になるようにすることができ、ジョブが使用するノードＮが不足することを防止しやすくすることができる。
【０１００】
図９において、並列処理装置１００は、スケジュール情報に基づいて、実行済みのジョブが使用したノードＮの数を取得する。並列処理装置１００は、取得したノードＮの数の平均値を算出し、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する。
【０１０１】
実施例１では、並列処理装置１００は、取得したノードＮの数の平均値「６」を算出し、保守領域に含めることが好ましいノードＮの数を示す所定数「６」として設定する。並列処理装置１００は、設定した保守領域に含めることが好ましいノードＮの数を示す所定数を、形状ＤＢを用いて記憶する。形状ＤＢは、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【０１０２】
図９に示すように、形状ＤＢ９００は、計算機数（Ｈｎｕｍ）と、Ｘ座標の長さ（Ｈｌｅｎ（Ｘ））とのフィールドを有する。形状ＤＢ９００は、各フィールドに情報を設定することにより、所定数情報がレコードとして記憶される。
【０１０３】
計算機数のフィールドには、実行済みのジョブが使用したノードＮの数の平均値が設定される。Ｘ座標の長さのフィールドには、保守領域に含めることが好ましいノードＮの数を示す所定数であり、グラフ上での保守領域の縦軸方向の長さを示す所定数が設定される。
【０１０４】
ここでは、並列処理装置１００が、ジョブが使用したノードＮの数の平均値を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合について説明したが、これに限らない。例えば、並列処理装置１００が、ジョブが使用したノードＮの数について、平均値以外の統計値を算出し、算出した統計値を保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合があってもよい。統計値は、例えば、中央値や最頻値などである。
【０１０５】
ここでは、並列処理装置１００が、ジョブが使用したノードＮの数の平均値を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合について説明したが、これに限らない。例えば、並列処理装置１００が、ジョブが使用したノードＮの数の平均値の代わりに、管理者によって指定された数を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定してもよい。ここで、図１０の説明に移行する。
【０１０６】
図１０において、並列処理装置１００は、ノード管理ＤＢ６００や形状ＤＢ９００に基づいて、複数の保守領域候補リストを生成する。まず、並列処理装置１００は、例えば、１つ目の保守領域の始点となる座標Ｈｏｒｇを決定する。並列処理装置１００は、決定した保守領域の始点となる座標Ｈｏｒｇから、設定されたＸ座標の長さＨｌｅｎ（Ｘ）になる保守領域を、１つ目の保守領域Ｈ（１）として設定する。次に、並列処理装置１００は、１つ目の保守領域Ｈ（１）と隣接し、設定されたＸ座標の長さＨｌｅｎ（Ｘ）になる保守領域Ｈ（２）を設定する。
【０１０７】
並列処理装置１００は、すべてのノードＮが保守領域に含まれるまで、同様に保守領域を設定し、設定した保守領域の組み合わせを、保守領域候補リストＨＬｉｓｔ（１）として生成する。ここで、並列処理装置１００は、並列処理システム２００を実現するノードＮの数が、１つの保守領域当たりに含めることが好ましいノードＮの数を示す所定数で割り切れなければ、割り切れない余りの分のノードＮを、１つの保守領域として設定する。
【０１０８】
並列処理装置１００は、１つ目の保守領域の始点となる座標Ｈｏｒｇを一つずつずらしながら、同様に、保守領域候補リストＨＬｉｓｔ（２）〜ＨＬｉｓｔ（６）を生成する。並列処理装置１００が、複数の保守領域候補リストを生成する具体例は、例えば、図１６に後述する保守領域候補リスト作成処理手順によって実現される。
【０１０９】
並列処理装置１００は、生成した保守領域候補リストＨＬｉｓｔ（１）〜ＨＬｉｓｔ（６）を、保守領域候補リストＤＢを用いて記憶する。保守領域候補リストＤＢは、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【０１１０】
図１０に示すように、保守領域候補リストＤＢ１０００は、リスト名と、保守領域Ｈ（１）のＸ座標の始まりと、保守領域Ｈ（１）のＸ座標の終わりと、保守領域Ｈ（２）のＸ座標の始まりと、保守領域Ｈ（２）のＸ座標の終わりとのフィールドを有する。保守領域候補リストＤＢ１０００は、各フィールドに情報を設定することにより、保守領域候補リストがレコードとして記憶される。
【０１１１】
リスト名のフィールドには、保守領域候補リストを識別する名称が設定される。保守領域Ｈ（１）のＸ座標の始まりのフィールドには、保守領域Ｈ（１）の始点になるＸ座標が設定される。保守領域Ｈ（１）のＸ座標の終わりのフィールドには、保守領域Ｈ（１）の終点になるＸ座標が設定される。
【０１１２】
保守領域Ｈ（２）のＸ座標の始まりのフィールドには、保守領域Ｈ（２）の始点になるＸ座標が設定される。保守領域Ｈ（２）のＸ座標の終わりのフィールドには、保守領域Ｈ（２）の終点になるＸ座標が設定される。ここで、図１１の説明に移行する。
【０１１３】
＜保守領域候補リストを選択する具体例＞
図１１は、保守領域候補リストを選択する具体例を示す。図１１において、並列処理装置１００は、複数の保守領域候補リストのうち、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい保守領域候補リストを選択する。
【０１１４】
並列処理装置１００は、スケジュールＤＢ２０６に基づいて、保守開始時刻から保守終了時刻までの保守期間において実行予定のジョブを特定し、それぞれの保守領域候補リストと比較し、比較的好ましい、いずれかの保守候補リストを選択する。
【０１１５】
ここで、保守期間において、保守領域に含まれるノードＮで、ジョブの実行予定があると、保守作業を実施した際に、ジョブの実行予定を変更することになり、ジョブの実行開始時刻が実行開始予定時刻から遅延してしまう可能性が大きくなる。このため、並列処理装置１００は、保守期間においてジョブの実行予定があるノードＮと、保守領域との重複度合いが相対的に小さくなる、保守領域候補リストを選択することが好ましい。
【０１１６】
並列処理装置１００は、具体的には、それぞれの保守領域候補リストの保守領域のＸ座標の最大値から最小値までの範囲と、ジョブに割り当てられた１以上のノードＮの座標の最大値から最小値までの範囲とを比較する。そして、並列処理装置１００は、比較した結果に基づいて、保守期間において、保守領域に含まれるノードＮでの実行予定があるジョブを特定し、保守領域に含まれるノードＮでの実行予定があるジョブの数を算出する。
【０１１７】
並列処理装置１００は、特定したジョブと、算出したジョブの数とを、比較結果ＤＢを用いて記憶する。比較結果ＤＢは、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【０１１８】
図１１に示すように、比較結果ＤＢ１１００は、リスト名と、保守領域Ｈ（１）と重なるジョブと、保守領域Ｈ（２）と重なるジョブと、重なるジョブの数とのフィールドを有する。比較結果ＤＢ１１００は、各フィールドに情報を設定することにより、比較結果がレコードとして記憶される。
【０１１９】
リスト名のフィールドには、保守領域候補リストを識別する名称が設定される。保守領域Ｈ（１）と重なるジョブのフィールドには、保守領域Ｈ（１）に含まれるノードＮでの実行予定があるジョブを識別する名称が設定される。保守領域Ｈ（２）と重なるジョブのフィールドには、保守領域Ｈ（２）に含まれるノードＮでの実行予定があるジョブを識別する名称が設定される。
【０１２０】
重なるジョブの数のフィールドには、保守領域Ｈ（１）に含まれるノードＮでの実行予定があるジョブの数と、保守領域Ｈ（２）に含まれるノードＮでの実行予定があるジョブの数との和が設定される。並列処理装置１００は、重なるジョブの数が最小である、保守領域候補リストＨＬｉｓｔ（１）を選択する。
【０１２１】
並列処理装置１００が、保守領域候補リストを選択する具体例は、例えば、図１７に後述する保守領域候補リスト選択処理手順によって実現される。ここで、図１２の説明に移行し、並列処理装置１００が、複数のスケジュール候補を生成する具体例について説明する。
【０１２２】
＜保守時間帯を割り当て、複数のスケジュール候補を生成する具体例＞
図１２は、保守時間帯を割り当て、複数のスケジュール候補を生成する具体例を示す。図１２において、並列処理装置１００は、選択した保守領域候補リストにおける保守領域Ｈ（１）と保守領域Ｈ（２）とに、重複せずに連続する保守時間帯を割り当てた、複数のスケジュール候補を生成し、評価値を算出する。
【０１２３】
並列処理装置１００は、図１２の表１２００に示すように、保守領域Ｈ（１）と保守領域Ｈ（２）とに保守時間帯を割り当てた、複数のスケジュール候補Ｓ（１）〜Ｓ（８）を生成する。図１２の表１２００の列は、保守領域Ｈ（１）に割り当てた保守時間帯の先頭時刻を示している。図１２の表１２００の行は、保守領域Ｈ（２）に割り当てた保守時間帯の先頭時刻を示している。
【０１２４】
並列処理装置１００は、それぞれのスケジュール候補Ｓ（１）〜Ｓ（８）の評価値を算出する。評価値は、スケジュール候補にしたがって保守作業を実施する場合に、ジョブの実行開始時刻が、実行開始予定時刻から遅延する時間の長さの分、値が大きくなる。評価値は、いずれかのジョブの実行開始時刻が遅延した結果、さらに他のジョブの実行開始時刻が、実行開始予定時刻から遅延する場合、他のジョブの実行開始時刻が、実行開始予定時刻から遅延する時間の長さの分、値が大きくなる。
【０１２５】
図１２の表１２００の「Ｈ（１）：ａ」は、保守領域Ｈ（１）に応じて評価値に加算される値ａを示している。図１２の表１２００の「Ｈ（２）：ｂ」は、保守領域Ｈ（２）に応じて評価値に加算される値ｂを示している。図１２の表１２００の「合計」は、評価値を示している。並列処理装置１００が、複数のスケジュール候補を生成し、評価値を算出する具体例は、例えば、図１８に後述する評価値算出処理手順によって実現される。ここで、図１３の説明に移行する。
【０１２６】
＜ジョブの実行予定を変更する具体例＞
図１３は、ジョブの実行予定を変更する具体例を示す。図１３において、並列処理装置１００は、評価値が最小であるスケジュール候補Ｓ（３）を選択する。そして、並列処理装置１００は、選択したスケジュール候補Ｓ（３）にしたがって、保守作業の実施予定を設定し、ジョブの実行予定を変更する。
【０１２７】
並列処理装置１００が、保守作業を実施する実施予定を設定し、ジョブの実行予定を変更した結果は、図１３に示すようになる。具体的には、図１３のグラフ１３００は、複数のノードＮによる、保守作業の実施予定と、複数のジョブの実行予定とを示す。図１３のグラフ１３００の縦軸は、ノードＮの座標を示す。図１３のグラフ１３００の横軸は、０１〜１１までの時刻を示す。
【０１２８】
図１３のグラフ１３００内の四角形は、保守作業またはジョブに対して、いずれのノードＮと、いずれの時間帯とが割り当てられたかを示す。図１３のグラフ１３００内の四角形の縦軸方向の辺の長さは、保守作業またはジョブに対して割り当てられたノードＮの数を示す。図１３のグラフ１３００内の四角形の横軸方向の辺の長さは、保守作業またはジョブに対して割り当てられた時間帯の長さを示す。
【０１２９】
図１３の例では、ジョブＪ１，Ｊ２，Ｊ３の実行予定は、図５と同様である。保守作業Ｈ１に対して、ノードＮ１〜Ｎ６と、時刻０６〜０７の時間帯とを割り当てた実施予定が設定される。保守作業Ｈ２に対して、ノードＮ７〜Ｎ１２と、時刻０７〜０８の時間帯とを割り当てた実施予定が設定される。
【０１３０】
ジョブＪ４の実行予定は、保守作業Ｈ１により１単位時刻遅延することになる。ジョブＪ４の実行予定は、ノードＮ１〜Ｎ６と、時刻０７〜１１の時間帯とを割り当てた実行予定に変更される。ジョブＪ５の実行予定は、保守作業Ｈ２により１単位時刻遅延することになる。ジョブＪ５の実行予定は、ノードＮ８〜Ｎ１１と、時刻０８〜１２の時間帯とを割り当てた実行予定に変更される。ここで、図１４の説明に移行し、並列処理装置１００が、保守作業の実施予定をどのように記憶するかについて説明する。
【０１３１】
＜実施予定ＤＢ１４００の記憶内容の一例＞
図１４は、保守作業の実施予定を記憶する実施予定ＤＢ１４００の記憶内容の一例を示す。並列処理装置１００は、設定した保守作業の実施予定を、実施予定ＤＢ１４００を用いて記憶する。実施予定ＤＢ１４００は、例えば、図３に示した並列処理装置１００のメモリ３０２や記録媒体３０５などの記憶領域により実現される。
【０１３２】
図１４に示すように、実施予定ＤＢ１４００は、保守領域ＩＤと、Ｘ座標の最小値と、Ｘ座標の最大値と、保守開始時刻と、保守終了時刻とのフィールドを有する。実施予定ＤＢ１４００は、保守領域ごとに各フィールドに情報を設定することにより、実施予定情報がレコードとして記憶される。
【０１３３】
保守領域ＩＤのフィールドには、保守領域を識別するＩＤが設定される。Ｘ座標の最小値のフィールドには、保守領域ＩＤが示す保守領域に含まれる１以上のノードＮの座標の最小値が設定される。Ｘ座標の最大値のフィールドには、保守領域ＩＤが示す保守領域に含まれる１以上のノードＮの座標の最大値が設定される。
【０１３４】
保守開始時刻のフィールドには、保守領域ＩＤが示す保守領域に割り当てられた保守時間帯の先頭時刻であり、保守領域ＩＤが示す保守領域について保守作業が実施開始される開始時刻が設定される。保守終了時刻のフィールドには、保守領域ＩＤが示す保守領域に割り当てられた保守時間帯の末尾時刻であり、保守領域ＩＤが示す保守領域について保守作業が実施終了される終了時刻が設定される。
【０１３５】
これにより、並列処理装置１００は、複数のノードＮを複数の保守領域に分けて段階的に保守作業を実施させ、ノードＮの保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当てやすくすることができる。
【０１３６】
並列処理装置１００は、例えば、それぞれの保守領域に含まれる、保守期間でジョブの実行予定があるノードＮの数が小さくなるように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、複数の保守領域候補リストから、それぞれの保守領域に含まれる、保守期間でジョブの実行予定があるノードＮの数が最小である保守領域候補リストを選択して、複数のスケジュール候補を生成することができる。
【０１３７】
結果として、並列処理装置１００は、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい複数のスケジュール候補を生成することができる。このため、並列処理装置１００は、評価の対象になるスケジュール候補の数を抑制し、評価にかかる処理量の低減化を図ることができる。
【０１３８】
並列処理装置１００は、例えば、少なくともいずれかの保守領域が、所定数以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、少なくともいずれかの保守領域が、１つの保守領域当たりに含めることが好ましい所定数のノードＮを含むように、保守領域候補リストを生成することができる。
【０１３９】
結果として、並列処理装置１００は、所定数のノードＮを含むいずれかの保守領域について、所定数のノードＮに一斉に保守作業を実施させれば、所定数のノードＮが使用可能になるようにすることができる。そして、並列処理装置１００は、所定数のノードＮを使用するジョブが発生しても、所定数のノードＮを使用するジョブに割り当てるノードＮが不足することを防止しやすくすることができる。
【０１４０】
並列処理装置１００は、例えば、実行済みのジョブに用いられたノードＮの数の平均値を基に、少なくともいずれかの保守領域に含めることが好ましいノードＮの数を示す所定数を設定することができる。結果として、並列処理装置１００は、少なくともいずれかの保守領域に含めることが好ましいノードＮの数を示す所定数として、過去にジョブに用いられたノードＮの数の平均値に基づいて、適当な数と判断される数を自動で設定することができる。このため、並列処理装置１００は、管理者の負担を低減化することができる。
【０１４１】
並列処理装置１００は、少なくともいずれかの保守領域が、連続的に接続された２以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、少なくともいずれかの保守領域が、連続的に接続された２以上のノードＮを含むように、保守領域候補リストを生成することができる。
【０１４２】
結果として、並列処理装置１００は、連続的に接続された２以上のノードＮを含むいずれかの保守領域について、連続的に接続された２以上のノードＮに一斉に保守作業を実施させ、連続的に接続された２以上のノードＮが使用可能になるようにすることができる。このため、並列処理装置１００は、ジョブがサブメッシュ状またはサブトーラス状になる１以上のノードＮを使用する場合に対応することができ、他のジョブの通信と干渉しないようにすることができる。
【０１４３】
並列処理装置１００は、いずれかのスケジュール候補に基づいて、複数のノードＮによるジョブの実行予定を調整することができる。結果として、並列処理装置１００は、ノードＮに対する保守作業によるノードＮで実行予定のジョブへの悪影響を抑制しつつ、ジョブに１以上のノードＮを効率よく割り当て直すことができる。また、並列処理装置１００は、保守作業が実施中であるノードＮにおいて、利用者から実行依頼されたジョブを実行しないようにすることができる。このため、並列処理装置１００は、保守作業が不安定になったり、利用者から実行依頼されたジョブが不安定になってしまうことを防止することができる。
【０１４４】
並列処理装置１００は、それぞれの保守領域に割り当てる保守時間帯が連続するように、保守期間での保守時間分の保守時間帯を保守領域間で重複しないように割り当てる、複数のスケジュール候補を生成することができる。結果として、並列処理装置１００は、システムソフトの互換性がないノードＮが混在しづらくなるように、段階的に保守作業を実施させることができる。
【０１４５】
（実施例１における保守処理手順の一例）
次に、図１５を用いて、実施例１における保守処理手順の一例について説明する。
【０１４６】
図１５は、保守処理手順の一例を示すフローチャートである。図１５において、並列処理装置１００は、保守開始時刻や保守終了時刻を含む保守情報と、ジョブの実行予定を含むスケジュール情報とを取得する（ステップＳ１５０１）。
【０１４７】
次に、並列処理装置１００は、保守情報に基づいて、図１６に後述する保守領域候補リスト作成処理を実行する（ステップＳ１５０２）。そして、並列処理装置１００は、スケジュール情報に基づいて、図１７に後述する保守領域候補リスト選択処理を実行する（ステップＳ１５０３）。
【０１４８】
次に、並列処理装置１００は、図１８に後述する評価値算出処理を実行し、複数のスケジュール候補のそれぞれのスケジュール候補の評価値を算出する（ステップＳ１５０４）。そして、並列処理装置１００は、評価値が最も大きいスケジュール候補に基づいて、再スケジューリングする（ステップＳ１５０５）。
【０１４９】
その後、並列処理装置１００は、保守処理を終了する。これにより、並列処理装置１００は、複数のノードＮを複数の保守領域に分けて段階的に保守作業を実施させ、ノードＮの保守作業によるノードＮで実行予定のジョブへの悪影響を抑制しつつ、ジョブに１以上のノードＮを効率よく割り当てやすくすることができる。
【０１５０】
（実施例１における保守領域候補リスト作成処理手順の一例）
次に、図１６を用いて、実施例１における保守領域候補リスト作成処理手順の一例について説明する。
【０１５１】
図１６は、保守領域候補リスト作成処理手順の一例を示すフローチャートである。図１６において、並列処理装置１００は、ｎ＝０と初期化し、ｉ＝１と初期化する。まず、並列処理装置１００は、ｎ＝ｎ＋１と設定する（ステップＳ１６０１）。
【０１５２】
次に、並列処理装置１００は、保守領域の始点となる座標Ｈｏｒｇ＝ｎと設定する（ステップＳ１６０２）。そして、並列処理装置１００は、始点となる座標Ｈｏｒｇに基づいて、１つ目の保守領域Ｈ（１）を設定する（ステップＳ１６０３）。次に、並列処理装置１００は、ｉ＝ｉ＋１を設定する（ステップＳ１６０４）。そして、並列処理装置１００は、ｉ番目の保守領域Ｈ（ｉ）を設定する（ステップＳ１６０５）。
【０１５３】
次に、並列処理装置１００は、保守領域が割り当てられていないノードＮがあるか否かを判定する（ステップＳ１６０６）。ここで、保守領域が割り当てられていないノードＮがある場合（ステップＳ１６０６：Ｙｅｓ）、並列処理装置１００は、ステップＳ１６０４の処理に戻る。
【０１５４】
一方で、保守領域が割り当てられていないノードＮがない場合（ステップＳ１６０６：Ｎｏ）、並列処理装置１００は、ｎ＜Ｈｎｕｍであるか否かを判定する（ステップＳ１６０７）。ここで、ｎ＜Ｈｎｕｍである場合（ステップＳ１６０７：Ｙｅｓ）、並列処理装置１００は、ステップＳ１６０１の処理に戻る。
【０１５５】
一方で、ｎ＜Ｈｎｕｍではない場合（ステップＳ１６０７：Ｎｏ）、並列処理装置１００は、保守領域候補リスト作成処理を終了する。これにより、並列処理装置１００は、複数の保守領域候補リストを作成し、図１７に後述する保守領域候補リスト選択処理において、いずれの保守領域候補リストが好ましいかを選択するための母集団を作成することができる。
【０１５６】
（実施例１における保守領域候補リスト選択処理手順の一例）
次に、図１７を用いて、実施例１における保守領域候補リスト選択処理手順の一例について説明する。
【０１５７】
図１７は、保守領域候補リスト選択処理手順の一例を示すフローチャートである。図１７において、並列処理装置１００は、いずれかの保守領域候補リストＨＬｉｓｔ（ｉ）を選択する（ステップＳ１７０１）。
【０１５８】
次に、並列処理装置１００は、選択した保守領域候補リストＨＬｉｓｔ（ｉ）のいずれかの保守領域Ｈ（ｊ）を選択する（ステップＳ１７０２）。そして、並列処理装置１００は、いずれかのジョブＪ（ｋ）を選択する（ステップＳ１７０３）。
【０１５９】
次に、並列処理装置１００は、選択した保守領域Ｈ（ｊ）の座標の最大値から最小値までの範囲と、選択したジョブＪ（ｋ）の座標の最大値から最小値までの範囲とを比較する。並列処理装置１００は、比較した結果に基づいて、保守領域Ｈ（ｊ）にジョブＪ（ｋ）が含まれるか否かを確認した結果を記憶する（ステップＳ１７０４）。
【０１６０】
そして、並列処理装置１００は、選択していないジョブがあるか否かを判定する（ステップＳ１７０５）。ここで、選択していないジョブがある場合（ステップＳ１７０５：Ｙｅｓ）、並列処理装置１００は、ステップＳ１７０３の処理に戻る。
【０１６１】
一方で、すべてのジョブを選択した場合（ステップＳ１７０５：Ｎｏ）、並列処理装置１００は、選択していない保守領域があるか否かを判定する（ステップＳ１７０６）。ここで、選択していない保守領域がある場合（ステップＳ１７０６：Ｙｅｓ）、並列処理装置１００は、ステップＳ１７０２の処理に戻る。
【０１６２】
一方で、すべての保守領域を選択した場合（ステップＳ１７０６：Ｎｏ）、並列処理装置１００は、選択していない保守領域候補リストがあるか否かを判定する（ステップＳ１７０７）。ここで、選択していない保守領域候補リストがある場合（ステップＳ１７０７：Ｙｅｓ）、並列処理装置１００は、ステップＳ１７０１の処理に戻る。
【０１６３】
一方で、すべての保守領域候補リストを選択した場合（ステップＳ１７０７：Ｎｏ）、並列処理装置１００は、ステップＳ１７０８の処理に移行する。
【０１６４】
ステップＳ１７０８では、並列処理装置１００は、それぞれの保守領域候補リストにおいて保守領域に含まれるジョブの数に基づいて、保守領域に含まれるジョブの数が最も小さくなる保守領域候補リストを選択する（ステップＳ１７０８）。
【０１６５】
そして、並列処理装置１００は、保守領域候補リスト選択処理を終了する。これにより、並列処理装置１００は、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい保守領域候補リストを選択することができ、図１８に後述する評価値算出処理にかかる処理量の低減化を図ることができる。
【０１６６】
（実施例１における評価値算出処理手順の一例）
次に、図１８を用いて、実施例１における評価値算出処理手順の一例について説明する。
【０１６７】
図１８は、評価値算出処理手順の一例を示すフローチャートである。図１８において、並列処理装置１００は、保守開始時刻から保守終了時刻までの保守予定期間における、いずれかの時刻を選択する（ステップＳ１８０１）。そして、並列処理装置１００は、選択した時刻に１つ目の保守領域Ｈ（１）を開始する場合のノードＮの重みを算出する（ステップＳ１８０２）。
【０１６８】
次に、並列処理装置１００は、２つ目以降であるｊ番目の保守領域Ｈ（ｊ）を選択する（ステップＳ１８０３）。そして、並列処理装置１００は、保守開始時刻から保守終了時刻までの保守予定期間における、いずれかの時刻を選択する（ステップＳ１８０４）。
【０１６９】
次に、並列処理装置１００は、選択した時刻にｊ番目の保守領域Ｈ（ｊ）を開始する場合のノードＮの重みを算出する（ステップＳ１８０５）。そして、並列処理装置１００は、ｊ番目の保守領域Ｈ（ｊ）について選択していない時刻があるか否かを判定する（ステップＳ１８０６）。ここで、選択していない時刻がある場合（ステップＳ１８０６：Ｙｅｓ）、並列処理装置１００は、ステップＳ１８０４の処理に戻る。
【０１７０】
一方で、すべての時刻を選択した場合（ステップＳ１８０６：Ｎｏ）、並列処理装置１００は、選択していない保守領域があるか否かを判定する（ステップＳ１８０７）。ここで、選択していない保守領域がある場合（ステップＳ１８０７：Ｙｅｓ）、並列処理装置１００は、ステップＳ１８０３の処理に戻る。
【０１７１】
一方で、すべての保守領域を選択した場合（ステップＳ１８０７：Ｎｏ）、並列処理装置１００は、１つ目の保守領域Ｈ（１）について選択していない時刻があるか否かを判定する（ステップＳ１８０８）。ここで、選択していない時刻がある場合（ステップＳ１８０８：Ｙｅｓ）、並列処理装置１００は、ステップＳ１８０１の処理に戻る。
【０１７２】
一方で、すべての時刻を選択した場合（ステップＳ１８０８：Ｎｏ）、並列処理装置１００は、算出したノードＮの重みに基づいて、時刻と保守領域とを対応付けたスケジュール候補の評価値を算出する（ステップＳ１８０９）。
【０１７３】
そして、並列処理装置１００は、評価値算出処理を終了する。これにより、並列処理装置１００は、ジョブの実行予定に与える悪影響についての観点から、いずれのスケジュール候補が好ましいかを判断する指標として用いられる、評価値を算出することができる。
【０１７４】
（実施例２）
次に、図１９〜図２５を用いて、実施例２について説明する。上述した実施例１は、並列処理システム２００を実現するノードＮの数が、グループに含めることが好ましいノードＮの数を示す所定数で割り切れる場合についての実施例である。これに対し、実施例２は、並列処理システム２００を実現するノードＮの数が、グループに含めることが好ましいノードＮの数を示す所定数で割り切れず、余りが発生する場合についての実施例である。
【０１７５】
図１９〜図２５は、実施例２を示す説明図である。実施例２では、実施例１と同様に、並列処理システム２００は、１２個のノードＮを含む。１２個のノードＮは、１次元トーラス状に接続される。それぞれのノードＮは、座標Ｘが割り当てられる。また、実施例１と同様に、保守開始時刻は０５であり、保守終了時刻は１０であるとする。時刻は、例えば、１単位時間ごとに区切られている。また、実施例１と同様に、保守時間は１単位時間であるとする。
【０１７６】
＜複数のノードＮによる複数のジョブの実行予定＞
実施例２では、実施例１と同様に、図５に示したようなジョブＪ１〜Ｊ５の実行予定があるものとする。実施例１と同様に、並列処理装置１００は、ノードＮの座標を、図６に示したノード管理ＤＢ６００を用いて記憶する。実施例１と同様に、並列処理装置１００は、複数のジョブの実行予定を、図７に示した実行予定ＤＢ７００を用いて記憶する。実施例１と同様に、並列処理装置１００は、保守情報を、図８に示した保守情報ＤＢ８００を用いて記憶する。ここで、図１９および図２０の説明に移行し、並列処理装置１００が、保守領域候補リストを生成する具体例について説明する。
【０１７７】
＜保守領域候補リストを生成する具体例＞
図１９および図２０は、保守領域候補リストを生成する具体例を示す。図１９および図２０において、並列処理装置１００は、システムソフトの互換性がないノードＮが混在し、ジョブが使用するノードＮが不足することを防止しやすくするために、ノードＮがどのくらいの数のノードＮを使用する傾向があるかを特定しておく。
【０１７８】
そして、並列処理装置１００は、特定した数を、１つの保守領域当たりに含めることが好ましいノードＮの数を示す所定数として設定し、保守領域候補リストを生成する。結果として、並列処理装置１００は、保守領域に含まれるノードＮが保守作業を実施すれば、所定数のノードＮが使用可能になるようにすることができ、ジョブが使用するノードＮが不足することを防止しやすくすることができる。
【０１７９】
図１９において、並列処理装置１００は、スケジュール情報に基づいて、実行済みのジョブが使用したノードＮの数を取得する。並列処理装置１００は、取得したノードＮの数の平均値を算出し、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する。
【０１８０】
実施例２では、並列処理装置１００は、取得したノードＮの数の平均値「５」を算出し、保守領域に含めることが好ましいノードＮの数を示す所定数「５」として設定する。並列処理装置１００は、設定した保守領域に含めることが好ましいノードＮの数を示す所定数を、形状ＤＢ１９００を用いて記憶する。形状ＤＢ１９００は、図９に示した形状ＤＢ９００と同様であるため、説明を省略する。
【０１８１】
ここでは、並列処理装置１００が、ジョブが使用したノードＮの数の平均値を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合について説明したが、これに限らない。例えば、並列処理装置１００が、ジョブが使用したノードＮの数について、平均値以外の統計値を算出し、算出した統計値を保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合があってもよい。統計値は、例えば、中央値や最頻値などである。
【０１８２】
ここでは、並列処理装置１００が、ジョブが使用したノードＮの数の平均値を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定する場合について説明したが、これに限らない。例えば、並列処理装置１００が、ジョブが使用したノードＮの数の平均値の代わりに、管理者によって指定された数を、保守領域に含めることが好ましいノードＮの数を示す所定数として設定してもよい。ここで、図２０の説明に移行する。
【０１８３】
図２０において、並列処理装置１００は、ノード管理ＤＢ６００や形状ＤＢ１９００に基づいて、複数の保守領域候補リストを生成する。ここでは、並列処理装置１００は、並列処理システム２００を実現するノードＮの数が、グループに含めることが好ましいノードＮの数を示す所定数で割り切れないため、それぞれ長さが異なる３つの保守領域を含む保守領域候補リストを生成することになる。
【０１８４】
並列処理装置１００は、実施例１と同様に、保守領域候補リストＨＬｉｓｔ（１）〜ＨＬｉｓｔ（１２）を生成する。並列処理装置１００は、生成した保守領域候補リストＨＬｉｓｔ（１）〜ＨＬｉｓｔ（６）を、保守領域候補リストＤＢ２０００を用いて記憶する。保守領域候補リストＤＢ２０００は、図１０に示した保守領域候補リストＤＢ１０００と同様であるため、説明を省略する。ここで、図２１の説明に移行する。
【０１８５】
＜保守領域候補リストを選択する具体例＞
図２１は、保守領域候補リストを選択する具体例を示す。図２１において、並列処理装置１００は、複数の保守領域候補リストのうち、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい保守領域候補リストを選択する。
【０１８６】
並列処理装置１００は、実施例１と同様に、保守期間において、保守領域に含まれるノードＮでの実行予定があるジョブを特定し、保守領域に含まれるノードＮでの実行予定があるジョブの数を算出する。並列処理装置１００は、特定したジョブと、算出したジョブの数とを、比較結果ＤＢ２１００を用いて記憶する。比較結果ＤＢ２１００は、図１１に示した比較結果ＤＢ１１００と同様であるため、説明を省略する。ここで、図２２の説明に移行する。
【０１８７】
図２２において、並列処理装置１００は、重なるジョブの数が最小である、保守領域候補リストＨＬｉｓｔ（２）および保守領域候補リストＨＬｉｓｔ（７）を選択し、選択結果２２００を記憶する。並列処理装置１００は、保守領域候補リストＨＬｉｓｔ（２）および保守領域候補リストＨＬｉｓｔ（７）のいずれかを選択してもよい。ここでは、並列処理装置１００は、保守領域候補リストＨＬｉｓｔ（２）を選択したとする。ここで、図２３の説明に移行し、並列処理装置１００が、複数のスケジュール候補を生成する具体例について説明する。
【０１８８】
＜保守時間帯を割り当て、複数のスケジュール候補を生成する具体例＞
図２３は、保守時間帯を割り当て、複数のスケジュール候補を生成する具体例を示す。図２３において、並列処理装置１００は、選択した保守領域候補リストにおける保守領域Ｈ（１）と保守領域Ｈ（２）と保守領域Ｈ（３）とに、重複せずに連続する保守時間帯を割り当てた、複数のスケジュール候補を生成し、評価値を算出する。
【０１８９】
並列処理装置１００は、図２３の表２３００に示すように、保守領域Ｈ（１）と保守領域Ｈ（２）と保守領域Ｈ（３）とに保守時間帯を割り当てた、複数のスケジュール候補Ｓ（１）〜Ｓ（１８）を生成する。
【０１９０】
並列処理装置１００は、それぞれのスケジュール候補Ｓ（１）〜Ｓ（１８）の評価値を算出する。図２３の表２３００の「重み」の欄に、ジョブの実行開始時刻が、実行開始予定時刻から遅延する時間の長さの分の重みと、評価値とが示されている。ここで、図２４の説明に移行する。
【０１９１】
＜ジョブの実行予定を変更する具体例＞
図２４は、ジョブの実行予定を変更する具体例を示す。図２４において、並列処理装置１００は、評価値が最小であるスケジュール候補Ｓ（８）およびスケジュール候補Ｓ（１０）のいずれかを選択する。ここでは、並列処理装置１００は、評価値が最小であるスケジュール候補Ｓ（８）を選択する。そして、並列処理装置１００は、選択したスケジュール候補Ｓ（８）にしたがって、保守作業の実施予定を設定し、ジョブの実行予定を変更する。
【０１９２】
並列処理装置１００が、保守作業を実施する実施予定を設定し、ジョブの実行予定を変更した結果は、図２４に示すようになる。具体的には、図２４のグラフ２４００は、複数のノードＮによる、保守作業の実施予定と、複数のジョブの実行予定とを示す。図２４のグラフ２４００の縦軸は、ノードＮの座標を示す。図２４のグラフ２４００の横軸は、０１〜１１までの時刻を示す。
【０１９３】
図２４のグラフ２４００内の四角形は、保守作業またはジョブに対して、いずれのノードＮと、いずれの時間帯とが割り当てられたかを示す。図２４のグラフ２４００内の四角形の縦軸方向の辺の長さは、保守作業またはジョブに対して割り当てられたノードＮの数を示す。図２４のグラフ２４００内の四角形の横軸方向の辺の長さは、保守作業またはジョブに対して割り当てられた時間帯の長さを示す。
【０１９４】
図２４の例では、ジョブＪ１，Ｊ２，Ｊ３の実行予定は、図５と同様である。保守作業Ｈ１に対して、ノードＮ２〜Ｎ６と、時刻０６〜０７の時間帯とを割り当てた実施予定が設定される。保守作業Ｈ２に対して、ノードＮ７〜Ｎ１１と、時刻０８〜０９の時間帯とを割り当てた実施予定が設定される。保守作業Ｈ３に対して、ノードＮ１，Ｎ１２と、時刻０７〜０８の時間帯とを割り当てた実施予定が設定される。
【０１９５】
ジョブＪ４の実行予定は、保守作業Ｈ１，Ｈ３により２単位時刻遅延することになる。ジョブＪ４の実行予定は、ノードＮ１〜Ｎ６と、時刻０８〜１２の時間帯とを割り当てた実行予定に変更される。ジョブＪ５の実行予定は、保守作業Ｈ２，Ｈ３により２単位時刻遅延することになる。ジョブＪ５の実行予定は、ノードＮ８〜Ｎ１１と、時刻０９〜１３の時間帯とを割り当てた実行予定に変更される。ここで、図２５の説明に移行する。
【０１９６】
図２５において、並列処理装置１００は、設定した保守作業の実施予定を、実施予定ＤＢ２５００を用いて記憶する。実施予定ＤＢ２５００は、図１４に示した実施予定ＤＢ１４００と同様であるため、説明を省略する。
【０１９７】
これにより、並列処理装置１００は、複数のノードＮを複数の保守領域に分けて段階的に保守作業を実施させ、ノードＮの保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当てやすくすることができる。
【０１９８】
並列処理装置１００は、例えば、それぞれの保守領域に含まれる、保守期間でジョブの実行予定があるノードＮの数が小さくなるように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、複数の保守領域候補リストから、それぞれの保守領域に含まれる、保守期間でジョブの実行予定があるノードＮの数が最小である保守領域候補リストを選択して、複数のスケジュール候補を生成することができる。
【０１９９】
結果として、並列処理装置１００は、ジョブの実行予定に与える悪影響についての観点から、比較的好ましい複数のスケジュール候補を生成することができる。このため、並列処理装置１００は、評価の対象になるスケジュール候補の数を抑制し、評価にかかる処理量の低減化を図ることができる。
【０２００】
並列処理装置１００は、例えば、少なくともいずれかの保守領域が、所定数以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、少なくともいずれかの保守領域が、１つの保守領域当たりに含めることが好ましい所定数のノードＮを含むように、保守領域候補リストを生成することができる。
【０２０１】
結果として、並列処理装置１００は、所定数のノードＮを含むいずれかの保守領域について、所定数のノードＮに一斉に保守作業を実施させれば、所定数のノードＮが使用可能になるようにすることができる。そして、並列処理装置１００は、所定数のノードＮを使用するジョブが発生しても、所定数のノードＮを使用するジョブに割り当てるノードＮが不足することを防止しやすくすることができる。
【０２０２】
並列処理装置１００は、例えば、実行済みのジョブに用いられたノードＮの数の平均値を基に、少なくともいずれかの保守領域に含めることが好ましいノードＮの数を示す所定数を設定することができる。結果として、並列処理装置１００は、少なくともいずれかの保守領域に含めることが好ましいノードＮの数を示す所定数として、過去にジョブに用いられたノードＮの数の平均値に基づいて、適当な数と判断される数を自動で設定することができる。このため、並列処理装置１００は、管理者の負担を低減化することができる。
【０２０３】
並列処理装置１００は、少なくともいずれかの保守領域が、連続的に接続された２以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。並列処理装置１００は、具体的には、少なくともいずれかの保守領域が、連続的に接続された２以上のノードＮを含むように、保守領域候補リストを生成することができる。
【０２０４】
結果として、並列処理装置１００は、連続的に接続された２以上のノードＮを含むいずれかの保守領域について、連続的に接続された２以上のノードＮに一斉に保守作業を実施させ、連続的に接続された２以上のノードＮが使用可能になるようにすることができる。このため、並列処理装置１００は、ジョブがサブメッシュ状またはサブトーラス状になる１以上のノードＮを使用する場合に対応することができ、他のジョブの通信と干渉しないようにすることができる。
【０２０５】
並列処理装置１００は、いずれかのスケジュール候補に基づいて、複数のノードＮによるジョブの実行予定を調整することができる。結果として、並列処理装置１００は、ノードＮに対する保守作業によるノードＮで実行予定のジョブへの悪影響を抑制しつつ、ジョブに１以上のノードＮを効率よく割り当て直すことができる。また、並列処理装置１００は、保守作業が実施中であるノードＮにおいて、利用者から実行依頼されたジョブを実行しないようにすることができる。このため、並列処理装置１００は、保守作業が不安定になったり、利用者から実行依頼されたジョブが不安定になってしまうことを防止することができる。
【０２０６】
並列処理装置１００は、それぞれの保守領域に割り当てる保守時間帯が連続するように、保守期間での保守時間分の保守時間帯を保守領域間で重複しないように割り当てる、複数のスケジュール候補を生成することができる。結果として、並列処理装置１００は、システムソフトの互換性がないノードＮが混在しづらくなるように、段階的に保守作業を実施させることができる。
【０２０７】
（実施例２における保守処理手順の一例）
実施例２における保守処理手順の一例は、図１５に示した実施例１における保守処理手順の一例と同様であるため、説明を省略する。
【０２０８】
（実施例２における保守領域候補リスト作成処理手順の一例）
実施例２における保守領域候補リスト作成処理手順の一例は、図１６に示した実施例１における保守領域候補リスト作成処理手順の一例と同様であるため、説明を省略する。
【０２０９】
（実施例２における保守領域候補リスト選択処理手順の一例）
実施例２における保守領域候補リスト選択処理手順の一例は、図１７に示した実施例１における保守領域候補リスト選択処理手順の一例と同様であるため、説明を省略する。
【０２１０】
（実施例２における評価値算出処理手順の一例）
実施例２における評価値算出処理手順の一例は、図１８に示した実施例１における評価値算出処理手順の一例と同様であるため、説明を省略する。
【０２１１】
以上説明したように、並列処理装置１００によれば、複数のノードＮを複数の保守領域に分け、保守期間で保守時間帯を保守領域間で重複しないように割り当てる、複数のスケジュール候補を、保守期間のノードＮでの処理の実行予定を基に評価することができる。また、並列処理装置１００によれば、評価した結果を基に、複数のスケジュール候補のいずれかのスケジュール候補を出力することができる。これにより、並列処理装置１００は、複数のノードＮを複数の保守領域に分けて段階的に保守作業を実施させ、ノードＮの保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当てやすくすることができる。
【０２１２】
並列処理装置１００によれば、それぞれの保守領域に含まれる、保守期間で処理の実行予定があるノードＮの数が小さくなるように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。これにより、並列処理装置１００は、処理の実行予定に与える悪影響についての観点から、比較的好ましい複数のスケジュール候補を生成することができる。このため、並列処理装置１００は、評価の対象になるスケジュール候補の数を抑制し、評価にかかる処理量の低減化を図ることができる。
【０２１３】
並列処理装置１００によれば、少なくともいずれかの保守領域が、所定数以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。これにより、並列処理装置１００は、いずれかの保守領域に含まれるノードＮが保守作業を実施すれば、所定数のノードＮが使用可能になるようにすることができ、処理が使用するノードＮが不足することを防止しやすくすることができる。
【０２１４】
並列処理装置１００によれば、実行済みの処理に用いられたノードＮの数の平均値を基に、いずれかの保守領域に含めることが好ましいノードＮの数を示す所定数を設定することができる。これにより、並列処理装置１００は、いずれかの保守領域に含めることが好ましいノードＮの数を示す所定数として、過去に処理に用いられたノードＮの数の平均値を基に適当な数と判断される数を自動で設定することができる。
【０２１５】
並列処理装置１００によれば、保守領域が連続的に接続された２以上のノードＮを含むように、複数のノードＮを複数の保守領域に分ける、複数のスケジュール候補を生成することができる。これにより、並列処理装置１００は、いずれかのグループに含まれるノードＮが保守作業を実施すれば、連続的に接続された２以上のノードＮが使用可能になるようにすることができる。このため、並列処理装置１００は、処理がサブメッシュ状またはサブトーラス状になる１以上のノードＮを使用する場合に対応することができ、他の処理の通信と干渉しないようにすることができる。
【０２１６】
並列処理装置１００によれば、いずれかのスケジュール候補を基に、保守期間のノードＮでの処理の実行予定を変更することができる。これにより、並列処理装置１００は、ノードＮに対する保守作業によるノードＮで実行予定の処理への悪影響を抑制しつつ、処理に１以上のノードＮを効率よく割り当て直すことができる。
【０２１７】
並列処理装置１００によれば、それぞれの保守領域に割り当てる保守時間帯が連続するように、保守期間での保守時間分の保守時間帯を保守領域間で重複しないように割り当てる、複数のスケジュール候補を生成することができる。これにより、並列処理装置１００は、システムソフトの互換性がないノードＮが混在しづらくなるように、段階的に保守作業を実施させることができる。
【０２１８】
なお、本実施の形態で説明した並列処理装置の保守方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本実施の形態で説明した並列処理プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本実施の形態で説明した並列処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０２１９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０２２０】
（付記１）第１時刻と第２時刻とを取得し、
複数のノードを複数のグループに分け、取得した前記第１時刻から前記第２時刻までの期間における、前記グループに含まれるノードの保守作業にかかる所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補のそれぞれのスケジュール候補を、前記期間における前記ノードによる処理の実行予定に基づいて評価し、
評価した結果に基づいて、前記複数のスケジュール候補のいずれかのスケジュール候補を出力する、
制御部を有することを特徴とする並列処理装置。
【０２２１】
（付記２）前記制御部は、
前記期間における前記ノードによる処理の実行予定に基づいて、前記複数のグループのそれぞれのグループに含まれる、前記期間において処理の実行予定があるノードの数が小さくなるように、前記複数のノードを前記複数のグループに分ける、前記複数のスケジュール候補を生成する、ことを特徴とする付記１に記載の並列処理装置。
【０２２２】
（付記３）前記制御部は、
前記複数のグループの少なくともいずれかのグループが、所定数以上のノードを含むように、前記複数のノードを前記複数のグループに分ける、前記複数のスケジュール候補を生成する、ことを特徴とする付記１または２に記載の並列処理装置。
【０２２３】
（付記４）実行済みの処理に用いられたノードの数の平均値に基づいて前記所定数を設定する、ことを特徴とする付記３に記載の並列処理装置。
【０２２４】
（付記５）前記グループは、連続的に接続された複数のノードを含む、ことを特徴とする付記１〜４のいずれか一つに記載の並列処理装置。
【０２２５】
（付記６）前記制御部は、
前記いずれかのスケジュール候補に基づいて、前記期間における前記ノードによる処理の実行予定を変更する、ことを特徴とする付記１〜５のいずれか一つに記載の並列処理装置。
【０２２６】
（付記７）前記制御部は、
前記複数のグループのそれぞれのグループに割り当てる時間帯が連続するように、前記期間における、前記所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補を生成する、ことを特徴とする付記１〜６のいずれか一つに記載の並列処理装置。
【０２２７】
（付記８）コンピュータが、
第１時刻と第２時刻とを取得し、
複数のノードを複数のグループに分け、取得した前記第１時刻から前記第２時刻までの期間における、前記グループに含まれるノードの保守作業にかかる所定時間分の時間帯を、前記グループ間で重複しないように割り当てる、複数のスケジュール候補のそれぞれのスケジュール候補を、前記期間における前記ノードによる処理の実行予定に基づいて評価し、
評価した結果に基づいて、前記複数のスケジュール候補のいずれかのスケジュール候補を出力する、
処理を実行することを特徴とする並列処理装置の保守方法。
【符号の説明】
【０２２８】
１００  並列処理装置
２００  並列処理システム
２０１  利用者装置
２０２  管理者装置
２０３  実行依頼
２０４  ジョブスケジューラ
２０５  保守スケジューラ
２０６  スケジュールＤＢ
２０７  ジョブ実行機構
２１０  ネットワーク
３００  バス
３０１  ＣＰＵ
３０２  メモリ
３０３  ネットワークＩ／Ｆ
３０４  記録媒体Ｉ／Ｆ
３０５  記録媒体
４００  記憶部
４０１  取得部
４０２  設定部
４０３  評価部
４０４  割当部
４０５  出力部
５００，１３００，２４００  グラフ
６００  ノード管理ＤＢ
７００  実行予定ＤＢ
８００  保守情報ＤＢ
９００，１９００  形状ＤＢ
１０００，２０００  保守領域候補リストＤＢ
１１００，２１００  比較結果ＤＢ
１２００，２３００  表
１４００，２５００  実施予定ＤＢ
２２００  選択結果
【図１】
2019012366.tif 000003
【図２】
2019012366.tif 000004
【図３】
2019012366.tif 000005
【図４】
2019012366.tif 000006
【図５】
2019012366.tif 000007
【図６】
2019012366.tif 000008
【図７】
2019012366.tif 000009
【図８】
2019012366.tif 000010
【図９】
2019012366.tif 000011
【図１０】
2019012366.tif 000012
【図１１】
2019012366.tif 000013
【図１２】
2019012366.tif 000014
【図１３】
2019012366.tif 000015
【図１４】
2019012366.tif 000016
【図１５】
2019012366.tif 000017
【図１６】
2019012366.tif 000018
【図１７】
2019012366.tif 000019
【図１８】
2019012366.tif 000020
【図１９】
2019012366.tif 000021
【図２０】
2019012366.tif 000022
【図２１】
2019012366.tif 000023
【図２２】
2019012366.tif 000024
【図２３】
2019012366.tif 000025
【図２４】
2019012366.tif 000026
【図２５】
2019012366.tif 000027