(57)【特許請求の範囲】
【請求項１】
複数のプロセスを実行可能な物理ノードがネットワーク接続されて構成されたクラスタシステムにおけるプロセスマイグレーション方法であって、
前記クラスタシステムが備えるプロセス状態監視部が、
所定の周期毎に各プロセスにおけるマイグレーションの要因となる所定の動作特性の発生を監視し、前記所定の動作特性が発生したプロセスに、当該動作特性と、その発生頻度と、当該プロセスが実行されている物理ノードを示す実行中ノードとを関連付けてマイグレーション候補のプロセスとしてマイグレーション候補リストに記録するステップを実行し、
前記クラスタシステムが備えるクラスタスケジューラが、
所定の周期毎に各物理ノードのリソース使用状況を取得してノードリストに記録するステップと、
前記マイグレーション候補リストを前記プロセス状態監視部から取得するステップと、
前記マイグレーション候補リストに記録されたプロセスの動作特性がプロセス間の関連性を示すものであるか否かで当該プロセスおよび当該プロセスと関連性を有するプロセスを示す関連プロセス群の存否を判定するステップと、
前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一であるときに、実行中ノードが当該関連プロセス群の実行中ノードと同一であって当該プロセスと関連性を有しないプロセスを示す非関連プロセスが有るか否かを前記マイグレーション候補リストを参照して判定するステップと、
前記非関連プロセスが有ると判定した場合に、前記ノードリストを参照し、前記非関連プロセスが必要とするリソースを有していて当該非関連プロセスを受入れ可能な物理ノードが存在するときに、当該物理ノードへの当該非関連プロセスのマイグレーションを指示するステップとを実行する
ことを特徴とするプロセスマイグレーション方法。
【請求項２】
請求項１に記載のプロセスマイグレーション方法において、
前記マイグレーション候補リストに記録されたプロセスの動作特性にはそれぞれ優先度が割り当てられ、
前記クラスタスケジューラは、前記優先度の高い動作特性が検知されているプロセスを優先して前記関連プロセス群の存否を判定するステップを実行する
ことを特徴とするプロセスマイグレーション方法。
【請求項３】
請求項１または請求項２に記載のプロセスマイグレーション方法において、
前記クラスタスケジューラは、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一でない場合に、前記ノードリストを参照し、当該関連プロセス群が必要とするリソースを有していて当該関連プロセス群を受入れ可能な物理ノードが存在するときに、当該関連プロセス群を構成する各プロセスの当該物理ノードへのマイグレーションを指示するステップを実行する
ことを特徴とするプロセスマイグレーション方法。
【請求項４】
複数のプロセスを実行可能な物理ノードがネットワーク接続されて構成されたクラスタシステムであって、
所定の周期毎に各プロセスにおけるマイグレーションの要因となる所定の動作特性の発生を監視し、前記所定の動作特性が発生したプロセスに、当該動作特性と、その発生頻度と、当該プロセスが実行されている物理ノードを示す実行中ノードとを関連付けてマイグレーション候補のプロセスとしてマイグレーション候補リストに記録するプロセス状態監視部と、
所定の周期毎に各物理ノードのリソース使用状況を取得してノードリストに記録し、
前記マイグレーション候補リストを前記プロセス状態監視部から取得し、
前記マイグレーション候補リストに記録されたプロセスの動作特性がプロセス間の関連性を示すものであるか否かで当該プロセスおよび当該プロセスと関連性を有するプロセスを示す関連プロセス群の存否を判定し、
前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一であるときに、実行中ノードが当該関連プロセス群の実行中ノードと同一であって当該プロセスと関連性を有しないプロセスを示す非関連プロセスが有るか否かを前記マイグレーション候補リストを参照して判定し、
前記非関連プロセスが有ると判定した場合に、前記ノードリストを参照し、前記非関連プロセスが必要とするリソースを有していて当該非関連プロセスを受入れ可能な物理ノードが存在するときに、当該物理ノードへの当該非関連プロセスのマイグレーションを指示するクラスタスケジューラと、
を備えることを特徴とするクラスタシステム。
【請求項５】
請求項４に記載のクラスタシステムにおいて、
前記マイグレーション候補リストに記録されたプロセスの動作特性にはそれぞれ優先度が割り当てられ、
前記クラスタスケジューラは、前記優先度の高い動作特性が検知されているプロセスを優先して前記関連プロセス群の存否を判定する
ことを特徴とするクラスタシステム。
【請求項６】
請求項４または請求項５に記載のクラスタシステムにおいて、
前記クラスタスケジューラは、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一でない場合に、前記ノードリストを参照し、当該関連プロセス群が必要とするリソースを有していて当該関連プロセス群を受入れ可能な物理ノードが存在するときに、当該関連プロセス群を構成する各プロセスの当該物理ノードへのマイグレーションを指示する
ことを特徴とするクラスタシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタシステムを構成する各物理ノードで実行されているプロセスの実行先ノードの再割当てを行うプロセスマイグレーション方法及びクラスタシステムに関する。
【背景技術】
【０００２】
複数の物理ノードから構成される汎用のクラスタシステムでは、ジョブを並行処理可能な実行単位に分割し、これらを複数の物理ノード（処理サーバ）に分散して同時に実行させることでスループットの向上を実現している。
【０００３】
特に、シングルシステムイメージと呼ばれるクラスタシステムでは、複数の物理ノード（以下、単に「ノード」ともいう）をまたがったプロセス空間やリソースアクセス機構を用いることにより、比較的性能の低いノードを組み合わせて仮想的に１つの巨大なノードを構成することができる（例えば、非特許文献１参照）。そのようなクラスタシステムは、数値計算をはじめとする様々な分野で利用されている。
【０００４】
特許文献１には、多数のＰＣ（Personal Computer）から構成されるＰＣクラスタリングシステムにおいて、ＰＣの稼働台数に関する制約条件を満たしつつ各ジョブの投入先のＰＣを割り当てるスケジューリング方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−７２７６８号公報
【非特許文献】
【０００６】
【非特許文献１】Christine Morin, et al. "Kerrighed : A Single System Image Cluster Operating System for High Performance Computing" In Proc. of Europar 2003 : Parallel Processing, volume 2790 of LNCS, pp.1291-1294.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記のような汎用のクラスタシステムでは、サービスの提供に必要な処理が複数ノードにまたがって協調動作することがある。その場合、ノード間の通信が頻繁に行われるとシステム全体のスループットが大きく低下することとなる。さらに、ネットワークをまたがってＣＰＵ（Central Processing Unit）やメモリなどの計算リソースを共有することも、スループット低下の要因となる。
【０００８】
また、ネットワーク処理やファイル入出力処理などカーネル空間へのコンテキストスイッチを伴う処理を頻繁に実行するプロセスが存在する場合にも、これがボトルネックとなってシステム全体のスループットが低下することとなる。
【０００９】
本発明は、前記のようなクラスタシステムにおけるスループット低下の課題を解決するためになされたものであり、クラスタシステムの各ノードで実行されているプロセスの特性や処理状況に応じてボトルネックとなっているプロセスを別のノードに動的にマイグレーションすることにより、システム全体のリソース使用を適正化して、コンピュータ資源の有効活用を図ることを目的とする。
【課題を解決するための手段】
【００１０】
前記の目的を達成するために、本発明は、複数のプロセスを実行可能な物理ノードがネットワーク接続されて構成されたクラスタシステムにおけるプロセスマイグレーション方法であって、前記クラスタシステムが備えるプロセス状態監視部が、所定の周期毎に各プロセスにおけるマイグレーションの要因となる所定の動作特性の発生を監視し、前記所定の動作特性が発生したプロセスに、当該動作特性と、その発生頻度と、当該プロセスが実行されている物理ノードを示す実行中ノードとを関連付けてマイグレーション候補のプロセスとしてマイグレーション候補リストに記録するステップを実行し、前記クラスタシステムが備えるクラスタスケジューラが、所定の周期毎に各物理ノードのリソース使用状況を取得してノードリストに記録するステップと、前記マイグレーション候補リストを前記プロセス状態監視部から取得するステップと、前記マイグレーション候補リストに記録されたプロセスの動作特性がプロセス間の関連性を示すものであるか否かで当該プロセスおよび当該プロセスと関連性を有するプロセスを示す関連プロセス群の存否を判定するステップと、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一であるときに、実行中ノードが当該関連プロセス群の実行中ノードと同一であって当該プロセスと関連性を有しないプロセスを示す非関連プロセスが有るか否かを前記マイグレーション候補リストを参照して判定するステップと、前記非関連プロセスが有ると判定した場合に、前記ノードリストを参照し、前記非関連プロセスが必要とするリソースを有していて当該非関連プロセスを受入れ可能な物理ノードが存在するときに、当該物理ノードへの当該非関連プロセスのマイグレーションを指示するステップとを実行するものとした。
【００１１】
こうすることにより、関連プロセス群が実行されているノードから他のノードに非関連プロセスを移行させるようにマイグレーションを実行することができる。したがって、クラスタシステム全体の処理を最適化することが可能となる。
【００１２】
また他の本発明は、前記のプロセスマイグレーション方法において、前記マイグレーション候補リストに記録されたプロセスの動作特性にはそれぞれ優先度が割り当てられ、前記クラスタスケジューラは、前記優先度の高い動作特性が検知されているプロセスを優先して前記関連プロセス群の存否を判定するステップを実行するものとした。
【００１３】
こうすることにより、より優先度の高い動作特性が検知されているプロセスのマイグレーションを優先して実行することができる。
【００１４】
また他の本発明は、前記のプロセスマイグレーション方法において、前記クラスタスケジューラは、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一でない場合に、前記ノードリストを参照し、当該関連プロセス群が必要とするリソースを有していて当該関連プロセス群を受入れ可能な物理ノードが存在するときに、当該関連プロセス群を構成する各プロセスの当該物理ノードへのマイグレーションを指示するものとした。
【００１５】
こうすることにより、関連性を有するすべてのプロセス群が同一の物理ノードで実行されることになるので、プロセス間通信などによるシステム全体のスループット低下を軽減することができる。
【００１６】
また他の本発明は、複数のプロセスを実行可能な物理ノードがネットワーク接続されて構成されたクラスタシステムであって、所定の周期毎に各プロセスにおけるマイグレーションの要因となる所定の動作特性の発生を監視し、前記所定の動作特性が発生したプロセスに、当該動作特性と、その発生頻度と、当該プロセスが実行されている物理ノードを示す実行中ノードとを関連付けてマイグレーション候補のプロセスとしてマイグレーション候補リストに記録するプロセス状態監視部と、所定の周期毎に各物理ノードのリソース使用状況を取得してノードリストに記録し、前記マイグレーション候補リストを前記プロセス状態監視部から取得し、前記マイグレーション候補リストに記録されたプロセスの動作特性がプロセス間の関連性を示すものであるか否かで当該プロセスおよび当該プロセスと関連性を有するプロセスを示す関連プロセス群の存否を判定し、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一であるときに、実行中ノードが当該関連プロセス群の実行中ノードと同一であって当該プロセスと関連性を有しないプロセスを示す非関連プロセスが有るか否かを前記マイグレーション候補リストを参照して判定し、前記非関連プロセスが有ると判定した場合に、前記ノードリストを参照し、前記非関連プロセスが必要とするリソースを有していて当該非関連プロセスを受入れ可能な物理ノードが存在するときに、当該物理ノードへの当該非関連プロセスのマイグレーションを指示するクラスタスケジューラと、を備えるものとした。
【００１７】
こうすることにより、関連プロセス群が実行されているノードから他のノードに非関連プロセスを移行させるようにマイグレーションを実行することができる。したがって、クラスタシステム全体の処理を最適化することが可能となる。
【００１８】
また他の本発明は、前記のクラスタシステムにおいて、前記マイグレーション候補リストに記録されたプロセスの動作特性にはそれぞれ優先度が割り当てられ、前記クラスタスケジューラは、前記優先度の高い動作特性が検知されているプロセスを優先して前記関連プロセス群の存否を判定するものとした。
【００１９】
こうすることにより、より優先度の高い動作特性が検知されているプロセスのマイグレーションを優先して実行することができる。
【００２０】
また他の本発明は、前記のクラスタシステムにおいて、前記クラスタスケジューラは、前記関連プロセス群が存在し、当該関連プロセス群の実行中ノードが同一でない場合に、前記ノードリストを参照し、当該関連プロセス群が必要とするリソースを有していて当該関連プロセス群を受入れ可能な物理ノードが存在するときに、当該関連プロセス群を構成する各プロセスの当該物理ノードへのマイグレーションを指示するものとした。
【００２１】
こうすることにより、関連性を有するすべてのプロセス群が同一の物理ノードで実行されることになるので、プロセス間通信などによるシステム全体のスループット低下を軽減することができる。
【発明の効果】
【００２２】
本発明によれば、クラスタシステムの各ノードで実行されているプロセスの特性や処理状況に応じてプロセスを別のノードに動的にマイグレーションすることにより、システム全体のリソース使用を適正化して、コンピュータ資源の有効活用を図ることができる。
【図面の簡単な説明】
【００２３】
【図１】本発明に係るクラスタシステムの構成例を示す説明図である。
【図２】クラスタスケジューラ及びプロセス状態監視部の機能ブロック図である。
【図３】タスクリストの構成及びデータ例を示す説明図である。
【図４】プロセス状態監視部によるタスクリストへの登録処理のフローチャートである。
【図５】スコアテーブルの構成及びデータ例を示す説明図である。
【図６】クラスタスケジューラによるプロセスマイグレーション処理の全体フローチャートである。
【図７】タスクリストのレコード単位のプロセスマイグレーション処理の詳細フローチャートである。
【図８】ボトルネックプロセスのマイグレーション処理の詳細フローチャートである。
【図９】非関連プロセス群のマイグレーション処理の詳細フローチャートである。
【図１０】関連プロセス群のマイグレーション処理の詳細フローチャートである。
【図１１】ノードリストの構成及びデータ例を示す説明図である。
【図１２】別ノードのプロセス同士がプロセス間通信を行っている場合のプロセスマイグレーションの動作例を示す説明図である。
【発明を実施するための形態】
【００２４】
以下、本発明を実施するための形態を、適宜図面を参照しながら説明する。
【００２５】
図１は、本発明に係るクラスタシステムの構成例を示す説明図である。
図１に示すように、クラスタシステム１００は、それぞれが汎用の処理サーバによって構成されるｎ個の物理ノードであるノード＃１（７０）、ノード＃２（７０）、・・・、ノード＃ｎ（７０）がネットワーク８０によって互いに通信可能に接続されて構成される。
ＳＳＩ（Single System Image）制御部１０は、これら複数の物理ノード７０を組み合わせて仮想的な１つのノードを構成するための制御プログラムが、各物理ノード７０において実行され、それらが協調動作することによって１つの仮想ノードとしての機能を提供する。このＳＳＩ制御部１０は、クラスタスケジューラ２０とプロセス状態監視部３０とを備える。
【００２６】
各物理ノード７０は、ＯＳ（Operating System）４０と個別ノード監視部５０とを備え、ＳＳＩ制御部１０から割り当てられた１以上のプロセス６０を並列に実行することができるようになっている。
【００２７】
クラスタスケジューラ２０は、各物理ノード７０のリソース使用状態などが記憶されているノードリスト２１を参照して各プロセスを各物理ノード７０に割り当てるとともに、その後のプロセスマイグレーションの制御を行う。
プロセス状態監視部３０は、本発明のマイグレーション候補リストとしてのタスクリスト３１に、各プロセスをマイグレーションすべきか否かを判断するための所定の動作特性などを記録する。
【００２８】
図２は、クラスタスケジューラ及びプロセス状態監視部の機能ブロック図である。
図２に示すように、プロセス状態監視部３０は、タスクリスト３１、スコアテーブル３２、システムログ参照部３３、タスクリスト更新／参照部３４、タスクリスト登録判定部３５、リソース使用状況取得部３６、タスクリスト参照受付部３７を備える。
【００２９】
システムログ参照部３３は、それぞれのノードのＯＳ４０によって記録されるシステムログのなかから個別ノード監視部５０が抽出したプロセスマイグレーションの要因となるイベントの情報を収集し、タスクリスト登録判定部３５に引き渡す。
リソース使用状況取得部３６は、それぞれのノードのＯＳ４０の機能を利用して個別ノード監視部５０が取得する各プロセスのＣＰＵ負荷及びメモリ使用量などのリソース使用状況を、個別ノード監視部５０から取得し、タスクリスト登録判定部３５に引き渡す。
【００３０】
タスクリスト登録判定部３５は、システムログ参照部３３から取得した各イベントの発生回数をスコアテーブル３２に逐次記録しておく。また、タスクリスト登録判定部３５は、スコアテーブル３２に記録したイベントの情報と、リソース使用状況取得部３６から取得したリソース使用状況に基づいて、マイグレーション候補となるプロセスを抽出し、抽出したプロセスに関する情報を登録または更新するようにタスクリスト更新／参照部３４に指示する。
このとき、タスクリスト登録判定部３５は、スコアテーブル３２に記録した各イベントについては、所定のスコア計算を行うことによって当該プロセスをマイグレーション候補とするか否かを判定する。
タスクリスト更新／参照部３４は、タスクリスト登録判定部３５からの指示にしたがってタスクリスト３１の更新を行うとともに、タスクリスト参照受付部３７からの参照要求に対してタスクリスト３１の登録内容を読み出してタスクリスト参照受付部３７に返送する。タスクリスト参照受付部３７は、外部からタスクリスト３１の参照要求を受け付けて、タスクリスト更新／参照部３４に参照要求を転送し、タスクリスト更新／参照部３４から返送されるタスクリスト３１の登録内容を、要求元に返送する。
【００３１】
また、図２に示すように、クラスタスケジューラ２０は、ノードリスト２１、タスクリスト参照部２２、ノード情報管理部２３、マイグレーション判定部２４、マイグレーション指示部２５を備える。
【００３２】
タスクリスト参照部２２は、プロセス状態監視部３０内のタスクリスト参照受付部３７に対してタスクリスト３１の参照要求を送信し、返送されるタスクリスト３１の登録内容をマイグレーション判定部２４に引き渡す。
ノード情報管理部２３は、それぞれのノードのＯＳ４０によって監視されているノードのＣＰＵ使用率及びメモリ使用量などのリソース使用状況を個別ノード監視部５０を介して取得し、ノードリスト２１に登録する。
マイグレーション判定部２４は、タスクリスト参照部２２から取得したタスクリスト３１の登録内容と、ノードリスト２１に登録されている各ノードのリソース使用状況などに基づいて、各プロセスのマイグレーション判定を行い、マイグレーションの対象とするプロセスとマイグレーション先のノードとをマイグレーション指示部２５に通知する。
マイグレーション指示部２５は、マイグレーション判定部２４からの通知に基づいて移行元と移行先とのノードのＯＳ４０にプロセスのマイグレーションを指示し、ＯＳ４０間の連携によって実際にプロセスのマイグレーションが実行される。
【００３３】
図３は、タスクリストの構成及びデータ例を示す説明図である。
図３に示すように、タスクリスト３１には、「プロセスＩＤ」、「実行中ノード」、「処理内容」、「回数」、「優先度」、及び「移行先ノード」の各フィールドからなるレコードが、マイグレーション候補となるプロセスと処理内容の組合せの数だけ登録される。
【００３４】
ここで、「プロセスＩＤ」とは、クラスタシステム１００内で各プロセスを一意に識別するためにＳＳＩ制御部１０のプロセス状態監視部３０によって付される識別子である。「実行中ノード」とは、当該プロセスが実行されているノードの識別番号である。「処理内容」とは、当該プロセスのマイグレーション要因となっている動作特性を示すものである。図３に例示したそれぞれの処理内容の意味を以下に示す。
【００３５】
ＣＰＵ＿ｌｏａｄ：当該プロセスのＣＰＵ負荷が閾値を超えた
ｍｅｍｏｒｙ＿ｕｓａｇｅ：当該プロセスのメモリ使用量が閾値を超えた
ｏｐｅｎ  ／ｐａｔｈ／ｔｏ／ｆｉｌｅ１：特定のファイルをオープンした
ｎｅｔｗｏｒｋ＿ｌｏａｄ：ネットワークにアクセスした
ｓｈｍｅｍ：共有メモリをアクセスした
ｒｐｃ＿ｔｏ  １００１０：特定のプロセスとプロセス間通信を行った
ｆｏｒｋ  １００２０，１００２１，１００２２：子プロセスを生成した
【００３６】
「回数」とは、当該プロセスにおける当該処理内容の発生回数である。この値は単位時間当たりの発生回数をカウントするものでも、ある時点からの累積の発生回数をカウントするものでもよい。「優先度」とは、それぞれの処理内容について予め設定されるマイグレーションの優先順位を示すものであり、処理内容に応じて例えば優先度「５」〜「１」の５段階で順位付けられる。この優先度の値が大きいプロセスほど優先してマイグレーションが実行される。「移行先ノード」とは、ある特定の処理内容が発生したプロセスを、予め決められた特定のノードに集約する場合の集約先のノードの識別番号である。
【００３７】
図４は、プロセス状態監視部によるタスクリストへの登録処理のフローチャートである。図４に示したタスクリストへの登録処理は一定時間毎に起動され、まずステップＳ４１にて、リソース使用状況取得部３６が、個別ノード監視部５０を介してそれぞれのノードで実行されている各プロセスのＣＰＵ負荷を取得する。次に、ステップＳ４２では、タスクリスト登録判定部３５が、ＣＰＵ負荷が閾値を超えるプロセスが有るか否かを判定し、閾値を超えるプロセスが無ければ（ステップＳ４２でＮｏ）、ステップＳ４４に処理を進める。他方、閾値を超えるプロセスが有れば（ステップＳ４２でＹｅｓ）、ステップＳ４３にて、タスクリスト更新／参照部３４が当該プロセスをタスクリスト３１に追加する。
【００３８】
ステップＳ４４では、リソース使用状況取得部３６が、個別ノード監視部５０を介してそれぞれのノードで実行されている各プロセスのメモリ使用量を取得する。次に、ステップＳ４５では、タスクリスト登録判定部３５が、メモリ使用量が閾値を超えるプロセスが有るか否かを判定し、閾値を超えるプロセスが無ければ（ステップＳ４５でＮｏ）、ステップＳ４７に処理を進める。他方、閾値を超えるプロセスが有れば（ステップＳ４５でＹｅｓ）、ステップＳ４６にて、タスクリスト更新／参照部３４が当該プロセスをタスクリスト３１に追加する。
【００３９】
ステップＳ４７では、システムログ参照部３３が、個別ノード監視部５０を介してそれぞれのノードのＯＳ４０によって記録されるシステムログからタスクリスト３１への登録判定対象となるイベントを取得する。次に、ステップＳ４８では、タスクリスト登録判定部３５が、該当するイベントが有るか否かを判定し、該当するイベントが無ければ（ステップＳ４８でＮｏ）、処理を終了する。他方、該当するイベントが有れば（ステップＳ４８でＹｅｓ）、ステップＳ４９にて、当該イベントに基づいてスコアテーブル３２を更新してスコア計算を行う。次に、タスクリスト登録判定部３５は、ステップＳ５０にて、スコアが閾値を超えるプロセスが有るか否かを判定し、閾値を超えるプロセスが無ければ（ステップＳ５０でＮｏ）、処理を終了する。他方、閾値を超えるプロセスが有れば（ステップＳ５０でＹｅｓ）、ステップＳ５１にて、タスクリスト更新／参照部３４が当該プロセスをタスクリスト３１に追加したのち、処理を終了する。
【００４０】
図５は、スコアテーブルの構成及びデータ例を示す説明図である。図５に示すように、スコアテーブル３２には、「プロセスＩＤ」、「実行中ノード」、「処理内容」、「回数」、及び「スコア」の各フィールドからなるレコードが、登録判定対象となるプロセスと処理内容の組合せの数だけ登録される。同じプロセスが複数の異なる処理内容について重複登録されることもある。
【００４１】
ここで、「プロセスＩＤ」、「実行中ノード」、「処理内容」、及び「回数」は、図３の説明において前記した通りである。「スコア」とは、当該プロセスをタスクリスト３１に追加登録するか否かの判定に用いられる評価値である。スコアの計算方法は任意であるが、例えば、処理内容に応じて重み係数Ｗ１とＷ２とを設定しておき、
スコア＝Ｗ１＋Ｗ２×回数
なる計算式によって算出すればよい。
例えば、そのようにして算出したスコアが図５のような数値になっており、閾値が「０．７」に設定されているのであれば、図５の１行目のレコード（スコアが「０．８」で閾値を超えている）に対応するプロセスが、タスクリスト３１に追加登録されることとなる。
【００４２】
図６は、クラスタスケジューラによるプロセスマイグレーション処理の全体フローチャートである。図６に示したプロセスマイグレーション処理は一定時間毎に起動され、まずステップＳ６１にて、タスクリスト参照部２２が、プロセス状態監視部３０からタスクリスト３１の登録内容を取得する。このとき、タスクリスト参照部２２はプロセス状態監視部３０内のタスクリスト参照受付部３７に対してタスクリスト３１の取得を要求し、タスクリスト参照受付部３７がタスクリスト更新／参照部３４を介して取得したタスクリスト３１の登録内容が、タスクリスト参照部２２に返送される。
【００４３】
次に、ステップＳ６２にて、マイグレーション判定部２４は、取得したタスクリスト３１の全レコードを、第一に優先度の降順で、第二に回数の値の降順でソートすることにより、未処理のタスクリストを生成する。続くステップＳ６３からステップＳ６６までの処理は、ソートされた先頭のレコードから順に繰り返し実行される。ステップＳ６３では、マイグレーション判定部２４は、ソートされた先頭のレコードを１つ取り出してマイグレーション処理（詳細は図７から図１０を用いて後記する）を実行する。
【００４４】
ステップＳ６４では、マイグレーション判定部２４は、当該レコードに対応するプロセスのマイグレーションを行ったか否かを判定し、マイグレーションを行った場合は（ステップＳ６４でＹｅｓ）、ステップＳ６５にて、当該プロセスに関するレコードをステップＳ６２で生成した未処理のタスクリストから削除する。ステップＳ６６では、マイグレーション判定部２４は、未処理のタスクリストのレコードが終了したか否かを判定し、レコードが残っていれば（ステップＳ６６でＮｏ）、ステップＳ６３に処理を戻し、レコード終了であれば（ステップＳ６６でＹｅｓ）処理を終了する。
【００４５】
図７は、タスクリストのレコード単位のプロセスマイグレーション処理（図６のステップＳ６３）の詳細フローチャートである。図７に示したプロセスマイグレーション処理は、未処理のタスクリストの先頭から取り出された１つのレコードについて実行される。まずステップＳ７１では、マイグレーション判定部２４は、当該レコードに対応するプロセスには関連プロセスが有るか否かを判定する。ここで、関連プロセスとは、処理対象のレコードに含まれる処理内容がプロセス間通信もしくは子プロセス生成である場合の相手先のプロセスまたはプロセス群を指す。判定の結果、関連プロセスが無ければ（ステップＳ７１でＮｏ）ステップＳ７２（詳細は図８を用いて後記する）に処理を進め、関連プロセスが有れば（ステップＳ７１でＹｅｓ）ステップＳ７３に処理を進めて関連プロセス群が異なるノードで実行されているか否かを判定する。ここで、関連プロセス群が異なるノードで実行されていない場合は（ステップＳ７３でＮｏ）ステップＳ７４（詳細は図９を用いて後記する）に処理を進め、関連プロセス群が異なるノードで実行されている場合は（ステップＳ７３でＹｅｓ）ステップＳ７５（詳細は図１０を用いて後記する）に処理を進める。ステップＳ７２、ステップＳ７４、またはステップＳ７５の処理を実行したのち、図６のステップＳ６４に処理を戻す。
【００４６】
ここで、マイグレーション先のノードを選択する際にマイグレーション判定部２４が参照するノードリスト２１について説明する。図１１は、ノードリストの構成及びデータ例を示す説明図である。図１１に示すように、ノードリスト２１には、「ノード番号」、「平均ＣＰＵ使用率」、「メモリ使用量」、及び「優先フラグ」の各フィールドからなるレコードが、クラスタシステム１００を構成しているノードの数だけ登録される。
【００４７】
ここで、「ノード番号」とは、クラスタシステム１００を構成しているそれぞれのノードに付される識別番号である。「平均ＣＰＵ使用率」とは、直近のある単位時間内のＣＰＵ使用率の平均値であり、例えば図１１の１行目のレコードは、ノード番号「＃１」のノードの平均ＣＰＵ使用率は「２３％」であることを示している。「メモリ使用量」とは、そのノードの総利用可能メモリ量と実際に使用されているメモリ量であり、例えば図１１の１行目のレコードは、ノード番号「＃１」のノードの総利用可能メモリ８３８８６０８ｋＢのうち２０２８８２４ｋＢが使用されていることを示している。「優先フラグ」には、所定の閾値（例えば５段階評価の場合の優先度「４」）以上の高い優先度をもつプロセス（高優先プロセス）を優先して実行させるノードに対しては”ｔｒｕｅ”が、その他のノードに対しては”ｆａｌｓｅ”が予め設定される。
【００４８】
図８は、ボトルネックプロセスのマイグレーション処理（図７のステップＳ７２）の詳細フローチャートである。図７のステップＳ７１にて関連プロセスが無いと判定されたプロセスは、それ自身がボトルネックとなっていることからタスクリスト３１に登録されたものである。そこで、図８の処理では、当該ボトルネックプロセスを受入れ可能な他のノードへのマイグレーションを試みる。
【００４９】
まずステップＳ８１にて、マイグレーション判定部２４は、当該ボトルネックプロセスの優先度の値に基づいて当該プロセスが高優先プロセスか否かを判定する。判定の結果、高優先プロセスでなければ（ステップＳ８１でＮｏ）ステップＳ８３に処理を進め、高優先プロセスであれば（ステップＳ８１でＹｅｓ）ステップＳ８２に処理を進めてノードリスト２１の優先フラグが”ｔｒｕｅ”となっているノードが有るか否かを判定する。判定の結果、優先フラグが”ｔｒｕｅ”となっているノードが有れば（ステップＳ８２でＹｅｓ）ステップＳ８４に処理を進め、優先フラグが”ｔｒｕｅ”となっているノードが無ければ（ステップＳ８２でＮｏ）ステップＳ８３に処理を進める。
【００５０】
ステップＳ８３では、マイグレーション判定部２４は、ノードリスト２１の優先フラグが”ｆａｌｓｅ”となっているノードが有るか否かを判定する。判定の結果、優先フラグが”ｆａｌｓｅ”となっているノードが有れば（ステップＳ８３でＹｅｓ）ステップＳ８４に処理を進め、優先フラグが”ｆａｌｓｅ”となっているノードが無ければ（ステップＳ８３でＮｏ）図７に処理を戻す。ステップＳ８４では、マイグレーション判定部２４は、ノードリスト２１を参照して当該ボトルネックプロセスが必要とするリソースを有していて当該プロセスを受入れ可能なノードが有るか否かを判定する。判定の結果、受入れ可能なノードが有る場合は（ステップＳ８４でＹｅｓ）ステップＳ８５に処理を進め、受入れ可能なノードが無い場合は（ステップＳ８４でＮｏ）図７に処理を戻す。
【００５１】
ステップＳ８５では、マイグレーション指示部２５が、移設元と移設先とのノードのＯＳ４０にマイグレーションを指示することにより、当該ボトルネックプロセスの当該ノードへのマイグレーションを実行したのち図７に処理を戻す。
【００５２】
図９は、非関連プロセス群のマイグレーション処理（図７のステップＳ７４）の詳細フローチャートである。図７のステップＳ７３にて関連プロセス群が異なるノードで実行されていないと判定された場合には、それら関連プロセス群はそのまま現在のノードで実行することとし、それ以外の非関連プロセス群の他のノードへのマイグレーションを試みる。
【００５３】
まずステップＳ９１にて、マイグレーション判定部２４は、当該関連プロセス群と同じノードで実行されている未処理の非関連プロセスが有るか否かを判定する。判定の結果、未処理の非関連プロセスが有れば（ステップＳ９１でＹｅｓ）ステップＳ９２に処理を進め、未処理の非関連プロセスが無ければ（ステップＳ９１でＮｏ）図７に処理を戻す。
【００５４】
ステップＳ９２からステップＳ９６までの処理は、マイグレーション対象のプロセスが非関連プロセスである点を除いて前記した図８のステップＳ８１からステップＳ８５までの処理と同様であるので、詳しい説明は省略する。マイグレーション判定部２４は、ステップＳ９６を実行したのちにステップＳ９１に処理を戻し、未処理の非関連プロセスについてステップＳ９２からステップＳ９６までの処理を繰り返す。
【００５５】
このような処理を実行することにより、関連プロセス群と同じノードで実行されているすべての非関連プロセス群について個別に他ノードへのマイグレーションが行われる。
【００５６】
図１０は、関連プロセス群のマイグレーション処理（図７のステップＳ７５）の詳細フローチャートである。図７のステップＳ７３にて関連プロセス群が異なるノードで実行されていると判定された場合には、それら関連プロセス群を一括して受入れ可能なノードへのマイグレーション（一括マイグレーション）を試みる。
【００５７】
まずステップＳ１０１にて、マイグレーション判定部２４は、当該関連プロセス群を一括して受入れ可能なノードが有るか否かを判定する。このとき、当該関連プロセス群によるリソース使用量が最も多いノードから順に受入れ可否を判定することで、プロセスのマイグレーション処理量を最小化することが好ましい。判定の結果、受入れ可能なノードが有る場合は（ステップＳ１０１でＹｅｓ）ステップＳ１０２に処理を進め、受入れ可能なノードが無い場合は（ステップＳ１０１でＮｏ）図７に処理を戻す。
【００５８】
ステップＳ１０２では、マイグレーション指示部２５が、移設元と移設先とのノードのＯＳ４０にマイグレーションを指示することにより、当該受入れ可能なノードへの当該関連プロセス群の一括マイグレーションを実行したのち図７に処理を戻す。
【００５９】
このような処理を実行することにより、異なるノードで実行されている関連プロセス群が単一のノードで実行されるようにマイグレーションを行うので、関連プロセス間でのプロセス間通信等による処理性能の低下を解消することが可能となる。
【００６０】
図１２は、別ノードのプロセス同士がプロセス間通信を行っている場合のプロセスマイグレーションの動作例を示す説明図である。この例では、ノード＃１（７０）で実行されているプロセス１−１とノード＃３（７０）で実行されているプロセス３−１との間で頻繁にプロセス間通信が行われているものとする。
【００６１】
クラスタスケジューラ２０内のノード情報管理部２３は、各ノードの個別ノード監視部５０から所定の周期で各ノードの平均ＣＰＵ使用率とメモリ使用量を取得し（<１>）、取得したデータをノードリスト２１に登録する（<２>）。また、各ノードで実行されている各プロセスのＣＰＵ使用率、メモリ使用量、システムログ等の情報は、プロセス状態監視部３０内のリソース使用状況取得部３６及びシステムログ参照部３３によって各ノードの個別ノード監視部５０から取得される（<３>）。これら取得された情報に基づいてプロセス状態監視部３０内のタスクリスト登録判定部３５がタスクリスト３１にプロセス状態を示すレコードを登録し更新する（<４>）。ここでは、ノード＃１（７０）で実行されているプロセス１−１とノード＃３（７０）で実行されているプロセス３−１との間で頻繁にプロセス間通信が行われていることを示すレコード（処理内容：ｒｐｃ＿ｔｏ）が、タスクリスト３１に記録されたものと仮定する。
【００６２】
このレコードは、クラスタスケジューラ２０内のマイグレーション判定部２４によって参照され（<５>）、マイグレーション判定部２４は、例えばノード＃１（７０）で実行されているプロセス１−１をノード＃３（７０）にマイグレーションすべきであると判断し、マイグレーション指示部２５を介して移設元となるノード＃１（７０）と移設先となるノード＃３（７０）とのＯＳ４０にマイグレーションを指示する（<６>）。それぞれのノードのＯＳ４０は、マイグレーション指示部２５からの指示にしたがって、ノード＃１（７０）で実行されているプロセス１−１のノード＃３（７０）へのマイグレーションを連携して実行する（<７>）。
【００６３】
以上説明したように、本実施形態によれば、別々のノードで実行されている関連プロセス群を単一のノードにまとめて実行させたり、関連プロセス群が実行されているノードから非関連プロセスを追い出したり、ボトルネックとなっているプロセスを予備のノードに追い出したりすることができる。したがって、クラスタシステム全体の処理を最適化することが可能となる。
【００６４】
以上にて本発明を実施するための形態の説明を終えるが、本発明の実施の態様はこれに限られるものではなく、本発明の趣旨を逸脱しない範囲において各種の変形が可能なことは言うまでもない。
【符号の説明】
【００６５】
１０  ＳＳＩ制御部
２０  クラスタスケジューラ
２１  ノードリスト
２２  タスクリスト参照部
２３  ノード情報管理部
２４  マイグレーション判定部
２５  マイグレーション指示部
３０  プロセス状態監視部
３１  タスクリスト（マイグレーション候補リスト）
３２  スコアテーブル
３３  システムログ参照部
３４  タスクリスト更新／参照部
３５  タスクリスト登録判定部
３６  リソース使用状況取得部
３７  タスクリスト参照受付部
４０  ＯＳ
５０  個別ノード監視部
６０  プロセス
７０  ノード
８０  ネットワーク
１００  クラスタシステム
【図１】
0006285850.tif 000002
【図２】
0006285850.tif 000003
【図３】
0006285850.tif 000004
【図４】
0006285850.tif 000005
【図５】
0006285850.tif 000006
【図６】
0006285850.tif 000007
【図７】
0006285850.tif 000008
【図８】
0006285850.tif 000009
【図９】
0006285850.tif 000010
【図１０】
0006285850.tif 000011
【図１１】
0006285850.tif 000012
【図１２】
0006285850.tif 000013