(57)【要約】【課題】リソース状況に応じてサービス提供に必要なプロセスの停止を回避すること。【解決手段】管理装置は、ノード群により構成されノード群のうち１以上のノードの複数のプロセスにより構成されるトレースを実行するクラスタを管理する。管理装置は、ノード群が有するプロセス群の各プロセスに関する優先度を記憶しており、トレースへのアクセス数とプロセスに関する優先度とに基づいて、トレースを構成する複数のプロセスの各々について、プロセスに関する一時的な優先度である動的優先度を算出する算出処理と、算出処理によって算出された動的優先度に基づいて、プロセス群の中から停止対象プロセスを決定する決定処理と、決定処理によって決定された停止対象プロセスを有するノードに対し、停止対象プロセスを停止するように制御する制御処理と、を実行する。【選択図】図１
2020154390.tif 000002
【特許請求の範囲】
【請求項１】
ノード群により構成され前記ノード群のうち１以上のノードの複数のプロセスにより構成されるトレースを実行するクラスタを管理する管理装置であって、
プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、
前記記憶デバイスは、前記ノード群が有するプロセス群の各プロセスに関する優先度を記憶しており、
前記プロセッサは、
前記トレースへのアクセス数と前記プロセスに関する優先度とに基づいて、前記トレースを構成する前記複数のプロセスの各々について、前記プロセスに関する一時的な優先度である動的優先度を算出する算出処理と、
前記算出処理によって算出された動的優先度に基づいて、前記プロセス群の中から停止対象プロセスを決定する決定処理と、
を実行することを特徴とする管理装置。
【請求項２】
請求項１に記載の管理装置であって、
前記算出処理では、前記プロセッサは、前記トレースへのアクセス数を前記複数のプロセスの各々に加算することにより、前記複数のプロセスの各々について、当該プロセスへのアクセス数を算出し、前記プロセスへのアクセス数と前記プロセスに関する優先度に基づいて、前記動的優先度を算出する、
ことを特徴とする管理装置。
【請求項３】
請求項１に記載の管理装置であって、
前記プロセッサは、
前記算出処理では、前記プロセッサは、前記動的優先度に基づいて、前記優先度を更新し、前記トレースへのアクセス数と前記プロセスに関する更新後の優先度とに基づいて、前記動的優先度を再算出する、
ことを特徴とする管理装置。
【請求項４】
請求項３に記載の管理装置であって、
前記プロセッサは、
前記プロセス群の中の第１プロセスに関する第１優先度が第２プロセスに関する第２優先度よりも低いが、前記第１プロセスに関する第１動的優先度が前記第２プロセスに関する第２動的優先度よりも高い場合、前記第１プロセスに関する優先度を前記第１優先度から前記第２優先度に変更し、前記第２プロセスに関する優先度を前記第２優先度から前記第１優先度に変更する、
ことを特徴とする管理装置。
【請求項５】
請求項１に記載の管理装置であって、
前記プロセッサは、
第１トレースのアクセス数よりも少ない第２トレースを構成する特定のプロセスに関する動的優先度に基づいて、前記第２トレースの中から前記停止対象プロセスを決定する、
ことを特徴とする管理装置。
【請求項６】
請求項５に記載の管理装置であって、
前記プロセッサは、
前記特定のプロセスと連携して実行される第３トレースを構成する他のプロセスに基づいて、前記特定のプロセスを前記停止対象プロセスに決定する、
ことを特徴とする管理装置。
【請求項７】
請求項６に記載の管理装置であって、
前記他のプロセスは、前記特定のプロセスと同一のノードで実行され、かつ、データへのアクセス経路が一致するプロセスである、
ことを特徴とする管理装置。
【請求項８】
請求項６に記載の管理装置であって、
前記他のプロセスは、前記特定のプロセスと同一のノードで実行され、前記特定のプロセスからの信号を受信するプロセスである、
ことを特徴とする管理装置。
【請求項９】
請求項６に記載の管理装置であって、
前記他のプロセスは、前記特定のプロセスと同一のノードで実行され、前記特定のプロセスに信号を送信するプロセスである、
ことを特徴とする管理装置。
【請求項１０】
請求項６に記載の管理装置であって、
前記プロセッサは、
前記第３トレースのアクセス数が前記第２トレースのアクセス数よりも少ない場合、前記特定のプロセスを前記停止対象プロセスに決定する、
ことを特徴とする管理装置。
【請求項１１】
請求項１に記載の管理装置であって、
前記決定処理によって決定された停止対象プロセスを有するノードに対し、前記停止対象プロセスを停止するように制御する制御処理、
を実行することを特徴とする管理装置。
【請求項１２】
ノード群により構成され前記ノード群のうち１以上のノードの複数のプロセスにより構成されるトレースを実行するクラスタを管理する管理装置が実行する管理方法であって、
前記管理装置は、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、
前記記憶デバイスは、前記ノード群が有するプロセス群の各プロセスに関する優先度を記憶しており、
前記プロセッサは、
前記トレースへのアクセス数と前記プロセスに関する優先度とに基づいて、前記トレースを構成する前記複数のプロセスの各々について、前記プロセスに関する一時的な優先度である動的優先度を算出する算出処理と、
前記算出処理によって算出された動的優先度に基づいて、前記プロセス群の中から停止対象プロセスを決定する決定処理と、
前記決定処理によって決定された停止対象プロセスを有するノードに対し、前記停止対象プロセスを停止するように制御する制御処理と、
を実行することを特徴とする管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、管理対象を管理する管理装置および管理方法に関する。
【背景技術】
【０００２】
複数の仮想マシン、複数のコンテナ、または、複数の仮想マシンおよびコンテナが、限られたハードウェアリソースを共有する環境がある。当該環境では、ハードウェアリソースを効率よく利用することで、コストの抑制とサービスの負荷に合わせた対応とを両立したいというニーズが存在する。
【０００３】
システムを構築する上でマイクロサービスアーキテクチャという考え方が存在する。マイクロサービスアーキテクチャは、システムをマイクロサービスという複数の小さな単位（以下、プロセス）に分割し、それぞれのプロセスを連携させてサービスを提供する。サービスを分割することで、必要なサービスが稼働するプロセスのみをスケーリングすることが可能になり、リソースの利用効率が向上する。
【０００４】
下記特許文献１は、クラスタシステムの各ノードで実行されているプロセスの動作特性に応じて、プロセスを別ノードにマイグレーションするプロセスマイグレーション方法を開示する。このプロセスマイグレーション方法では、プロセス状態監視部が、各プロセスについてマイグレーションの要因となる所定の動作特性を監視し、その発生頻度とともにマイグレーション候補として当該プロセスをタスクリストに記録するステップと、クラスタスケジューラが、各ノードのリソース使用状況を取得し、タスクリストに記録された各マイグレーション候補のプロセスを受入れ可能なノードが存在する場合に、当該ノードへの当該プロセスのマイグレーションを指示するステップと、を含む。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−９９９７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術は、各プロセスに対して固定の優先度を設定し、リソースが不足した際に優先度の低いプロセスを停止して、優先度の高いプロセスをデプロイする。これにより、限られたリソースの中でもプロセスのスケーリングが可能になる。しかしながら、マイクロサービスアーキテクチャのように複数のプロセスが連携してサービスを提供する環境においては、サービス間の関係やユーザの利用状況に応じて必要なプロセスが変化する。
【０００７】
そのため、プロセスの優先度の設定によっては、優先度の高いプロセスと関連のあるプロセスに低い優先度が設定されたり、負荷が増加したプロセスに低い優先度が設定されたままとなる場合がある。このような優先度の設定では、リソースが不足した際に、必要なプロセスが誤って停止され、重要なサービスがスローダウンする可能性がある。
【０００８】
本発明は、リソース状況に応じてサービス提供に必要なプロセスの停止を回避することを目的とする。
【課題を解決するための手段】
【０００９】
本願において開示される発明の一側面となる管理装置は、ノード群により構成され前記ノード群のうち１以上のノードの複数のプロセスにより構成されるトレースを実行するクラスタを管理する管理装置であって、プログラムを実行するプロセッサと、前記プログラムを記憶する記憶デバイスと、を有し、前記記憶デバイスは、前記ノード群が有するプロセス群の各プロセスに関する優先度を記憶しており、前記プロセッサは、前記トレースへのアクセス数と前記プロセスに関する優先度とに基づいて、前記トレースを構成する前記複数のプロセスの各々について、前記プロセスに関する一時的な優先度である動的優先度を算出する算出処理と、前記算出処理によって算出された動的優先度に基づいて、前記プロセス群の中から停止対象プロセスを決定する決定処理と、を実行することを特徴とする。
【発明の効果】
【００１０】
本発明の代表的な実施の形態によれば、リソース状況に応じてサービス提供に必要なプロセスの停止を回避することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００１１】
【図１】図１は、サービス提供システムのシステム構成例を示す説明図である。
【図２】図２は、プロセスの関係を示す説明図である。
【図３】図３は、コンピュータのハードウェア構成例を示すブロック図である。
【図４】図４は、サービス提供システムの機能的構成例を示すブロック図である。
【図５】図５は、ログ情報テーブルの記憶内容例を示す説明図である。
【図６】図６は、トレース情報テーブルの記憶内容例を示す説明図である。
【図７】図７は、トレース別アクセス数情報テーブルの記憶内容例を示す説明図である。
【図８】図８は、優先度情報テーブルの記憶内容例を示す説明図である。
【図９】図９は、プロセス別アクセス数情報テーブルの記憶内容例を示す説明図である。
【図１０】図１０は、動的優先度情報テーブルの記憶内容例を示す説明図である。
【図１１】図１１は、停止対象プロセスの停止制御処理手順例を示すフローチャートである。
【図１２】図１２は、図１１に示したトレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）の詳細な処理手順例を示すフローチャートである。
【図１３】図１３は、図１１に示したプロセス別アクセス数計算処理（ステップＳ１１０２）の詳細な処理手順例を示すフローチャートである。
【図１４】図１４は、図１１に示した動的優先度算出処理（ステップＳ１１０３）の詳細な処理手順例を示すフローチャートである。
【図１５】図１５は、図１１に示した優先度算出処理（ステップＳ１１０４）の詳細な処理手順例を示すフローチャートである。
【図１６】図１６は、停止対象プロセス決定処理（ステップＳ１１０８）の詳細な処理手順例を示すフローチャート１である。
【図１７】図１７は、停止対象プロセス決定処理（ステップＳ１１０８）の詳細な処理手順例を示すフローチャート２である。
【発明を実施するための形態】
【００１２】
＜システム構成例＞
図１は、サービス提供システムのシステム構成例を示す説明図である。サービス提供システム１００は、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＬＡＮ）、Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（ＷＡＮ）、インターネットのようなネットワーク１０３を介して、サービスの提供を受けるユーザの端末１０２と通信可能に接続される。
【００１３】
サービス提供システム１００は、上述したように、複数の仮想マシン、複数のコンテナ、または、複数の仮想マシンおよびコンテナが、ハードウェアリソースを共有する環境を構築する。サービス提供システム１００は、複数のプロセスを連携させて各種サービスを提供する。
【００１４】
サービス提供システム１００は、具体的には、たとえば、互いに通信可能な複数のノードＮ０〜Ｎｍ（ｍは整数）により構成される。管理ノードＮ０は、実行ノードＮ１〜Ｎｍを管理する管理装置である。実行ノードＮｉ（１≦ｉ≦ｍ）はそれぞれ、１以上のプロセスを有する。いずれかの実行ノードＮｉは、端末１０２とのユーザインタフェースを提供する。なお、「実行ノードＮｉ」と表記した場合は、実行ノードＮ１〜Ｎｍのいずれかを指すが、「ノードＮｉ」と表記した場合は、管理ノードＮ０および実行ノードＮ１〜Ｎｍのいずれかを指す。また、実行ノードＮ１〜Ｎｍの集合をクラスタ１０１と称す。
【００１５】
ここで、サービス提供システム１００でのサービス提供例について説明する。たとえば、商品の発注サービスは、ユーザ認証を実行するプロセスＡと、ユーザ認証後に在庫を確認するプロセスＢと、在庫確認後に商品について決済するプロセスＤと、により構成されているものとする。端末１０２からのリクエストにより商品の発注サービスの利用を受け付けると、サービス提供システム１００は、プロセスＡでユーザ認証し、プロセスＢでユーザが指定した商品についての在庫を確認し、プロセスＤでユーザが指定した商品の在庫があれば決済を実行する。
【００１６】
また、動画コンテンツの無料配信サービスは、ユーザ認証を実行するプロセスＡと、ユーザ認証後に動画コンテンツを端末１０２に配信するプロセスＣと、により構成されているものとする。このように、プロセスＡのように複数のサービスで共有されるプロセスが存在する。当該プロセスは利用頻度が高いため、停止されないように優先度を高く設定しておく必要がある。また、プロセスの利用頻度は、サービスの提供時間帯やユーザの種別、サービス内容により変動する。
【００１７】
また、プロセスＡのように複数のサービス間で共有されるプロセスについては、あるサービスでの利用頻度が高いが他のサービスでの利用頻度が低くなるといったケースも存在する。したがって、本実施例のサービス提供システム１００では、プロセスの利用状況を監視して、優先度を動的に変化させる。そして、停止してもよいプロセスの優先度を下げて、クラスタ１０１のハードウェアリソース不足が発生した場合に、優先度が低いプロセスから停止する。
【００１８】
＜プロセス間の関係＞
図２は、プロセス間の関係を示す説明図である。各プロセスは、その実行ノードまたは他の実行ノードに存在する他のプロセスと連携して実行される。これにより、商品の発注サービス２０１や動画コンテンツの無料配信サービス２０２が実現される。プロセス間の関係を規定する情報は、プロセスの実行順序を示すトレースとして、管理ノードＮ０によって管理される。
【００１９】
＜コンピュータのハードウェア構成例＞
図３は、コンピュータ（ノードＮｉ、端末１０２の総称）のハードウェア構成例を示すブロック図である。コンピュータ３００は、プロセッサ３０１と、記憶デバイス３０２と、入力デバイス３０３と、出力デバイス３０４と、通信インタフェース（通信ＩＦ）３０５と、を有する。プロセッサ３０１、記憶デバイス３０２、入力デバイス３０３、出力デバイス３０４、および通信ＩＦ３０５は、バス３０６により接続される。プロセッサ３０１は、コンピュータ３００を制御する。記憶デバイス３０２は、プロセッサ３０１の作業エリアとなる。また、記憶デバイス３０２は、各種プログラムやデータを記憶する非一時的なまたは一時的な記録媒体である。記憶デバイス３０２としては、たとえば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、フラッシュメモリがある。入力デバイス３０３は、データを入力する。入力デバイス３０３としては、たとえば、キーボード、マウス、タッチパネル、テンキー、スキャナがある。出力デバイス３０４は、データを出力する。出力デバイス３０４としては、たとえば、ディスプレイ、プリンタがある。通信ＩＦ３０５は、ネットワークと接続し、データを送受信する。
【００２０】
＜サービス提供システム１００の機能的構成例＞
図４は、サービス提供システム１００の機能的構成例を示すブロック図である。まず、実行ノードＮｉについて説明する。実行ノードＮｉは、１以上のプロセスと、ログ記録部４０１と、ノード管理部４０２と、を有する。なお、サービス提供部４００は、いずれかのノードＮｉにのみ実装される。プロセス、ログ記録部４０１、ノード管理部４０２、およびサービス提供部４００は、具体的には、たとえば、図２に示した記憶デバイス３０２に記憶されたプログラムを、プロセッサ３０１に実行させることにより実現する機能である。
【００２１】
ログ記録部４０１は、その実行ノードＮｉで実行されるプロセスのログを記録する。具体的には、たとえば、ログ記録部４０１は、ログとして、たとえば、プロセスを実行したユーザのユーザＩＤ、プロセスの実行開始時刻および実行終了時刻（実行開始時刻からの実行時間でもよい）、実行されたプロセスのプロセスＩＤ、実行されたプロセスを利用したサービスのサービスＩＤを含む。ユーザＩＤは、端末１０２のユーザを一意に特定する識別情報である。サービスＩＤは、サービス提供システム１００が提供するサービスを一意に特定する識別情報である。
【００２２】
ノード管理部４０２は、その実行ノードＮｉを管理する。具体的には、たとえば、ノード管理部４０２は、オペレーションシステムその他各種ライブラリによりプロセスを実行する仮想マシンを、ハイパーバイザ上に構築する。また、ノード管理部４０２は、コンテナ管理ソフトウェアその他各種ライブラリによりプロセスを実行するコンテナを、オペレーションシステム上に構築する。
【００２３】
サービス提供部４００は、端末１０２とのインタフェースを提供する。具体的には、たとえば、サービス提供部４００は、端末１０２からのサービスのリクエストを受け付けて、当該リクエストに応じたサービスを構成するプロセス群を特定して、特定したプロセスを有する実行ノードＮｉにプロセスを実行させ、端末１０２に実行結果を出力する。
【００２４】
つぎに、管理ノードＮ０について説明する。管理ノードＮ０は、ログ情報テーブル４１１と、トレース情報テーブル４１２と、トレース別アクセス数情報テーブル４１３と、優先度情報テーブル４１４と、プロセス別アクセス数情報テーブル４１５と、動的優先度情報テーブル４１６と、を有する。これらテーブルは、具体的には、たとえば、図２に示した記憶デバイス３０２により実現される。
【００２５】
ログ情報テーブル４１１は、ログ情報を管理するテーブルである。詳細は図５で後述する。トレース情報テーブル４１２は、トレース情報を管理するテーブルである。詳細は図６で後述する。トレース別アクセス数情報テーブル４１３は、トレース別アクセス数情報を管理するテーブルである。詳細は図７で後述する。優先度情報テーブル４１４は、優先度情報を管理するテーブルである。詳細は図８で後述する。プロセス別アクセス数情報テーブル４１５は、プロセス別アクセス数情報を管理するテーブルである。詳細は図９で後述する。動的優先度情報テーブル４１６は、動的優先度情報を管理するテーブルである。詳細は図１０で後述する。
【００２６】
また、管理ノードＮ０は、ログ収集部４２１と、トレース管理部４２２と、プロセス別アクセス数計算部４２３と、優先度算出部４２４と、クラスタ管理部４２５と、停止対象決定部４２６と、を有する。ログ収集部４２１と、トレース管理部４２２、プロセス別アクセス数計算部４２３、優先度算出部４２４、クラスタ管理部４２５、および停止対象決定部４２６は、具体的には、たとえば、図２に示した記憶デバイス３０２に記憶されたプログラムを、プロセッサ３０１に実行させることにより実現する機能である。
【００２７】
ログ収集部４２１は、クラスタ１０１からログを収集してログ情報を生成し、ログ情報テーブル４１１に格納する。トレース管理部４２２は、ログ情報からトレース情報を生成し、トレース情報テーブル４１２に格納する。また、トレース管理部４２２は、トレース別アクセス数情報を生成し、トレース別アクセス数情報テーブル４１３に格納する。
【００２８】
プロセス別アクセス数計算部４２３は、トレース別アクセス数情報からプロセス別アクセス数情報を計算し、プロセス別アクセス数情報テーブル４１５に格納する。優先度算出部４２４は、優先度情報から動的優先度を計算し、動的優先度情報テーブル４１６に格納する。クラスタ管理部４２５は、動的優先度から停止対象の候補となるプロセス（停止対象候補プロセス）を決定し、停止対象決定部４２６に出力する。
【００２９】
また、クラスタ管理部４２５は、停止対象決定部４２６から停止対象プロセスが指定されると、停止対象プロセスを有する実行ノードＮｉのノード管理部４０２に、停止対象プロセスを停止させる。停止対象決定部４２６は、ログ情報、トレース情報、トレース別アクセス数情報、動的優先度情報、および停止対象候補プロセスを用いて、停止対象プロセスを決定し、クラスタ管理部４２５に通知する。
【００３０】
＜各種テーブルの具体例＞
図５は、ログ情報テーブル４１１の記憶内容例を示す説明図である。ログ情報テーブル４１１は、フィールドとして、プロセス５０１、ノードＩＤ５０２、プロセスＩＤ５０３、トレースＩＤ５０４、親ＩＤ５０５、共有ＦＤＩＤ５０６、シグナル送信先プロセスＩＤ５０７を有する。各行の各フィールドの値の組み合わせが、それぞれログ情報となるエントリを示す。ログ情報は、プロセスが実行された時系列順に、１から始まる昇順のエントリ番号＃でログ情報テーブル４１１に登録される。
【００３１】
プロセス５０１は、値としてプロセスの一意の識別情報である。ノードＩＤ５０２は、プロセス５０１を有するノードを一意に特定する識別情報である。プロセスＩＤ５０３は、端末１０２へのサービス提供ごとにプロセス５０１を一意に特定する識別情報である。したがって、同一のプロセス５０１が同一または異なるサービスで実行されている場合、そのプロセス５０１には別のプロセスＩＤ５０１が付与される。
【００３２】
たとえば、エントリ＃１では、ノードＮ１が商品の発注サービス２０１でプロセスＡを実行したことを示すが、エントリ＃３では、ノードＮ１が動画コンテンツの無料配信サービス２０２でプロセスＡを実行したことを示す。プロセス５０１、ノードＩＤ５０２、およびプロセスＩＤ５０３は、プロセス５０１を実行した実行ノードＮｉで生成される。
【００３３】
トレースＩＤ５０４は、トレースを一意に特定する識別情報である。トレースとは、サービスでのプロセス５０１の実行順序である。たとえば、トレースＩＤ５０４の値が「１００」であるプロセス５０１は、エントリ＃１の「Ａ」、エントリ＃２の「Ｂ」およびエントリ＃４の「Ｄ」である。すなわち、トレースＩＤ５０４が同一のプロセス５０１は、ある端末１０２に提供されたサービスで実行されたプロセスである。トレースＩＤ５０４は、たとえば、サービス提供部４００を有する実行ノードＮｉによってサービスごとに付与される。
【００３４】
親ＩＤ５０５は、トレースＩＤ５０４が共通するプロセス群において実行位置を規定する識別情報である。親ＩＤ５０５は、０から始まる昇順の整数である。トレースＩＤ５０４の値が「１００」であるプロセス５０１は、エントリ＃１の「Ａ」、エントリ＃２の「Ｂ」およびエントリ＃４の「Ｄ」である。エントリ＃１のプロセスＡの親ＩＤ５０５は「０」、エントリ＃２のプロセスＢの親ＩＤ５０５は「１」、エントリ＃４のプロセスＤの親ＩＤ５０５は「２」である。したがって、トレースＩＤ５０４の値が「１００」であるプロセス群は、プロセスＡ→プロセスＢ→プロセスＤの順に実行されたことを示す。親ＩＤ５０５は、たとえば、サービス提供部４００を有する実行ノードＮｉまたはログ収集部４２１によって付与される。
【００３５】
共有ＦＤＩＤ５０６は、共有するファイルディスクリプタ（ファイル記述子）を一意に特定する識別情報である。ファイルディスクリプタには、識別情報のほか、アクセス先のファイル名、ファイルサイズ、ファイル内のプロセスの操作位置、ファイルの作成日時や更新日時が含まれる。共有ＦＤＩＤ５０６が存在する複数のプロセスは、同一のファイルにアクセスしたことがわかる。
【００３６】
シグナル送信先プロセスＩＤ５０７は、シグナル送信先となるプロセス５０１のプロセスＩＤ５０２である。たとえば、エントリ＃ＷのプロセスＢは、シグナル送信先プロセスＩＤ５０７の値が「１００２」であるため、プロセスＩＤ５０２の値が「１００２」であるエントリ＃６のプロセスＥに信号を送信したことになる。共有ＦＤＩＤ５０６およびシグナル送信先プロセスＩＤ５０７は、プロセス５０１を実行した実行ノードＮｉで生成される。
【００３７】
図６は、トレース情報テーブル４１２の記憶内容例を示す説明図である。トレース情報テーブル４１２は、フィールドとして、トレースＩＤ５０４およびトレース６００を有する。各行の各フィールドの値の組み合わせが、それぞれトレース情報となるエントリを示す。
【００３８】
トレース６００は、プロセス５０１の実行順序である。たとえば、エントリ＃１は、プロセスＡ→プロセスＢ→プロセスＤの順に実行される商品の発注サービス２０１を示すトレース情報であり、エントリ＃２は、プロセスＡ→プロセスＣの順に実行される動画コンテンツの無料配信サービス２０２を示すトレース情報である。なお、トレースＩＤ５０４が異なれば、同一トレース６００のエントリが複数記録される。
【００３９】
図７は、トレース別アクセス数情報テーブル４１３の記憶内容例を示す説明図である。トレース別アクセス数情報テーブル４１３は、フィールドとして、トレース６００およびアクセス数７００−１〜７００−ｎを有する。各行の各フィールドの値の組み合わせが、それぞれトレース別アクセス数情報となるエントリを示す。
【００４０】
アクセス数７００−１〜７００−ｎは、トレース管理部４２２によって計測された１回目の計測期間Δ１からｎ（１以上の整数）回目の計測期間Δｎまでのトレース別のアクセス数である。計測期間Δｎは、前回の計測期間Δｎ−１の計測時から今回の計測期間Δｎの計測時までの間の期間である。トレース別のアクセス数とは、端末１０２がサービスの提供を受けるためにそのサービスであるトレース６００にアクセスした回数である。サービスの提供回数とも言える。
【００４１】
図８は、優先度情報テーブル４１４の記憶内容例を示す説明図である。優先度情報テーブル４１４は、フィールドとして、ランク８００と、プロセス５０１と、優先度８０１を有する。各行の各フィールドの値の組み合わせが、それぞれ優先度情報となるエントリを示す。ランク８００は、優先度８０１の順位を示す。ランク８００の値が小さいほど優先度８０１が高い順位を示す。優先度８０１は、停止対象を決定するための優先順位を規定する情報である。具体的には、たとえば、優先度の値が小さいほど（ランク８００が低いほど）停止対象に選ばれやすいプロセス５０１である。優先度の値自体は固定値である。
【００４２】
図９は、プロセス別アクセス数情報テーブル４１５の記憶内容例を示す説明図である。プロセス別アクセス数情報テーブル４１５は、フィールドとして、プロセス５０１およびアクセス数９００−１〜９００−ｎを有する。各行の各フィールドの値の組み合わせが、それぞれ優先度情報となるエントリを示す。
【００４３】
アクセス数９００−１〜９００−ｎは、プロセス別アクセス数計算部４２３によって計測された計測期間Δ１から計測期間Δｎまでのプロセス別のアクセス数である。プロセス別のアクセス数とは、端末１０２がサービスの提供を受けるためにそのサービスであるトレース６００内のプロセス５０１にアクセスした回数である。プロセス５０１の実行回数とも言える。
【００４４】
図１０は、動的優先度情報テーブル４１６の記憶内容例を示す説明図である。動的優先度情報テーブル４１６は、フィールドとして、プロセス５０１および動的優先度１０００−１〜１０００−ｎを有する。各行の各フィールドの値の組み合わせが、それぞれ動的優先度情報となるエントリを示す。
【００４５】
動的優先度１０００−ｎは、計測期間Δｎでのプロセス５０１に関する一時的な優先度である。動的優先度１０００−ｎは、プロセス５０１別のアクセス数が加算された値である。
【００４６】
＜停止対象プロセスの停止制御処理手順例＞
図１１は、停止対象プロセスの停止制御処理手順例を示すフローチャートである。トレース管理部４２２は、トレース情報およびトレース別アクセス数情報作成処理を実行する（ステップＳ１１０１）。トレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）は、トレース管理部４２２がトレース情報およびトレース別アクセス数情報を作成する処理であり、図１２で後述する。
【００４７】
プロセス別アクセス数計算部４２３は、プロセス別アクセス数計算処理を実行する（ステップＳ１１０２）。プロセス別アクセス数計算処理（ステップＳ１１０２）は、プロセス別アクセス数計算部４２３がプロセス別アクセス数を計算する処理であり、図１３で後述する。
【００４８】
優先度算出部４２４は、動的優先度算出処理を実行する（ステップＳ１１０３）。動的優先度算出処理（ステップＳ１１０３）は、優先度算出部４２４が動的優先度を計算する処理であり、図１４で後述する。
【００４９】
優先度算出部４２４は、優先度情報テーブル４１４を更新するか否かを判断する（ステップＳ１１０４）。具体的には、たとえば、管理ノードＮ０は、前回の優先度算出処理（ステップＳ１１０５）から、動的優先度情報テーブル４１６の更新が所定回数実行されたか否かを判断する。所定回数実行されていない場合、優先度算出部４２４は、優先度情報テーブル４１４の更新タイミングではないと判断し（ステップＳ１１０４：Ｎｏ）、ステップＳ１１０６に移行する。
【００５０】
一方、所定回数実行された場合、優先度算出部４２４は、優先度情報テーブル４１４の更新タイミングであると判断する（ステップＳ１１０４：Ｙｅｓ）。この場合、優先度算出部４２４は、優先度算出処理を実行する（ステップＳ１１０５）。優先度算出処理（ステップＳ１１０５）は、優先度算出部４２４が優先度を計算する処理であり、図１５で後述する。
【００５１】
ステップＳ１１０６では、優先度算出部４２４は、ステップＳ１１０５で計算された動的優先度（Δｎ）１０００−ｎをクラスタ管理部４２５に送信する（ステップＳ１１０６）。
【００５２】
クラスタ管理部４２５は、動的優先度（Δｎ）１０００−ｎから停止対象候補プロセスを決定し、停止対象決定部４２６に送信する（ステップＳ１１０７）。停止対象候補プロセスの決定は、動的優先度（Δｎ）１０００−ｎを用いて既存技術で実行可能である。たとえば、クラスタ管理部４２５は、動的優先度（Δｎ）１０００−ｎが所定優先度よりも低いプロセス５０１を、停止対象候補プロセスに決定する。
【００５３】
クラスタ管理部４２５は、動的優先度（Δｎ）１０００−ｎが相対的に低いプロセス５０１を、停止対象候補プロセスに決定する。クラスタ管理部４２５は、停止すればハードウェアリソース不足が解消されてより動的優先度（Δｎ）１０００−ｎが高い他のプロセス５０１がデプロイ可能となるプロセス５０１を、停止対象候補プロセスに決定する。
【００５４】
停止対象決定部４２６は、停止対象プロセス決定処理を実行する（ステップＳ１１０８）。停止対象プロセス決定処理（ステップＳ１１０８）は、停止対処決定部が、停止対象プロセスを決定する処理であり、図１６で後述する。停止対象決定部４２６は、決定した停止対象プロセスをクラスタ管理部４２５に通知する（ステップＳ１１０９）。
【００５５】
このあと、クラスタ管理部４２５は、通知を受けた停止対象プロセスを有する実行ノードＮｉに、停止対象プロセスを停止するよう指示する。これにより、指示された実行ノードＮｉは、停止対象プロセスを停止し、これにともない、停止対象プロセスを含むサービスも停止する。
【００５６】
＜トレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）＞
図１２は、図１１に示したトレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）の詳細な処理手順例を示すフローチャートである。
【００５７】
なお、運用開始時では、たとえば、トレース情報テーブル４１２およびトレース別アクセス数情報テーブル４１３は、空のテーブルである。ただし、あらかじめ、トレース６００およびトレースＩＤ５０４が登録されている場合もある。また、運用中では、トレース別アクセス数情報テーブル４１３のアクセス数（Δｎ）７００−ｎの列は空であり、トレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）の実行によりアクセス数（Δｎ）７００−ｎの値が記録される。
【００５８】
トレース管理部４２２は、ログ情報テーブル４１１からトレースＩＤ５０４が同一のログ情報を選択する（ステップＳ１２０１）。具体的には、たとえば、ログ情報テーブル４１１のエントリ＃１、＃２、＃４のトレースＩＤ５０４の値はいずれも「１００」であるため、トレース管理部４２２は、エントリ＃１、＃２、＃４を同一のログ情報として選択する。ステップＳ１２０１で取り出された１以上のエントリ群を「対象エントリ群」と称す。
【００５９】
つぎに、トレース管理部４２２は、親ＩＤ５０５の変数ＮをＮ＝０に設定する（ステップＳ１２０２）。トレース管理部４２２は、親ＩＤ５０５の値がＮであるプロセス５０１が対象エントリ群に存在するか否かを判断する（ステップＳ１２０３）。存在する場合（ステップＳ１２０３：Ｙｅｓ）、親ＩＤ５０５の値がＮであるプロセス５０１をトレース６００の最後尾に追加する（ステップＳ１２０４）。トレース管理部４２２は、Ｎに１加算して（ステップＳ１２０５）、ステップＳ１２０３に戻る。上記の対象エントリ群（＃１、＃２、＃４）の場合、親ＩＤ５０５の値ＮがＮ＝０のプロセスＡ、親ＩＤ５０５の値ＮがＮ＝１のプロセスＢ、親ＩＤ５０５の値ＮがＮ＝２のプロセスＤの順に追加されて、トレースとして「Ａ→Ｂ→Ｄ」が生成される。
【００６０】
トレース管理部４２２は、親ＩＤ５０５がＮのプロセス５０１が存在しない場合（ステップＳ１２０３：Ｎｏ）、ステップＳ１２０６に移行する。上記の対象エントリ群（＃１、＃２、＃４）の場合、親ＩＤ５０５の値ＮがＮ＝３のエントリは存在しないため、ステップＳ１２０６に移行する。ステップＳ１２０３〜Ｓ１２０５で作成されたトレース６００を「対象トレース６００」と称す。
【００６１】
ステップＳ１２０３：Ｎｏのあと、トレース管理部４２２は、対象トレース６００がすでにトレース情報テーブル４１２に存在するか否かを判断する（ステップＳ１２０６）。存在しない場合（ステップＳ１２０６：Ｎｏ）、トレース管理部４２２は、対象エントリ群が共有するトレースＩＤ５０４および対象トレース６００を新規のトレース情報のエントリとしてトレース情報テーブル４１２に登録する。また、トレース管理部４２２は、対象トレース６００を、トレース別アクセス数情報テーブル４１３に新規のトレース別アクセス数情報のエントリとしてトレース別アクセス数情報に登録し、当該エントリの現在のアクセス数（Δｎ）７００−ｎの値を「１」に設定する（ステップＳ１２０７）。そして、ステップＳ１２０９に移行する。
【００６２】
一方、対象トレースがトレース情報テーブル４１２にすでに存在する場合（ステップＳ１２０６：Ｙｅｓ）、トレース管理部４２２は、トレース別アクセス数情報テーブル４１３において、対象トレース６００のエントリの現在のアクセス数（Δｎ）７００−ｎの値を１加算して、ステップＳ１２０９に移行する。
【００６３】
ステップＳ１２０９では、トレース管理部４２２は、ステップＳ１２０１で未選択のトレースＩＤ５０４が存在するか否かを判断し（ステップＳ１２０９）、未選択のトレースＩＤ５０４が存在する場合（ステップＳ１２０９：Ｙｅｓ）、ステップＳ１２０１に戻る。一方、未選択のトレースＩＤ５０４が存在しない場合（ステップＳ１２０９：Ｎｏ）、トレース管理部４２２は、トレース情報およびトレース別アクセス数情報作成処理（ステップＳ１１０１）を終了して、ステップＳ１１０２に移行する。これにより、トレース情報テーブル４１２およびトレース別アクセス数情報テーブル４１３が更新される。
【００６４】
＜プロセス別アクセス数計算処理（ステップＳ１１０２）＞
図１３は、図１１に示したプロセス別アクセス数計算処理（ステップＳ１１０２）の詳細な処理手順例を示すフローチャートである。なお、運用開始時および運用中では、たとえば、プロセス別アクセス数情報テーブル４１５のアクセス数（Δｎ）９００−ｎの列は空であり、プロセス別アクセス数計算処理（ステップＳ１１０２）の実行によりアクセス数（Δｎ）９００−ｎの値が記録される。
【００６５】
プロセス別アクセス数計算部４２３は、優先度情報テーブル４１４から未選択のプロセス５０１を１つ選択する（ステップＳ１３０１）。プロセス別アクセス数計算部４２３は、後述するステップＳ１３０３での選択トレースのアクセス数の合計値Ｔに０を設定する（ステップＳ１３０２）。
【００６６】
プロセス別アクセス数計算部４２３は、ステップＳ１１０１で更新されたトレース別アクセス数情報テーブル４１３からトレース６００を１つ選択する（ステップＳ１３０３）。プロセス別アクセス数計算部４２３は、ステップＳ１３０３での選択トレース６００に選択プロセス５０１が含まれているか否かを判断する（ステップＳ１３０４）。たとえば、選択トレース６００が「Ａ→Ｂ→Ｄ」で、かつ、選択プロセス５０１が「Ａ」であれば、選択トレース６００に選択プロセス５０１が含まれており、選択プロセス５０１が「Ｃ」であれば、選択トレース６００に選択プロセス５０１が含まれていない。
【００６７】
選択トレース６００に選択プロセス５０１が含まれている場合（ステップＳ１３０４：Ｙｅｓ）、プロセス別アクセス数計算部４２３は、プロセス別アクセス数情報テーブル４１５において選択トレース６００のエントリのアクセス数（Δｎ）９００−ｎの値を、合計値Ｔに加算して（ステップＳ１３０５）、ステップＳ１３０６に移行する。一方、選択トレース６００に選択プロセス５０１が含まれていない場合（ステップＳ１３０４：Ｎｏ）、プロセス別アクセス数計算部４２３は、ステップＳ１３０６に移行する。
【００６８】
ステップＳ１３０６において、プロセス別アクセス数計算部４２３は、ステップＳ１３０３で未選択トレース６００が存在するか否かを判断する（ステップＳ１３０６）。未選択トレース６００が存在する場合（ステップＳ１３０６：Ｙｅｓ）、ステップＳ１３０３に戻る。一方、未選択トレース６００が存在しない場合（ステップＳ１３０６：Ｎｏ）、プロセス別アクセス数計算部４２３は、プロセス別アクセス数情報テーブル４１５において、合計値Ｔを選択プロセス５０１のプロセス別アクセス数として、選択プロセス５０１のエントリのアクセス数（Δｎ）９００−ｎに記録する（ステップＳ１３０７）。
【００６９】
そして、プロセス別アクセス数計算部４２３は、ステップＳ１３０８で未選択プロセス５０１が存在するか否かを判断する（ステップＳ１３０８）。未選択プロセス５０１が存在する場合（ステップＳ１３０８：Ｙｅｓ）、ステップＳ１３０１に戻る。一方、未選択プロセス５０１が存在しない場合（ステップＳ１３０８：Ｎｏ）、プロセス別アクセス数計算部４２３は、プロセス別アクセス数計算処理（ステップＳ１１０２）を終了して、ステップＳ１１０３に移行する。これにより、トレース情報テーブル４１２およびプロセス別アクセス数情報テーブル４１５が更新される。
【００７０】
＜動的優先度算出処理（ステップＳ１１０３）＞
図１４は、図１１に示した動的優先度算出処理（ステップＳ１１０３）の詳細な処理手順例を示すフローチャートである。なお、運用開始時および運用中では、たとえば、動的優先度情報テーブル４１６のアクセス数（Δｎ）１０００−ｎの列は空であり、動的優先度算出処理（ステップＳ１１０３）の実行によりアクセス数（Δｎ）１０００−ｎの値が記録される。
【００７１】
優先度算出部４２４は、変数Ｎを１に設定する（ステップＳ１４０１）。優先度算出部４２４は、ステップＳ１１０２で更新されたプロセス別アクセス数情報テーブル４１５からアクセス数（Δｎ）９００−ｎがＮ番目に多いプロセス５０１を選択する（ステップＳ１４０２）。ｎ＝２の場合、Ｎ＝１であれば、アクセス数（Δ２）９００−２で１番目に多い値「１４０」のエントリ＃１のプロセス５０１として「Ａ」が選択される。
【００７２】
優先度算出部４２４は、アクセス数（Δｎ）９００−ｎがＮ番目に多い選択プロセス５０１が複数存在するか否かを判断する（ステップＳ１４０３）。複数存在しない場合（ステップＳ１４０３：Ｎｏ）、優先度算出部４２４は、動的優先度情報テーブル４１６において、アクセス数（Δｎ）９００−ｎがＮ番目に多い選択プロセス５０１のエントリの今回の動的優先度（Δｎ）１０００−ｎに、優先度情報テーブル４１４においてＮ番目に高い優先度８０１の値を記録する（ステップＳ１４０４）。
【００７３】
たとえば、上記の例で、動的優先度情報テーブル４１６において、アクセス数（Δｎ）９００−ｎがＮ番目に多い選択プロセス５０１である「Ａ」のエントリ＃１の今回の動的優先度（Δｎ）１０００−２に、優先度情報テーブル４１４において１番目に高い優先度８０１の値「９０」を記録する。このあと、優先度算出部４２４は、Ｎに１を加算して（ステップＳ１４０５）、ステップＳ１４１１に移行する。
【００７４】
一方、アクセス数（Δｎ）９００−ｎがＮ番目に多い選択プロセス５０１が複数存在する場合（ステップＳ１４０３：Ｙｅｓ）、当該複数の選択プロセス５０１間で優劣をつける必要がある。この場合、優先度算出部４２４は、変数Ｍに０を設定し（ステップＳ１４０６）、Ｍに１を加算する（ステップＳ１４０７）。優先度算出部４２４は、アクセス数（Δｎ）９００−ｎがＮ番目に多い複数の選択プロセス５０１のうち、優先度８０１がＭ番目に高い選択プロセス５０１のエントリの今回の動的優先度（Δｎ）１０００−ｎに、優先度情報テーブル４１４において（Ｎ＋Ｍ−１）番目に高い優先度８０１の値を記録する（ステップＳ１４０８）。
【００７５】
このあと、優先度算出部４２４は、アクセス数（Δｎ）９００−ｎがＮ番目に多い選択プロセス５０１がまだ存在するか否かを判断する（ステップＳ１４０９）。存在する場合（ステップＳ１４０９：Ｙｅｓ）、ステップＳ１４０７に戻る。一方、存在しない場合（ステップＳ１４０９：Ｎｏ）、優先度算出部４２４は、変数Ｎに変数Ｍを加算して（ステップＳ１４１０）、ステップＳ１４１１に移行する。
【００７６】
たとえば、ｎ＝２の場合、Ｎ＝４のときに、プロセス別アクセス数情報テーブル４１５において、Ｎ＝４番目に多いアクセス数（Δ２）９００−２の値「３０」となるプロセスＢ，Ｅが、ステップＳ１４０２で選択される。優先度情報テーブル４１４を参照すると、プロセスＢの優先度は「７０」であり、プロセスＥの優先度は「２０」である。したがって、Ｍ＝１のときに、選択プロセス５０１が「Ｂ」のエントリ＃２の今回の動的優先度（Δｎ）１０００−２に、４（＝４＋１−１）番目に高い優先度８０１の値「４０」が記録される。
【００７７】
同様に、Ｍ＝２のときに、選択プロセス５０１が「Ｅ」のエントリ＃５の今回の動的優先度（Δｎ）１０００−２に、５（＝４＋２−１）番目に高い優先度８０１の値「２０」が記録される。
【００７８】
ステップＳ１４１１において、優先度算出部４２４は、プロセス別アクセス数情報テーブル４１５に未選択プロセス５０１が存在するか否かを判断する（ステップＳ１４１１）。そんざいする場合（ステップＳ１４１１：Ｙｅｓ）、ステップＳ１４０２に戻る。一方、存在しない場合（ステップＳ１４１１：Ｎｏ）、優先度算出部４２４は、動的優先度算出処理（ステップＳ１１０３）を終了し、ステップＳ１１０４に移行する。これにより、動的優先度情報テーブル４１６が更新される。
【００７９】
＜優先度算出処理（ステップＳ１１０４）＞
図１５は、図１１に示した優先度算出処理（ステップＳ１１０４）の詳細な処理手順例を示すフローチャートである。優先度算出部４２４は、動的優先度情報テーブル４１６において、直近ｋ（≦ｎ）回の動的優先度（Δ（ｎ−ｋ＋１））１０００−（ｎ−ｋ＋１）〜動的優先度（Δｎ）１０００−ｎでアクセス数の最高値を記録した回数が最も多いプロセスを選択する（ステップＳ１５０１）。
【００８０】
図１０を参照して、ｎ＝ｋ＝２とする。ｎ−ｋ＋１＝１となる。動的優先度（Δ１）１０００−１における最高値は、エントリ＃１のプロセスＡの９０回である。動的優先度（Δ２）１０００−２における最高値は、エントリ＃１のプロセスＡの９０回である。したがって、動的優先度（Δ１）１０００−１〜動的優先度（Δ２）１０００−２で動的優先度の最高値を記録した回数が最も多いプロセスは、最高値を２回記録したプロセスＡである。したがって、ステップＳ１５０１では、「Ａ」が選択される。
【００８１】
なお、ステップＳ１５０１では、直近ｋ回で動的優先度の最高値を記録した回数が最も多いプロセス５０１を選択することとしたが、直近ｋ回での動的優先度の合計が最高値を記録したプロセス５０１を選択してもよい。また、直近ｋ回での動的優先度の平均値が最高値を記録したプロセス５０１を選択してもよい。
【００８２】
優先度算出部４２４は、優先度情報テーブル４１４を参照して、ステップＳ１５０１の選択プロセス５０１の優先度８０１よりも１つランク８００が上のプロセス５０１が存在するか否かを判断する（ステップＳ１５０２）。選択プロセス５０１のランク８００が「２」以下であれば、１つランク８００が上のプロセス５０１が存在する。上記の例の場合、プロセスＡが最上位ランク８００の「１」であるため、１つ上のランク８００のプロセスは存在しない。
【００８３】
１つ上のランク８００のプロセス５０１が存在しない場合（ステップＳ１５０２：Ｎｏ）、ステップＳ１５０４に移行する。１つ上のランク８００のプロセス５０１が存在する場合（ステップＳ１５０２：Ｙｅｓ）、優先度算出部４２４は、優先度情報テーブル４１４において、１つ上のランク８００のプロセス５０１と選択プロセス５０１とを入れ替えて（ステップＳ１５０３）、ステップＳ１５０４に移行する。
【００８４】
たとえば、ランク８００が２位のプロセスＢ（優先度が「７０」）とランク８００が３位のプロセスＣ（優先度が「５０」）とを入れ替えると、プロセスＣのランク８００が２位に上がり、かつ、優先度が「７０」に上がる。同様に、プロセスＢのランク８００が３位に下がり、かつ、優先度が「５０」に下がる。
【００８５】
このあと、優先度算出部４２４は、動的優先度情報テーブル４１６において、直近ｋ（≦ｎ）回の動的優先度（Δ（ｎ−ｋ＋１））１０００−（ｎ−ｋ＋１）〜動的優先度（Δｎ）１０００−ｎで動的優先度の最高値を記録した回数が最も少ないプロセス５０１を選択する（ステップＳ１５０４）。最高値を記録した回数が最も少ないプロセス５０１が複数存在する場合、優先度算出部４２４は、たとえば、直近ｋ（≦ｎ）回の動的優先度（Δ（ｎ−ｋ＋１））１０００−（ｎ−ｋ＋１）〜動的優先度（Δｎ）１０００−ｎの合計値が最小のプロセス５０１を選択してもよく、優先度８０１が最も低いプロセス５０１を選択してもよい。
【００８６】
上記の例の場合、「Ａ」以外の他のプロセス「Ｂ」〜「Ｅ」の最高値の記録回数が０である。したがって、優先度算出部４２４は、たとえば、「Ｂ」〜「Ｅ」のうち、１回の動的優先度（Δ１）１０００−１〜動的優先度（Δ２）１０００−２の合計値が最小のプロセス５０１を選択する。この場合、当該合計値が最小なプロセス５０１は、合計値が４０（＝２０＋２０）であるプロセスＥである。したがって、優先度算出部４２４は、「Ｅ」を選択する。また、「Ｂ」〜「Ｅ」のうち、優先度８０１が最も低いプロセス５０１は、優先度８０１の値が「２０」である「Ｅ」である。この場合も、優先度算出部４２４は、「Ｅ」を選択する。
【００８７】
なお、ステップＳ１５０４では、直近ｋ回で動的優先度の最高値を記録した回数が最も少ないプロセス５０１を選択することとしたが、直近ｋ回での動的優先度の合計が最低値を記録したプロセス５０１を選択してもよい。また、直近ｋ回での動的優先度の平均値が最低値を記録したプロセス５０１を選択してもよい。
【００８８】
優先度算出部４２４は、優先度情報テーブル４１４を参照して、ステップＳ１５０４の選択プロセス５０１の優先度８０１よりも１つランク８００が下のプロセス５０１が存在するか否かを判断する（ステップＳ１５０５）。選択プロセス５０１のランク８００が最下位よりも１つ上であれば、１つランク８００が下のプロセス５０１が存在する。
【００８９】
１つ下のランク８００のプロセス５０１が存在しない場合（ステップＳ１５０５：Ｎｏ）、優先度算出部４２４は、優先度算出処理（ステップＳ１１０４）を終了して、ステップＳ１１０６に移行する。一方、１つ下のランク８００のプロセス５０１が存在する場合（ステップＳ１５０５：Ｙｅｓ）、優先度算出部４２４は、優先度情報テーブル４１４において、１つ下のランク８００のプロセス５０１と選択プロセス５０１とを入れ替える（ステップＳ１５０６）。
【００９０】
たとえば、ランク８００が４位のプロセスＤ（優先度が「４０」）とランク８００が５位のプロセスＥ（優先度が「２０」）とを入れ替えると、プロセスＤのランク８００が５位に下がり、かつ、優先度が「２０」に下がる。同様に、プロセスＥのランク８００が４位に上がり、かつ、優先度が「４０」に上がる。このあと、優先度算出部４２４は、優先度算出処理（ステップＳ１１０４）を終了して、ステップＳ１１０６に移行する。
【００９１】
＜停止対象プロセス決定処理（ステップＳ１１０８）＞
図１６は、停止対象プロセス決定処理（ステップＳ１１０８）の詳細な処理手順例を示すフローチャート１である。停止対象決定部４２６は、変数Ｎに１を設定し（ステップＳ１６０１）、トレース別アクセス数情報テーブル４１３において、アクセス数（Δｎ）７００−ｎがＮ番目に少ないトレース６００を選択する（ステップＳ１６０２）。
【００９２】
停止対象決定部４２６は、変数Ｍに１を設定する（ステップＳ１６０３）。停止対象決定部４２６は、動的優先度情報テーブル４１６において、停止対象候補プロセスのうち、動的優先度（Δｎ）１０００−ｎがＭ番目に低いプロセス５０１を選択する（ステップＳ１６０４）。
【００９３】
なお、停止対象候補プロセスの決定は、クラスタ管理部４２５により、動的優先度情報テーブル４１６を参照して既存技術で実行可能である。たとえば、クラスタ管理部４２５は、動的優先度（Δｎ）１０００−ｎが所定優先度よりも低いプロセス５０１を、停止対象候補プロセスに決定する。クラスタ管理部４２５は、動的優先度（Δｎ）１０００−ｎが相対的に低いプロセス５０１を、停止対象候補プロセスに決定する。クラスタ管理部４２５は、停止すればハードウェアリソース不足が解消されてより動的優先度（Δｎ）１０００−ｎが高い他のプロセス５０１がデプロイ可能となるプロセス５０１を、停止対象候補プロセスに決定する。
【００９４】
停止対象決定部４２６は、ステップＳ１６０２の選択トレース６００に、ステップＳ１６０４の選択プロセス５０１が含まれているか否かを判断する（ステップＳ１６０５）。ステップＳ１６０２の選択トレース６００に、ステップＳ１６０４の選択プロセス５０１が含まれている場合（ステップＳ１６０５：Ｙｅｓ）、図１７のステップＳ１７０１に移行する。
【００９５】
一方、ステップＳ１６０２の選択トレース６００に、ステップＳ１６０４の選択プロセス５０１が含まれていない場合（ステップＳ１６０５：Ｎｏ）、停止対象決定部４２６は、トレース別アクセス数情報テーブル４１３において未選択プロセス５０１が存在するか否かを判断する（ステップＳ１６０６）。未選択プロセス５０１が存在する場合（ステップＳ１６０６：Ｙｅｓ）、停止対象決定部４２６は、変数Ｍに１を加算して（ステップＳ１６０７）、ステップＳ１６０４に戻る。一方、未選択プロセス５０１が存在する場合（ステップＳ１６０６：Ｙｅｓ）、停止対象決定部４２６は、変数Ｎに１を加算して（ステップＳ１６０８）、ステップＳ１６０２に戻る。
【００９６】
図１７は、停止対象プロセス決定処理（ステップＳ１１０８）の詳細な処理手順例を示すフローチャート２である。図１７のステップＳ１７０１は、図１６においてステップＳ１６０２の選択トレース６００に、ステップＳ１６０４の選択プロセス５０１が含まれている場合（ステップＳ１６０５：Ｙｅｓ）に実行される。
【００９７】
停止対象決定部４２６は、ステップＳ１６０２の選択トレース６００とプロセスの実行順序が同一のトレース６００をトレース情報テーブル４１２から選択し、当該選択トレース６００のトレースＩＤ５０４を持つプロセス５０１をログ情報テーブル４１１から選択する（ステップＳ１７０１）。プロセス５０１の実行順序が同一のトレース６００とは、トレースＩＤ５０４が選択プロセス５０１のトレースＩＤ５０４と一致しなくてもよいが、プロセス５０１の実行順序が一致するトレース６００である。
【００９８】
停止対象決定部４２６は、ログ情報テーブル４１１において、ステップＳ１７０１の選択プロセス５０１の各々について、ノードＩＤ５０２および共有ＦＤＩＤ５０６が一致する他のプロセス５０１が存在するか否かを判断する（ステップＳ１７０２）。選択プロセス５０１と他のプロセス５０１とでノードＩＤ５０２が一致しているということは、選択プロセス５０１と他のプロセス５０１は、同一の実行ノードＮｉで実行されるプロセス５０１である。
【００９９】
また、選択プロセス５０１と他のプロセス５０１とで共有ＦＤＩＤ５０６が一致しているということは、選択プロセス５０１と他のプロセス５０１は、ファイルにアクセスする経路が一致するプロセス５０１である。したがって、選択プロセス５０１を停止してしまうと、他のプロセス５０１の実行に影響を及ぼすため、停止対象から外れやすくする必要がある。
【０１００】
ステップＳ１７０２では、ステップＳ１７０１の複数の選択プロセス５０１のうちいずれか１つでも充足する（ステップＳ１７０２：Ｙｅｓ）と、ステップＳ１７０６に移行する。ステップＳ１７０１の複数の選択プロセス５０１のうちいずれも充足しない（ステップＳ１７０２：Ｎｏ）と、ステップＳ１７０３に移行する。
【０１０１】
ステップＳ１７０２：Ｎｏの場合、停止対象決定部４２６は、ログ情報テーブル４１１において、ステップＳ１７０１の選択プロセス５０１の各々について、選択プロセス５０１とノードＩＤ５０２が一致し、かつ、選択プロセス５０１のシグナル送信先プロセスＩＤ５０７と一致するプロセスＩＤ５０２を有する他のプロセス５０１が存在するか否かを判断する（ステップＳ１７０３）。
【０１０２】
選択プロセス５０１のシグナル送信先プロセスＩＤ５０７と一致するプロセスＩＤ５０２を有する他のプロセス５０１は、選択プロセス５０１から送信されるシグナルの送信先プロセス５０１である。したがって、選択プロセス５０１を停止してしまうと、他のプロセス５０１の実行に影響を及ぼすため、停止対象から外れやすくする必要がある。
【０１０３】
ステップＳ１７０３では、ステップＳ１７０１の複数の選択プロセス５０１のうちいずれか１つでも充足する（ステップＳ１７０３：Ｙｅｓ）と、ステップＳ１７０６に移行する。ステップＳ１７０１の複数の選択プロセス５０１のうちいずれも充足しない（ステップＳ１７０３：Ｎｏ）と、ステップＳ１７０４に移行する。
【０１０４】
ステップＳ１７０３：Ｎｏの場合、停止対象決定部４２６は、ログ情報テーブル４１１において、ステップＳ１７０１の選択プロセス５０１の各々について、選択プロセス５０１とノードＩＤ５０２が一致し、かつ、選択プロセス５０１のプロセスＩＤ５０２と一致するシグナル送信先プロセスＩＤ５０７を有する他のプロセス５０１が存在するか否かを判断する（ステップＳ１７０３）。
【０１０５】
選択プロセス５０１のプロセスＩＤ５０２と一致するシグナル送信先プロセスＩＤ５０７を有する他のプロセス５０１は、選択プロセス５０１が受信するシグナルの送信元プロセス５０１である。したがって、選択プロセス５０１を停止してしまうと、他のプロセス５０１の実行に影響を及ぼすため、停止対象から外れやすくする必要がある。
【０１０６】
ステップＳ１７０４では、ステップＳ１７０１の複数の選択プロセス５０１のうちいずれか１つでも充足する（ステップＳ１７０４：Ｙｅｓ）と、ステップＳ１７０６に移行する。ステップＳ１７０１の複数の選択プロセス５０１のうちいずれも充足しない（ステップＳ１７０３：Ｎｏ）と、停止対象決定部４２６は、ステップＳ１７０１の選択プロセス５０１を停止対象プロセスに決定する（ステップＳ１７０５）。これにより、停止対象決定部４２６は、停止対象決定処理（ステップＳ１１０８）を終了して、ステップＳ１１０９に移行する。
【０１０７】
ステップＳ１７０６では、停止対象決定部４２６は、ステップＳ１７０２〜Ｓ１７０４で存在すると判断された他のプロセス５０１を含むトレース６００を、トレース情報テーブル４１２から取得する（ステップＳ１７０６）。停止対象決定部４２６は、トレース別アクセス数情報テーブル４１３を参照して、ステップＳ１７０６の取得トレース６００のアクセス数（Δｎ）７００−ｎがステップＳ１６０２の選択トレース６００のアクセス数（Δｎ）７００−ｎよりも少ないか否かを判断する（ステップＳ１７０７）。
【０１０８】
少ない場合（ステップＳ１７０７：Ｙｅｓ）、取得トレース６００内のプロセス５０１を停止しても影響は少ないため、停止対象決定部４２６は、ステップＳ１７０１の選択プロセス５０１を停止対象プロセスに決定する（ステップＳ１７０５）。これにより、停止対象決定部４２６は、停止対象決定処理（ステップＳ１１０８）を終了して、ステップＳ１１０９に移行する。
【０１０９】
一方、少なくない場合（ステップＳ１７０７：Ｎｏ）、停止対象決定部４２６は、ステップＳ１７０１での未選択トレース６００のトレースＩＤ５０４が存在するか否かを判断する（ステップＳ１７０８）。未選択トレース６００が存在する場合（ステップＳ１７０８：Ｙｅｓ）、ステップＳ１７０１に移行する。一方、未選択トレース６００が存在しない場合（ステップＳ１７０９：Ｎｏ）、停止対象決定部４２６は、変数Ｎに１加算して（ステップＳ１７０９）、図１６のステップＳ１６０２に移行する。
【０１１０】
（１）このように、上述した管理ノードＮ０は、実行ノード群（Ｎ１〜Ｎｍ）により構成され実行ノード群のうち１以上の実行ノードＮｉの複数のプロセスにより構成されるトレースを実行するクラスタ１０１を管理する。管理ノードＮ０は、プログラムを実行するプロセッサ３０１と、プログラムを記憶する記憶デバイス３０２と、を有する。記憶デバイス３０２は、実行ノード群が有するプロセス群の各プロセスに関する優先度（優先度情報テーブル４１４）を記憶する。プロセッサ３０１は、トレースへのアクセス数７００−ｎとプロセスに関する優先度とに基づいて、トレースを構成する複数のプロセスの各々について、プロセスに関する一時的な優先度である動的優先度１０００−ｎを算出する動的優先度算出処理（４２４）と、動的優先度算出処理によって算出された動的優先度１０００−ｎに基づいて、プロセス群の中から停止対象プロセスを決定する停止対象プロセス決定処理と、を実行する。
【０１１１】
このように、管理ノードＮ０は、複数のプロセスの関係性と利用状況を考慮して、プロセスに関する優先度を変化させ停止対象プロセスを決定する。これにより、サービス提供に必要なプロセスが変化した場合でも、リソースが不足した際に、サービスをスローダウンさせずに優先度の高いプロセスをデプロイできるようになる。したがって、たとえば、マイクロサービスのような、複数のプロセスが連携し、状況に応じて必要なプロセスが変化する環境においても、サービスをスローダウンさせずにコストの抑制とサービスの負荷に合わせた対応が可能になる。
【０１１２】
（２）上記（１）の管理ノードＮ０において、プロセッサ３０１は、トレースへのアクセス数を複数のプロセスの各々に加算することにより、複数のプロセスの各々について、当該プロセスへのアクセス数を算出し、プロセスへのアクセス数とプロセスに関する優先度に基づいて、動的優先度１０００−ｎを算出する。
【０１１３】
これにより、トレースでの実行履歴を考慮して、動的優先度を算出することができる。したがって、サービスとして利用頻度が高いトレースを構成するプロセスほど動的優先度が高くなる。したがって、動的優先度が高いプロセスほど停止対象プロセスに選ばれにくくなる。
【０１１４】
（３）上記（１）の管理ノードＮ０において、プロセッサ３０１は、動的優先度に基づいて、優先度を更新し、トレースへのアクセス数とプロセスに関する更新後の優先度とに基づいて、動的優先度を再算出する。これにより、プロセスに関する優先度をプロセスの利用状況に応じて適切に変更することができる。
【０１１５】
（４）上記（３）の管理ノードＮ０において、プロセッサ３０１は、プロセス群の中の第１プロセスに関する第１優先度が第２プロセスに関する第２優先度よりも低いが、第１プロセスに関する第１動的優先度が第２プロセスに関する第２動的優先度よりも高い場合、第１プロセスに関する優先度を第１優先度から前記第２優先度に変更し、第２プロセスに関する優先度を第２優先度から第１優先度に変更する。
【０１１６】
これにより、動的優先度が高いプロセスほど優先度が高くなり、動的優先度が低いプロセスほど優先度が低くなる。
【０１１７】
（５）上記（１）の管理ノードＮ０において、プロセッサ３０１は、第１トレースのアクセス数よりも少ない第２トレースを構成する特定のプロセスに関する動的優先度に基づいて、前記第２トレースの中から前記停止対象プロセスを決定する。
【０１１８】
これにより、停止対象プロセスの候補となるプロセスをアクセス数がより少ないトレースを構成するプロセスに絞り込むことができる。
【０１１９】
（６）上記（５）の管理ノードＮ０において、プロセッサ３０１は、特定のプロセスと連携して実行される第３トレースを構成する他のプロセスに基づいて、特定のプロセスを停止対象プロセスに決定する。
【０１２０】
これにより、サービス提供に必要なプロセスの誤停止を抑制することができる。
【０１２１】
（７）上記（６）の管理ノードＮ０において、他のプロセスは、特定のプロセスと同一の実行ノードで実行され、かつ、データへのアクセス経路が一致するプロセスである。
【０１２２】
これにより、停止対象プロセスの候補となるプロセスであってもサービス提供に必要なプロセスであれば、当該プロセスの誤停止を抑制することができる。
【０１２３】
（８）上記（６）の管理ノードＮ０において、前記他のプロセスは、特定のプロセスと同一の実行ノードで実行され、特定のプロセスからの信号を受信するプロセスである。
【０１２４】
これにより、特定のプロセスに関連して実行される送信先のプロセスの誤停止を抑制することができる。
【０１２５】
（９）上記（６）の管理ノードＮ０において、他のプロセスは、特定のプロセスと同一の実行ノードで実行され、特定のプロセスに信号を送信するプロセスである。
【０１２６】
これにより、特定のプロセスに関連して実行される送信元のプロセスの誤停止を抑制することができる。
【０１２７】
（１０）上記（６）の管理ノードＮ０において、プロセッサ３０１は、第３トレースのアクセス数が第２トレースのアクセス数よりも少ない場合、特定のプロセスを停止対象プロセスに決定する。
【０１２８】
これにより、アクセス数の少ないトレースに属するプロセスほど停止対象プロセスに決定し易くすることができる。
【０１２９】
（１１）上記（１）の管理ノードＮ０において、プロセッサ３０１は、停止対象プロセス決定処理によって決定された停止対象プロセスを有する実行ノードに対し、停止対象プロセスを停止するように制御する制御処理（４２５）を実行する。
【０１３０】
これにより、停止対象プロセスを自動停止することができる。
【０１３１】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加、削除、または置換をしてもよい。
【０１３２】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサ３０１がそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１３３】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の記憶装置、又は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カード、ＳＤカード、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）の記録媒体に格納することができる。
【０１３４】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【符号の説明】
【０１３５】
１００  サービス提供システム
１０１  クラスタ
１０２  端末
１０３  ネットワーク
３０１  プロセッサ
３０２  記憶デバイス
４１１  ログ情報テーブル
４１２  トレース情報テーブル
４１３  トレース別アクセス数情報テーブル
４１４  優先度情報テーブル
４１５  プロセス別アクセス数情報テーブル
４１６  動的優先度情報テーブル
４２１  ログ収集部
４２２  トレース管理部
４２３  プロセス別アクセス数計算部
４２４  優先度算出部
４２５  クラスタ管理部
４２６  停止対象決定部
５０１  プロセス
６００  トレース
８０１  優先度
９００  アクセス数
１０００  動的優先度
Ｎ０  管理ノード
Ｎ０〜Ｎｍ  実行ノード
【図１】
2020154390.tif 000003
【図２】
2020154390.tif 000004
【図３】
2020154390.tif 000005
【図４】
2020154390.tif 000006
【図５】
2020154390.tif 000007
【図６】
2020154390.tif 000008
【図７】
2020154390.tif 000009
【図８】
2020154390.tif 000010
【図９】
2020154390.tif 000011
【図１０】
2020154390.tif 000012
【図１１】
2020154390.tif 000013
【図１２】
2020154390.tif 000014
【図１３】
2020154390.tif 000015
【図１４】
2020154390.tif 000016
【図１５】
2020154390.tif 000017
【図１６】
2020154390.tif 000018
【図１７】
2020154390.tif 000019
【手続補正書】
【提出日】令和1年7月12日(2019.7.12)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００３６
【補正方法】変更
【補正の内容】
【００３６】
シグナル送信先プロセスＩＤ５０７は、シグナル送信先となるプロセス５０１のプロセスＩＤ５０３である。たとえば、エントリ＃ＷのプロセスＢは、シグナル送信先プロセスＩＤ５０７の値が「１００２」であるため、プロセスＩＤ５０３の値が「１００２」であるエントリ＃６のプロセスＥに信号を送信したことになる。共有ＦＤＩＤ５０６およびシグナル送信先プロセスＩＤ５０７は、プロセス５０１を実行した実行ノードＮｉで生成される。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１０１
【補正方法】変更
【補正の内容】
【０１０１】
ステップＳ１７０２：Ｎｏの場合、停止対象決定部４２６は、ログ情報テーブル４１１において、ステップＳ１７０１の選択プロセス５０１の各々について、選択プロセス５０１とノードＩＤ５０２が一致し、かつ、選択プロセス５０１のシグナル送信先プロセスＩＤ５０７と一致するプロセスＩＤ５０３を有する他のプロセス５０１が存在するか否かを判断する（ステップＳ１７０３）。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
選択プロセス５０１のシグナル送信先プロセスＩＤ５０７と一致するプロセスＩＤ５０３を有する他のプロセス５０１は、選択プロセス５０１から送信されるシグナルの送信先プロセス５０１である。したがって、選択プロセス５０１を停止してしまうと、他のプロセス５０１の実行に影響を及ぼすため、停止対象から外れやすくする必要がある。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０１０４
【補正方法】変更
【補正の内容】
【０１０４】
ステップＳ１７０３：Ｎｏの場合、停止対象決定部４２６は、ログ情報テーブル４１１において、ステップＳ１７０１の選択プロセス５０１の各々について、選択プロセス５０１とノードＩＤ５０２が一致し、かつ、選択プロセス５０１のプロセスＩＤ５０３と一致するシグナル送信先プロセスＩＤ５０７を有する他のプロセス５０１が存在するか否かを判断する（ステップＳ１７０３）。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０１０５
【補正方法】変更
【補正の内容】
【０１０５】
選択プロセス５０１のプロセスＩＤ５０３と一致するシグナル送信先プロセスＩＤ５０７を有する他のプロセス５０１は、選択プロセス５０１が受信するシグナルの送信元プロセス５０１である。したがって、選択プロセス５０１を停止してしまうと、他のプロセス５０１の実行に影響を及ぼすため、停止対象から外れやすくする必要がある。