以下、本発明の実施例を、図面を用いて説明する。ただし、本発明は以下に示す実施例の記載内容に限定して解釈されるものではない。本発明の思想ないし趣旨から逸脱しない範囲で、その具体的構成を変更し得ることは当業者であれば容易に理解される。
図1は、実施例1のシステム全体の構成例を示す図である。図2は、実施例1のデータ処理の構成例を示す図である。
システムは、データ処理システム1、複数のセンサ102−1、102−2、102−3、102−4及び業務計算機103から構成される。
複数のセンサ102−1、102−2、102−3、102−4及び業務計算機103は、データ処理システム1に接続される。データ処理システム1は、サーバ100及び複数のゲートウェイ101−1、101−2から構成される。サーバ100及び複数のゲートウェイ101−1、101−2は、ネットワーク105を介して互いに接続される。
なお、ネットワーク105は、WAN(Wide Area Network)及びLAN(Local Area Network)等であり、接続方式は、無線及び有線のいずれでもよい。
以下の説明では、センサ102−1、102−2、102−3、102−4を区別しない場合、センサ102と記載する。また、ゲートウェイ101−1、101−2を区別しない場合、ゲートウェイ101と記載する。
データ処理システム1は、センサ102からデータを収集し、当該データを用いてデータ処理を実行し、業務アプリケーションが稼働する業務計算機103に処理結果を送信する。
図2に示すように、データ処理は、処理の追加及び変更等に柔軟に対応できるように実行順に連結された複数のプロセス150から構成される。プロセス150は、任意の機能を実現するプログラム(アプリケーション)を実行することによって実現される。以下の説明では、データ処理を実現するプロセス150の集合をプロセスフローとも記載する。
図2では、観測対象の状態の異常を判定するプロセスフローを示す。データ処理システム1は、センサ102から1秒に20個のバイナリデータをセンサデータとして受信した場合、データ変換のプロセス150、フィルタリングのプロセス150、サンプリングのプロセス150、及び異常判定のプロセス150を実行し、判定結果を業務計算機103に送信する。
データ変換のプロセス150では、バイナリデータがメタデータに変換される。フィルタリングのプロセス150では、条件に合致するメタデータが抽出される。サンプリングのプロセス150では、メタデータが間引かれる。ここでは、1秒に20個のメタデータが、1秒に10個のメタデータに間引かれる。異常判定のプロセス150では、メタデータを解析し、解析結果に基づいて観測対象の状態が正常であるか否かが判定される。
本実施例では、プロセスフローを構成する複数のプロセス150がサーバ100及びゲートウェイ101に分散して配置される。図1では、プロセスフローを構成するプロセス150の接続関係を点線で示す。すなわち、識別情報が「F1」、「F3」、「F4」、「F5」であるプロセス150群から構成されるプロセスフロー、及び、識別情報が「F2」、「F6」であるプロセス150群から構成されるプロセスフローがデータ処理システム1によって実行されている。
本実施例では、一つのプロセスフローは、一つのゲートウェイ101及びサーバ100によって実行される。すなわち、各ゲートウェイ101に配置されたプロセス150は異なるプロセスフローを構成する。
なお、一つのセンサデータを入力として扱うプロセスフローを定義してもよいし、複数のセンサデータを入力として扱うプロセスフローを定義してもよい。一つのセンサデータを入力として扱うプロセスフローを定義した場合、センサ102の数とプロセスフローの数は同一となる。
センサ102は、観測対象から一定間隔で計測値を取得し、計測値を含むセンサデータをゲートウェイ101に送信する。センサ102は、例えば、温度センサ、湿度センサ、振動センサ、カメラ等のセンシングデバイス、及びこれらを含む監視センサ等である。なお、図1では、一つのゲートウェイ101に二つのセンサ102が接続されているが、本発明はこれに限定されない。一つのゲートウェイ101に接続されるセンサ102の数は、一つでもよいし、また、三つ以上でもよい。
ゲートウェイ101は、エッジ計算機として機能する計算機であり、センサ102からセンサデータを収集し、センサデータを用いてプロセス150を実行し、センサデータ又は処理結果をサーバ100に送信する。本実施例では、ゲートウェイ101は、データ処理に対応するプロセスフローを構成する一つ以上のプロセス150を実行する。なお、ゲートウェイ101は、異なるプロセスフローを構成する一つ以上のプロセス150を実行できる。
ゲートウェイ101は、負荷監視部130、振分部131、及びプロセスフロー処理部132を有する。
負荷監視部130は、ゲートウェイ101の負荷を監視する。例えば、負荷監視部130は、演算装置210(図3参照)の使用率をゲートウェイ101の負荷として監視する。ここで、ゲートウェイ101の負荷とは、ゲートウェイ101に関連する全てのプロセスフローの実行に伴う負荷を表す。本実施例では、ゲートウェイ101の負荷の推定を容易にするために、プロセスフロー単位の負荷が監視される。なお、プロセスフロー単位の負荷とは、プロセスフローを構成するプロセス150に起因する負荷を示す。
以下の説明では、プロセスフロー単位の負荷をプロセスフロー負荷とも記載する。本実施例では、ゲートウェイ101のプロセスフロー負荷の合計値がゲートウェイ101の負荷として算出される。
負荷監視部130は、周期的に、又は、サーバ100から送信指示を受信した場合に、負荷の監視結果を送信する。負荷の監視結果にはプロセスフロー負荷の監視結果が含まれる。
振分部131は、受信したセンサデータの種別等に基づいて当該センサデータを振り分けて、適切なプロセス150(プロセスフロー)に入力する。
プロセスフロー処理部132は、センサデータを用いてプロセス150を実行し、処理結果をサーバ100に送信する。
サーバ100は、ゲートウェイ101からセンサデータ又は処理結果を受信し、センサデータ又は処理結果を用いてプロセス150を実行し、処理結果を業務計算機103に送信する。本実施例では、サーバ100は、データ処理に対応するプロセスフローを構成する一つ以上のプロセス150を実行する。なお、サーバ100は、異なるプロセスフローを構成する一つ以上のプロセス150を実行できる。
サーバ100は、負荷監視部110、振分部111、プロセスフロー処理部112、及びプロセス制御部113を有する。また、サーバ100は、ゲートウェイ性能情報120、プロセスフロー構成情報121、プロセスフロー要件情報122、及びプロセスフロー負荷情報123を保持する。
負荷監視部110は、サーバ100の負荷を監視する。例えば、負荷監視部110は、演算装置200(図3参照)の使用率をサーバ100の負荷として監視する。ここで、サーバ100の負荷とは、サーバ100に関連する全てのプロセスフローの実行に伴う負荷を表す。本実施例では、サーバ100の負荷の推定を容易にするために、プロセスフロー単位の負荷が監視される。本実施例では、サーバ100のプロセスフロー負荷の合計値がサーバ100の負荷として算出される。
振分部111は、センサデータ又は処理結果の送信元のゲートウェイ101の識別情報及び受信したセンサデータ又は処理結果の種別等に基づいて当該センサデータ又は処理結果を振り分けて、適切なプロセス150(プロセスフロー)に入力する。
プロセスフロー処理部112は、ゲートウェイ101から受信したデータを用いてプロセス150を実行し、処理結果を業務計算機103に送信する。
プロセス制御部113は、サーバ100及びゲートウェイ101の負荷及びプロセスフローの属性等に基づいて、プロセス150の配置及びプロセス150の内容を制御する。ここで、プロセスフローの属性(データ処理の属性)は、プロセスフローの構成及びプロセスフローの要件等を示す。また、プロセスフローの要件(データ処理の要件)は、プロセスフローの優先度及びプロセスフローの特性等を示す。
ゲートウェイ性能情報120は、ゲートウェイ101の性能を管理する情報である。本実施例では、サーバ100とゲートウェイ101との間の性能差に基づいてゲートウェイ101の性能が管理される。ゲートウェイ性能情報120の詳細は図4を用いて説明する。
プロセスフロー構成情報121は、プロセスフローの構成を管理する情報である。プロセスフロー構成情報121の詳細は図5を用いて説明する。
プロセスフロー要件情報122は、プロセスフローの要件を管理する情報である。プロセスフロー要件情報122の詳細は図6を用いて説明する。
プロセスフロー負荷情報123は、プロセスフローの実行に伴うデータ処理システム1の負荷を管理する情報である。プロセスフロー負荷情報123の詳細は図7を用いて説明する。
図3は、実施例1のデータ処理システム1に含まれる計算機のハードウェア構成の一例を示す図である。
サーバ100は、演算装置200、記憶装置201、及びインタフェース202を有する。なお、サーバ100は、キーボード、マウス、及びタッチパネル等の入力装置、並びに、ディスプレイ等の出力装置を有してもよい。
演算装置200は、記憶装置201に格納されるプログラムを実行する装置であり、例えば、CPU(Central Processing Unit)及びFPGA(Field Programmable Gate Array)等である。演算装置200は、プログラムにしたがって処理を実行することによって、所定の機能を実現する機能部(モジュール)として動作する。以下の説明では、機能部を主語に処理を説明する場合、演算装置200が当該機能部を実現するプログラムを実行していることを示す。
なお、サーバ100が有する各機能部については、複数の機能部を一つの機能部にまとめてもよいし、一つの機能部を複数の機能部に分けてもよい。
記憶装置201は、演算装置200が実行するプログラム及び当該プログラムが使用する情報を格納する装置であり、例えば、メモリ、HDD(Hard Disk Drive)、SSD(Solid State Drive)、RAM(Random Access Memory)、及びROM(Read Only Memory)等である。なお、記憶装置201は、プログラムが一時的に使用するワークエリアを含む。
本実施例の記憶装置201は、負荷監視部110、振分部111、プロセスフロー処理部112、及びプロセス制御部113を実現するプログラムを格納する。また、本実施例の記憶装置201は、プロセス150を実現するプログラムを格納する。さらに、本実施例の記憶装置201は、ゲートウェイ性能情報120、プロセスフロー構成情報121、プロセスフロー要件情報122、及びプロセスフロー負荷情報123を格納する。
インタフェース202は、外部の計算機と接続する装置であり、例えば、I/Oインタフェース及びネットワークインタフェース等である。
なお、サーバ100の論理的な接続関係は以下に示すとおりである。負荷監視部110及びプロセス制御部113は、ゲートウェイ性能情報120、プロセスフロー構成情報121、プロセスフロー要件情報122、及びプロセスフロー負荷情報123にアクセスすることができる。負荷監視部110及びプロセスフロー処理部112は、互いに通信することができる。振分部111及びプロセスフロー処理部112は、互いに通信することができる。振分部111及びプロセス制御部113は、互いに通信することができる。プロセスフロー処理部112は、業務アプリケーションと通信することができる。また、プロセス制御部113は、プロセスフロー処理部132と通信することができる。
本実施例では、負荷監視部110、振分部111、プロセスフロー処理部112、及びプロセス制御部113はプログラムとして実現されているがこれに限定されない。負荷監視部110、振分部111、プロセスフロー処理部112、及びプロセス制御部113を専用のハードウェアを用いて実現してもよい。この場合、負荷監視部110は、プロセスフロー処理部112を実現するハードウェアの負荷を監視する。
ゲートウェイ101は、演算装置210、記憶装置211、及びインタフェース212を有する。演算装置210、記憶装置211、及びインタフェース212は、演算装置200、記憶装置201、及びインタフェース202と同一のものである。
本実施例の記憶装置211は、負荷監視部130、振分部131、及びプロセスフロー処理部132を実現するプログラム、並びに、プロセス150を実現するプログラムを格納する。
なお、ゲートウェイ101の論理的な接続関係は以下に示すとおりである。振分部131は、センサ102と通信することができる。振分部131及びプロセスフロー処理部132は、互いに通信することができる。負荷監視部110は、サーバ100の負荷監視部110及びプロセス制御部113のいずれかと通信することができる。
本実施例では、負荷監視部130、振分部131、プロセスフロー処理部132はプログラムとして実現されているがこれに限定されない。負荷監視部130、振分部131、プロセスフロー処理部132を専用のハードウェアを用いて実現してもよい。この場合、負荷監視部130は、プロセスフロー処理部132を実現するハードウェアの負荷を監視する。
本実施例では、物理的なサーバ100及びゲートウェイ101を用いているが、同様の機能を有する仮想計算機を用いてもよい。
次に、サーバ100が保持する情報の詳細について説明する。
図4は、実施例1のゲートウェイ性能情報120の一例を示す図である。
ゲートウェイ性能情報120は、ゲートウェイID301及び性能比302から構成されるエントリを含む。一つのエントリが一つのゲートウェイ101に対応する。
ゲートウェイID301は、ゲートウェイ101の識別情報を格納するフィールドである。ゲートウェイ101の識別情報は、IPアドレス及び任意の入力値でもよい。また、ゲートウェイ101の識別情報は自動的又は手動で設定されてもよい。図4に示すゲートウェイ性能情報120は、識別情報が「G1」、「G2」、「G3」であるゲートウェイ101のエントリを含む。
性能比302は、サーバ100の性能値を「1」とした場合のゲートウェイ101の性能値を格納するフィールドである。データ処理システム1の管理者が、例えば、演算装置の性能、記憶装置の記憶容量、ベンチマークテストの結果等に基づいて性能値を設定する。
図5は、実施例1のプロセスフロー構成情報121の一例を示す図である。
プロセスフロー構成情報121は、プロセスフローID401、プロセスID402、内容403、パラメータ404、初期計算機ID405、及び計算機ID406から構成されるエントリを含む。一つのエントリが一つのプロセスフローに対応する。
プロセスフローID401は、プロセスフローの識別情報を格納するフィールドである。プロセスフローの識別情報は、例えば、プロセスフローの設定時に自動的に又は手動で設定される。一つのプロセスフローに対応するエントリには、プロセスフローを構成するプロセス150の数だけ行が含まれる。
プロセスID402は、プロセスフローを構成するプロセス150の識別情報を格納するフィールドである。プロセス150の識別情報は、例えば、プロセスフローの設定時に自動的に又は手動で設定される。なお、プロセス150の識別情報は、実行順にしたがって上から順に設定される。図5に示す例では、最初に実行される識別情報が「F1」のプロセス150の行が一番上に設定され、最後に実行される識別情報が「F5」のプロセス150の行が一番下に設定される。
内容403は、プロセス150の種別及び内容等を格納するフィールドである。プロセス150の種別及び内容等は、例えば、プロセスフローの設定時に自動的に又は手動で設定される。
パラメータ404は、プロセス150の性能を制御するパラメータを格納するフィールドである。なお、変更可能なパラメータが存在しないプロセス150、又は、パラメータを変更できないプロセス150のパラメータ404は空欄となる。
変更可能なパラメータが存在するプロセス150のパラメータ404には、項目、設定値、通常値、最小値、及び刻み幅等が格納される。項目は対象のパラメータの識別情報である。設定値は現在設定されている値である。通常値はプロセスフローの設定時に与えられる初期値であり、負荷の増大に伴って変更される前の値である。最小値は設定可能なパラメータの最小値である。刻み幅は値を変更する場合の刻み幅である。
初期計算機ID405及び計算機ID406は、プロセスID402に対応するプロセス150を実行する装置の識別情報を格納するフィールドである。初期計算機ID405及び計算機ID406には、サーバ100及びゲートウェイ101のいずれかの識別情報が格納される。なお、「S」はサーバ100の識別情報を示す。
初期計算機ID405には、プロセスフローの設定時にプロセス150を配置した計算機の識別情報が格納される。計算機ID406には、プロセス150が現在配置されている計算機の識別情報が格納される。プロセスフローの設定時には、各行の初期計算機ID405及び計算機ID406には同一の識別情報が設定される。
図5では、識別情報が「F1」、「F3」、「F4」、「F5」であるプロセス150から構成されるプロセスフローのエントリを一例として示している。
図6は、実施例1のプロセスフロー要件情報122の一例を示す図である。
プロセスフロー要件情報122は、プロセスフローID501、ゲートウェイID502、優先度503、運用フラグ504、及び制御フラグ505から構成されるエントリを含む。一つのエントリが一つのプロセスフローに対応する。
プロセスフローID501は、プロセスフローID401と同一のフィールドである。
ゲートウェイID502は、プロセスフローを構成するプロセス150を実行するゲートウェイ101の識別情報を格納するフィールドである。すなわち、ゲートウェイID502には、プロセスフローに関連するゲートウェイ101の識別情報が格納される。
優先度503は、プロセスフロー(データ処理)の重要性を示す優先度を格納するフィールドである。本実施例では、優先度503は、後述するプロセス制御処理の対象となる前記データ処理の選択基準として用いられる。本実施例の優先度503には、「高」及び「低」のいずれかが格納される。「高」は優先度が高いことを示し、「低」は優先度が低いことを示す。本実施例のサーバ100は、優先度が高いプロセスフローを可能な限り変更しないように制御する。
なお、優先度が低いプロセスフローとしては、温度監視を行うプロセスフローがある。また、優先度が高いプロセスフローとしては、異常検知を行うプロセスフローがある。
なお、優先度503には数字を格納してもよい。例えば、「1」が最も優先度が高くなるように数字を格納する。
運用フラグ504は、プロセスフローの変更が行われたか否かを示すフラグを格納するフィールドである。ここで、プロセスフローの変更とは、サーバ100及びゲートウェイ101間のプロセス150の移動又はプロセス150のパラメータの変更を示す。運用フラグ504には、「0」及び「1」のいずれかが格納される。「0」はプロセスフローの変更が行われていないことを示し、「1」はプロセスフローの変更が行われたことを示す。
制御フラグ505は、プロセスフロー、すなわち、データ処理の要件を示す情報を格納するフィールドである。本実施例の制御フラグ505には、プロセスフローの制御、すなわち、プロセスフローを構成するプロセス150のサーバ100及びゲートウェイ101間の移動によるデータの欠損が許容されているか否かを示すフラグが格納される。制御フラグ505には、「0」及び「1」のいずれかが格納される。「0」はプロセス150の移動によるデータの欠損が許容されていないことを示し、「1」はプロセス150の移動によるデータの欠損が許容されていることを示す。
制御フラグ505は、データ処理システム1の管理者によって設定されているものとする。なお、任意のタイミングで変更することができる。
図7は、実施例1のプロセスフロー負荷情報123の一例を示す図である。
プロセスフロー負荷情報123は、プロセスフローID601、負荷情報602、負荷変動情報603から構成されるエントリを含む。一つのエントリが一つのプロセスフローを示す。
プロセスフローID601は、プロセスフローID401と同一のフィールドである。
負荷情報602は、サーバ100及びゲートウェイ101の現在のプロセスフロー負荷を格納するフィールドである。負荷情報602には、データ処理システム1に含まれるサーバ100及び全てのゲートウェイ101に対応する列が含まれる。
負荷変動情報603は、サーバ100及びゲートウェイ101のプロセスフロー負荷の変化傾向を示す値を格納するフィールドである。
本実施例の負荷変動情報603には、現在から一定時間前の時間範囲における演算装置200、210の使用率の変化傾向を示す値(変化値)が格納される。例えば、時間範囲及び使用率の変位を用いて算出される値が、負荷変動情報603に格納される。時間範囲は例えば5分と設定できる。値が「0」に近いほど、演算装置200、210の使用率が変化していないこと、すなわち、演算装置200、210の負荷が一定であることを示す。
プロセスフロー負荷情報123は、例えば、以下のようにして更新される。負荷監視部110は、サーバ100及びゲートウェイ101のプロセスフロー負荷の監視結果及びプロセスフロー構成情報121に基づいて、負荷情報602を更新する。また、負荷監視部110は、プロセスフロー負荷の履歴に基づいて変化値を算出する。さらに、負荷監視部110は、当該変化値及びプロセスフロー構成情報121に基づいて負荷変動情報603を更新する。
図8は、実施例1のサーバ100が実行するプロセス制御処理の一例を説明するフローチャートである。以下で説明する処理は、プロセス制御部113が周期的に又は管理者から実行指示を受け付けた場合に開始する。
プロセス制御部113は、プロセスフロー負荷情報123を参照し、負荷が高い計算機が存在するか否かを判定する(ステップS101)。
具体的には、プロセス制御部113は、プロセスフロー負荷情報123の負荷情報602を参照し、各装置のプロセスフロー負荷の合計値を算出する。さらに、プロセス制御部113は、算出されたプロセスフロー負荷の合計値が閾値以上である計算機を検索する。プロセス制御部113は、検索された計算機のリストを生成する。なお、閾値は予め設定されているものとする。ただし、閾値は適宜更新できる。
図7に示す例では、サーバ100の演算装置200の使用率(プロセスフロー負荷)の合計値は77%と算出される。識別情報が「G1」であるゲートウェイ101の演算装置210の使用率(プロセスフロー負荷)の合計値は90%と算出される。識別情報が「G2」であるゲートウェイ101の演算装置210の使用率(プロセスフロー負荷)の合計値は70%と算出される。識別情報が「G3」であるゲートウェイ101の演算装置210の使用率(プロセスフロー負荷)の合計値は90%と算出される。80%を閾値に設定した場合、識別情報が「G1」であるゲートウェイ101及び識別情報が「G3」であるゲートウェイ101が、負荷が高い計算機として検索される。
負荷が高い計算機が存在しないと判定された場合(ステップS101がNO)、プロセス制御部113は、プロセス制御処理を終了する。
負荷が高い計算機が存在すると判定された場合(ステップS101がYES)、プロセス制御部113は、検索された計算機の中からターゲット計算機を選択する(ステップS102)。
具体的には、プロセス制御部113は、ステップS101において生成された計算機のリストの中からターゲット計算機を選択する。このとき、プロセス制御部113は、リストからターゲット計算機を削除する。プロセス制御部113は、例えば、負荷の大きい順にターゲット計算機を選択する。なお、前述の選択方法は、一例であって本発明はこれに限定されない。
次に、プロセス制御部113は、ターゲット計算機に関連するプロセスフロー(データ処理)であり、かつ、優先度503が「低」であるプロセスフロー(データ処理)を対象とした低優先度プロセス制御処理を実行する(ステップS103)。低優先度プロセス制御処理の詳細は図9Aを用いて説明する。
プロセス制御部113は、低優先度プロセス制御処理が完了した後、低優先度プロセス制御処理の結果に基づいて、ターゲット計算機の負荷の削減が成功したかを判定する(ステップS104)。
ターゲット計算機の負荷の削減が成功したと判定された場合(ステップS104がYES)、プロセス制御部113は、ステップS109に進む。
ターゲット計算機の負荷の削減が失敗したと判定された場合(ステップS104がNO)、プロセス制御部113は、優先度503が「低」かつ未処理のプロセスフローが存在するか否かを判定する(ステップS105)。
具体的には、プロセス制御部113は、低優先度プロセス制御処理において生成されたプロセスフローのリストが空であるか否かを判定する。プロセスフローのリストが空である場合、プロセス制御部113は、優先度503が「低」かつ未処理のプロセスフローが存在しないと判定する。
優先度503が「低」かつ未処理のプロセスフローが存在すると判定された場合(ステップS105がYES)、プロセス制御部113は、ステップS103に戻り、同様の処理を実行する。
優先度503が「低」かつ未処理のプロセスフローが存在しないと判定された場合(ステップS105がNO)、プロセス制御部113は、ターゲット計算機に関連するプロセスフロー(データ処理)であり、かつ、優先度503が「高」であるプロセスフロー(データ処理)を対象とした高優先度プロセス制御処理を実行する(ステップS106)。高優先度プロセス制御処理の詳細は図9Bを用いて説明する。
プロセス制御部113は、高優先度プロセス制御処理が完了した後、高優先度プロセス制御処理の結果に基づいて、ターゲット計算機の負荷の削減が成功したか否かを判定する(ステップS107)。
ターゲット計算機の負荷の削減が成功したと判定された場合(ステップS107がYES)、プロセス制御部113は、ステップS109に進む。
ターゲット計算機の負荷の削減が失敗したと判定された場合(ステップS107がNO)、プロセス制御部113は、優先度503が「高」かつ未処理のプロセスフローが存在するか否かを判定する(ステップS108)。
具体的には、プロセス制御部113は、高優先度プロセス制御処理において生成されたプロセスフローのリストが空であるか否かを判定する。プロセスフローのリストが空である場合、プロセス制御部113は、優先度503が「高」かつ未処理のプロセスフローが存在しないと判定する。
優先度503が「高」かつ未処理のプロセスフローが存在すると判定された場合(ステップS108がYES)、プロセス制御部113は、ステップS106に戻り、同様の処理を実行する。
優先度503が「高」かつ未処理のプロセスフローが存在しないと判定された場合(ステップS108がNO)、プロセス制御部113は、ステップS109に進む。
ステップS109では、プロセス制御部113は、ステップS101において検索された全ての計算機について処理が完了したか否かを判定する(ステップS109)。
ステップS101において検索された全ての計算機について処理が完了していないと判定された場合(ステップS109がNO)、プロセス制御部113は、ステップS102に戻り、同様の処理を実行する。
ステップS101において検索された全ての計算機について処理が完了したと判定された場合(ステップS109がYES)、プロセス制御部113は、プロセス制御処理を終了する。
図9Aは、実施例1のプロセス制御部113が実行する低優先度プロセス制御処理の一例を説明するフローチャートである。図9Bは、実施例1のプロセス制御部113が実行する高優先度プロセス制御処理の一例を説明するフローチャートである。
まず、図9Aを用いて低優先度プロセス制御処理について説明する。
プロセス制御部113は、ターゲット計算機に関連するプロセスフローの中から優先度が低いプロセスフローを検索する(ステップS201)。
具体的には、プロセス制御部113は、プロセスフロー構成情報121を参照し、計算機ID406にターゲット計算機の識別情報が設定されたプロセスフローを特定する。さらに、プロセス制御部113は、プロセスフロー要件情報122を参照し、プロセスフローID501に特定されたプロセスフローの識別情報が格納されるエントリの中から、優先度503が「低」であるプロセスフローを検索する。プロセス制御部113は、検索されたプロセスフローのリストを生成する。
次に、プロセス制御部113は、検索されたプロセスフローの中からターゲットプロセスフローを選択する(ステップS202)。
具体的には、プロセス制御部113は、生成されたリストの中からターゲットプロセスフローを選択する。このとき、プロセス制御部113は、リストからターゲットプロセスフローを削除する。ターゲットプロセスフローの選択方法は、リストの登録順に選択する方法等がある。
次に、プロセス制御部113は、プロセス150の移動によるデータの欠損が許容されているか否かを判定する(ステップS203)。
具体的には、プロセス制御部113は、プロセスフロー要件情報122を参照し、ターゲットプロセスフローに対応するエントリの制御フラグ505が「1」であるか否かを判定する。制御フラグ505が「1」である場合、プロセス制御部113は、プロセス150の移動によるデータの欠損が許容されていると判定する。
プロセス150の移動によるデータの欠損が許容されていると判定された場合(ステップS203がYES)、プロセス制御部113は、プロセス移動処理を実行し(ステップS204)、その後、低優先度プロセス制御処理を終了する。
プロセス移動処理は、サーバ100及びゲートウェイ101間でプロセス150を移動させることによって、ターゲット計算機の負荷を削減するための処理である。プロセス移動処理の詳細は図10で説明する。なお、プロセス移動処理では、ターゲットプロセスフローを構成するプロセス150が移動対象となる。
プロセス150の移動によるデータの欠損が許容されていないと判定された場合(ステップS203がNO)、プロセス制御部113は、プロセス性能変更処理を実行し(ステップS205)、その後、低優先度プロセス制御処理を終了する。
プロセス性能変更処理は、プロセス150の性能を制御するパラメータを変更することによって、ターゲット計算機の負荷を削減するための処理である。プロセス性能変更処理の詳細は図11で説明する。なお、プロセス性能変更処理では、ターゲットプロセスフローを構成するプロセス150のパラメータが変更対象となる。
次に、図9Bを用いて高優先度プロセス制御処理について説明する。
プロセス制御部113は、ターゲット計算機に関連するプロセスフローの中から優先度が高いプロセスフローを検索する(ステップS301)。
具体的には、プロセス制御部113は、プロセスフロー構成情報121を参照し、計算機ID406にターゲット計算機の識別情報が設定されたプロセスフローを特定する。さらに、プロセス制御部113は、プロセスフロー要件情報122を参照し、プロセスフローID501に特定されたプロセスフローの識別情報が格納されるエントリの中から、優先度503が「高」であるプロセスフローを検索する。プロセス制御部113は、検索されたプロセスフローのリストを生成する。
ステップS302からステップS305の処理は、ステップS202及びステップS205の処理と同様の処理である。ただし、処理の対象は優先度503が「高」であるプロセスフローである点が異なる。
本実施例では、制御フラグ505に基づいて、プロセス移動処理及びプロセス性能変更処理のいずれかを実行するように制御しているがこれに限定されない。例えば、以下のような処理でもよい。
プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセスフローを構成するプロセス150を実行する計算機を特定する。プロセス制御部113は、プロセスフロー負荷情報123を参照し、特定された計算機のプロセスフロー負荷の合計値(計算機の負荷)を算出する。さらに、プロセス制御部113は、特定された全ての計算機の負荷が閾値以上であるか否かを判定する。すなわち、プロセスフローを構成するプロセス150の移動が可能であるか否かが判定される。
特定された計算機のうち少なくとも一つの計算機の負荷が閾値より小さいと判定された場合、プロセス制御部113は、プロセス移動処理を実行する。
特定された全ての計算機の負荷が閾値以上であると判定された場合、プロセス制御部113は、プロセス150の移動によるデータの欠損が許容されているか否かを判定する。プロセス150の移動によるデータの欠損が許容されている場合、プロセス制御部113はプロセス移動処理を実行する。プロセス150の移動によるデータの欠損が許容されていない場合、プロセス制御部113は管理者に対してエラーを通知する。
以上が低優先度プロセス制御処理及び高優先度プロセス制御処理の変形例の説明である。
図10は、実施例1のプロセス制御部113が実行するプロセス移動処理の一例を説明するフローチャートである。
プロセス制御部113は、ステップS102において選択されたターゲット計算機がサーバ100であるか否かを判定する(ステップS401)。
ターゲット計算機がサーバ100であると判定された場合(ステップS401がYES)、プロセス制御部113は、プロセスフロー構成情報121を参照し、サーバ100が実行しているプロセス150の中からターゲットプロセスフロー内の実行順が最も先頭のプロセス150を選択する(ステップS402)。
例えば、図5に示すプロセスフロー構成情報121の場合、識別情報が「F3」のプロセス150が選択される。このように制御する理由は、プロセス150を移動した後もプロセスフローを構成するプロセス150の実行順を維持するためである。
次に、プロセス制御部113は、ターゲットプロセスフローを構成するプロセス150を実行するゲートウェイ101に、選択されたプロセス150を移動させた場合の推定負荷を算出する(ステップS403)。具体的には、以下のような処理が実行される。
プロセス制御部113は、プロセスフロー負荷情報123を参照し、ターゲットプロセスフローに対応するエントリからサーバ100のプロセスフロー負荷を取得する。また、プロセス制御部113は、プロセスフロー負荷情報123を参照し、移動先のゲートウェイ101に対応する列の値に基づいて、当該ゲートウェイ101のプロセスフロー負荷の合計値(ゲートウェイ101の負荷)を算出する。ここで、移動対象として選択されたプロセス150の負荷をαとし、ゲートウェイ101のプロセスフロー負荷の合計値をσとする。αの値は、計算機のプロセス毎の負荷を監視する機能を用いて取得できる。例えば、サーバ100のOS(Operating System)がLinux(登録商標)である場合、topコマンド及びpsコマンドを使用することによってプロセス毎の負荷を取得することができる。
プロセス制御部113は、ゲートウェイ性能情報120を参照し、ターゲットプロセスフローを構成するプロセス150を実行するゲートウェイ101に対応するエントリから性能比を取得する。ここで取得された性能比をβとする。
プロセス制御部113は、下式(1)にしたがって、選択されたプロセス150の移動後のゲートウェイ101の推定負荷を算出する。ここで、γは選択されたプロセス150の移動後のゲートウェイ101の推定負荷を表す。
以上がステップS403の処理の説明である。
次に、プロセス制御部113は、ゲートウェイ101の推定負荷が閾値より小さいか否かを判定する(ステップS404)。すなわち、移動先のゲートウェイ101に選択されたプロセス150を移動できるか否かが判定される。ゲートウェイ101の推定負荷が閾値より小さい場合、ゲートウェイ101へのプロセス150の移動が可能であると判定される。
ゲートウェイ101の推定負荷が閾値以上であると判定された場合(ステップS404がNO)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の失敗を示す値を出力する。
ゲートウェイ101の推定負荷が閾値より小さいと判定された場合(ステップS404がYES)、プロセス制御部113は、選択されたプロセス150をサーバ100からゲートウェイ101に移動させる(ステップS405)。また、プロセス制御部113は、プロセスフロー要件情報122のターゲットプロセスフローに対応するエントリの運用フラグ504に「1」を設定する(ステップS406)。計算機間のプロセス150の移動方法は公知の技術であるため詳細な説明は省略する。なお、計算機間のプロセス150の移動に伴ってデータ処理を一時的に停止される必要がある。
このとき、プロセス制御部113は、プロセスフロー構成情報121を参照し、選択されたプロセス150に対応する行の計算機ID406に移動先のゲートウェイ101の識別情報を設定する。
次に、プロセス制御部113は、選択されたプロセス150の移動後のサーバ100の負荷の削減が成功したか否かを判定する(ステップS407)。
例えば、プロセス制御部113は、プロセスフロー負荷情報123を参照し、ターゲットプロセスフローのプロセスフロー負荷を除く、サーバ100のプロセスフロー負荷の合計値が閾値より小さいか否かを判定する。また、別の方法としては、プロセス制御部113は、プロセス150を移動した後に一定時間待ち状態に移行し、その間に更新されたプロセスフロー負荷情報123に基づいて、サーバ100のプロセスフロー負荷の合計値を算出し、プロセスフロー負荷の合計値が閾値より小さいか否かを判定する。
上記の判定の結果、サーバ100のプロセスフロー負荷の合計値が閾値より小さい場合、プロセス制御部113は、サーバ100の負荷の削減が成功したと判定する。
サーバ100の負荷の削減が成功したと判定された場合(ステップS407がYES)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の成功を示す値を出力する。
サーバ100の負荷の削減が失敗したと判定された場合(ステップS407がNO)、プロセス制御部113は、プロセスフロー構成情報121を参照し、サーバ100がターゲットプロセスフローを構成する他のプロセス150を実行しているか否かを判定する(ステップS408)。
サーバ100がターゲットプロセスフローを構成する他のプロセス150を実行していると判定された場合(ステップS408がYES)、プロセス制御部113は、ステップS402に戻り、同様の処理を実行する。
サーバ100がターゲットプロセスフローを構成する他のプロセス150を実行していないと判定された場合(ステップS408がNO)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の失敗を示す値を出力する。
ステップS401において、ターゲット計算機がゲートウェイ101であると判定された場合(ステップS401がNO)、プロセス制御部113は、プロセスフロー構成情報121を参照し、ゲートウェイ101が実行しているプロセス150の中からターゲットプロセスフロー内の実行順が最後尾のプロセス150を選択する(ステップS409)。
例えば、図5に示すプロセスフロー構成情報121の場合、識別情報が「F1」のプロセス150が選択される。このように制御する理由は、プロセス150を移動した後もプロセスフローを構成するプロセス150の実行順を維持するためである。
次に、プロセス制御部113は、ターゲットプロセスフローを構成するプロセス150を実行するサーバ100に、選択されたプロセス150を移動させた場合の推定負荷を算出する(ステップS410)。具体的には、以下のような処理が実行される。
プロセス制御部113は、プロセスフロー負荷情報123を参照し、ターゲットプロセスフローに対応するエントリからゲートウェイ101のプロセスフロー負荷を取得する。また、プロセス制御部113は、プロセスフロー負荷情報123を参照し、移動先のサーバ100に対応する列の値に基づいて、当該サーバ100のプロセスフロー負荷の合計値(サーバ100の負荷)を算出する。ここで、移動対象として選択されたプロセス150の負荷をα’とし、サーバ100のプロセスフロー負荷の合計値をσ’とする。α’の値は、前述のαと同様に、計算機のプロセス毎の負荷を監視する機能を用いて取得できる。
プロセス制御部113は、ゲートウェイ性能情報120を参照し、選択されたプロセス150を実行するゲートウェイ101に対応するエントリから性能比を取得する。ここで取得された性能比をβ’とする。
プロセス制御部113は、下式(2)にしたがって、選択されたプロセス150の移動後のサーバ100の推定負荷を算出する。ここで、γ’は選択されたプロセス150の移動後のサーバ100の推定負荷を表す。
以上がステップS410の処理の説明である。
次に、プロセス制御部113は、サーバ100の推定負荷が閾値より小さいか否かを判定する(ステップS411)。すなわち、サーバ100に選択されたプロセス150を移動できるか否かが判定される。サーバ100の推定負荷が閾値より小さい場合、サーバ100へのプロセス150の移動が可能であると判定される。
サーバ100の推定負荷が閾値以上であると判定された場合(ステップS411がNO)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の失敗を示す値を出力する。
サーバ100の推定負荷が閾値より小さいと判定された場合(ステップS411がYES)、プロセス制御部113は、選択されたプロセス150をゲートウェイ101からサーバ100に移動させる(ステップS412)。また、プロセス制御部113は、プロセスフロー要件情報122のターゲットプロセスフローに対応するエントリの運用フラグ504に「1」を設定する(ステップS413)。計算機間のプロセス150の移動方法は公知の技術であるため詳細な説明は省略する。
このとき、プロセス制御部113は、プロセスフロー構成情報121を参照し、選択されたプロセス150に対応する行の計算機ID406にサーバ100の識別情報を設定する。
次に、プロセス制御部113は、選択されたプロセス150の移動後のゲートウェイ101の負荷の削減が成功したか否かを判定する(ステップS414)。ステップS414の判定方法は、ステップS407と同様である。
ゲートウェイ101の負荷の削減が成功したと判定された場合(ステップS414がYES)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の成功を示す値を出力する。
ゲートウェイ101の負荷の削減が失敗したと判定された場合(ステップS414がNO)、プロセス制御部113は、プロセスフロー構成情報121を参照し、ゲートウェイ101がターゲットプロセスフローを構成する他のプロセス150を実行しているか否かを判定する(ステップS415)。
ゲートウェイ101がターゲットプロセスフローを構成する他のプロセス150を実行していると判定された場合(ステップS415がYES)、プロセス制御部113は、ステップS409に戻り、同様の処理を実行する。
ゲートウェイ101がターゲットプロセスフローを構成する他のプロセス150を実行していないと判定された場合(ステップS415がNO)、プロセス制御部113は、プロセス移動処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の失敗を示す値を出力する。
図11は、実施例1のプロセス制御部113が実行するプロセス性能変更処理の一例を説明するフローチャートである。
プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセスフローを構成するプロセス150の中にパラメータの値を変更できるプロセス150が存在するか否かを判定する(ステップS501)。
具体的には、プロセス制御部113は、プロセスフローID401がターゲットプロセスフローの識別情報に一致するエントリを参照し、パラメータ404に値が設定された行が存在するか否かを判定する。当該行に対応するプロセス150がパラメータの値を変更できるプロセス150に対応する。
なお、パラメータの値を変更できるプロセス150が存在する場合、プロセス制御部113は、当該プロセス150のリストを生成する。
ターゲットプロセスフローを構成するプロセス150の中にパラメータの値を変更できるプロセス150が存在しないと判定された場合(ステップS501がNO)、プロセス制御部113は、プロセス性能変更処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の失敗を示す値を出力する。
ターゲットプロセスフローを構成するプロセス150の中にパラメータの値を変更できるプロセス150が存在すると判定された場合(ステップS501がYES)、プロセス制御部113は、検索されたプロセス150の中からターゲットプロセス150を選択する(ステップS502)。
具体的には、プロセス制御部113は、ステップS501において生成されたリストの中からターゲットプロセス150を選択する。このとき、プロセス制御部113は、リストからターゲットプロセス150を削除する。また、プロセス制御部113は、ターゲットプロセス150に対応する行のパラメータ404のコピーを第1シミュレーション用データとして生成し、プロセスフロー負荷情報123のコピーを第2シミュレーション用データとして生成する。
ターゲットプロセス150の選択方法は、プロセス150の実行順に基づいて選択する方法、計算機の負荷の高さの順に基づいてプロセス150を選択する方法、及び、負荷が最も高い計算機が実行するプロセス150を選択する方法等が考えられる。
次に、プロセス制御部113は、ターゲットプロセス150のパラメータの値を変更した場合の各計算機の推定負荷を算出する(ステップS503)。具体的には、以下のような処理が実行される。
プロセス制御部113は、第1シミュレーション用データの設定値を、刻み幅に基づいて一段階下げた値に変更する。さらに、プロセス制御部113は、当該パラメータに関連する計算式に基づいて各計算機の推定プロセスフロー負荷を算出する。
プロセス制御部113は、第2シミュレーション用データの負荷情報602に推定プロセスフロー負荷を設定する。プロセス制御部113は、第2シミュレーション用データを参照して、各計算機のプロセスフロー負荷の合計値(計算機の推定負荷)を算出する。
ここで、一例として、ターゲットプロセス150がフィルタリングである場合を考える。抽出するデータ数が「5」から「4」に変更された場合、ターゲットプロセス150より実行順が後のプロセス150が扱うデータ数も削減される。この場合、プロセス制御部113は、ターゲットプロセス150及びターゲットプロセス150より実行順が後のプロセス150による負荷(プロセスフロー負荷)の4/5を推定プロセスフロー負荷として算出する。
なお、前述した算出方法は一例であってこれに限定されない。プロセス150の種別及びパラメータの変更内容に応じた算出式を設定することができる。以上がステップS503の処理の説明である。
次に、プロセス制御部113は、ターゲット計算機の推定負荷が閾値より小さいか否かを判定する(ステップS504)。
ターゲット計算機の推定負荷が閾値より小さいと判定された場合(ステップS504がYES)、プロセス制御部113は、ステップS503のパラメータの値の変更結果を実際のプロセス150に反映する(ステップS505)。また、プロセス制御部113は、プロセスフロー要件情報122のターゲットプロセスフローに対応するエントリの運用フラグ504に「1」を設定する(ステップS507)。その後、プロセス制御部113は、プロセス性能変更処理を終了する。このとき、プロセス制御部113は、ターゲット計算機の負荷の削減の成功を示す値を出力する。なお、パラメータの変更に伴うデータ処理の停止の必要はない。
具体的には、プロセス制御部113は、ターゲットプロセス150を実行する計算機に、パラメータの値の変更内容として第1シミュレーション用データを含む変更要求を送信する。また、プロセス制御部113は、第1シミュレーション用データに基づいて、ステップS501で検索されたプロセスフロー構成情報121の行のパラメータ404を更新する。
ステップS504において、ターゲット計算機の推定負荷が閾値以上であると判定された場合(ステップS504がNO)、プロセス制御部113は、ターゲットプロセス150のパラメータをさらに変更できるか否かを判定する(ステップS506)。
具体的には、プロセス制御部113は、第1シミュレーション用データの設定値が最小値と一致するか否かを判定する。設定値が最小値と一致する場合、プロセス制御部113は、ターゲットプロセス150のパラメータを変更できないと判定する。
ターゲットプロセス150のパラメータを変更できると判定された場合(ステップS506がYES)、プロセス制御部113は、ステップS503に戻り、同様の処理を実行する。
ターゲットプロセス150のパラメータを変更できないと判定された場合(ステップS506がNO)、プロセス制御部113は、ステップS501に戻り、同様の処理を実行する。なお、ステップS501では、プロセス制御部113は、リストが空であるか否かを判定することによって、パラメータを変更できるプロセス150が存在するか否かを判定する。
図8から図11を用いて説明したように、データ処理システム1を構成するサーバ100及びゲートウェイ101のいずれかの負荷が高くなった場合、サーバ100は、プロセスフロー負荷及びプロセスフローの属性に基づいて、プロセス150の移動又はプロセス150のパラメータの変更のいずれかを実行する。これによって、特定の計算機の負荷が高い状態を回避できる。
図12は、実施例1のプロセス制御部113が実行するプロセス位置復帰処理の一例を説明するフローチャートである。
プロセス位置復帰処理は、プロセス移動処理によって移動されたプロセス150を可能な限り、変更前の位置に戻すための処理である。
プロセス制御部113は、周期的に、又は、管理者からの指示を受け付けた場合、以下で説明するプロセス位置復帰処理を実行する。
プロセス制御部113は、プロセスフローの中からターゲットプロセスフローを選択する(ステップS601)。具体的には、以下のような処理が実行される。
プロセス制御部113は、プロセスフロー要件情報122を参照し、運用フラグ504が「1」であるプロセスフローを特定する。さらに、プロセス制御部113は、プロセスフロー構成情報121を参照し、特定されたプロセスフローの初期計算機ID405及び計算機ID406の値が異なる行を含むエントリを検索する。プロセス制御部113は、検索されたプロセスフローのリストを生成する。
プロセス制御部113は、リストからターゲットプロセスを選択する。このとき、プロセス制御部113は、リストからターゲットプロセスフローを削除する。また、プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセスフローを構成するプロセス150であり、かつ、初期計算機ID405及び計算機ID406の値が異なるプロセス150のリストを生成する。すなわち、移動されたプロセス150のリストが生成される。
以下の説明では、プロセス150のリストに登録されるプロセス150を復帰プロセス150とも記載する。以上がステップS601の処理の説明である。
次に、プロセス制御部113は、プロセスフロー負荷情報123を参照し、ターゲットプロセスフローを構成するプロセス150を実行する全ての計算機の負荷が閾値より小さいか否かを判定する(ステップS602)。
ターゲットプロセスフローを構成するプロセス150を実行する少なくとも一つの計算機の負荷が閾値以上であると判定された場合(ステップS602がNO)、プロセス制御部113は、復帰プロセス150の移動ができないため、ステップS610に進む。
ターゲットプロセスフローを構成するプロセス150を実行する全ての計算機の負荷が閾値より小さいと判定された場合(ステップS602がYES)、プロセス制御部113は、全ての計算機の負荷が減少傾向にあるか否かを判定する(ステップS603)。
具体的には、プロセス制御部113は、プロセスフロー負荷情報123のターゲットプロセスフローに対応するエントリの負荷変動情報603を参照する。プロセス制御部113は、各計算機の統計値が閾値より小さいか否かを判定する。例えば、プロセス制御部113は、負荷変動情報603の値が「0」より小さいか否かを判定する。
少なくとも一つの計算機の負荷が減少傾向にないと判定された場合(ステップS603がNO)、プロセス制御部113は、復帰プロセス150の移動ができないため、ステップS610に進む。
全ての計算機の負荷が減少傾向にあると判定された場合(ステップS603がYES)、プロセス制御部113は、復帰プロセス150の中からターゲットプロセス150を選択する(ステップS604)。
このとき、プロセス制御部113は、ステップS601で生成された復帰プロセス150のリストからターゲットプロセス150を削除する。
次に、プロセス制御部113は、ターゲットプロセス150を移動前の計算機に移動した場合の各計算機の推定負荷を算出する(ステップS605)。ステップS605の処理はステップS403又はステップS409の処理と同様の処理である。
次に、プロセス制御部113は、各計算機の推定負荷が閾値より小さいか否かを判定する(ステップS606)。
少なくとも一つの計算機の推定負荷が閾値以上であると判定された場合(ステップS606がNO)、プロセス制御部113は、復帰プロセス150の移動ができないため、ステップS610に進む。
各計算機の推定負荷が閾値より小さいと判定された場合(ステップS606がYES)、プロセス制御部113は、ターゲットプロセス150を元の計算機に移動する(ステップS607)。
このとき、プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセス150に対応する行の計算機ID406に初期計算機ID405の値を設定する。
次に、プロセス制御部113は、未処理の復帰プロセス150が存在するか否かを判定する(ステップS608)。
具体的には、プロセス制御部113は、ステップS601において生成された復帰プロセス150のリストが空であるか否かを判定する。復帰プロセス150のリストが空である場合、プロセス制御部113は、未処理の復帰プロセス150が存在しないと判定する。
未処理の復帰プロセス150が存在すると判定された場合(ステップS608がYES)、プロセス制御部113は、ステップS604に戻り、同様の処理を実行する。
未処理の復帰プロセス150が存在しないと判定された場合(ステップS608がNO)、プロセス制御部113は、プロセスフロー要件情報122を参照し、ターゲットプロセスフローに対応するエントリの運用フラグ504に「0」を設定する(ステップS609)。その後、プロセス制御部113は、ステップS610に進む。
ステップS610では、プロセス制御部113は、未処理のプロセスフローが存在するか否かを判定する(ステップS610)。
具体的には、プロセス制御部113は、ステップS601において生成されたプロセスフローのリストが空であるか否かを判定する。プロセスフローのリストが空であると判定された場合、プロセス制御部113は、未処理のプロセスフローが存在しないと判定する。
未処理のプロセスフローが存在しないと判定された場合(ステップS610がNO)、プロセス制御部113は、プロセス位置復帰処理を終了する。
未処理のプロセスフローが存在すると判定された場合(ステップS610がYES)、プロセス制御部113は、ステップS601に戻り、同様の処理を実行する。
プロセス位置復帰処理を実行することによって、負荷の減少に伴って、プロセス150の位置を元に戻すことができる。
図13は、実施例1のプロセス制御部113が実行するパラメータ復帰処理の一例を説明するフローチャートである。
パラメータ復帰処理は、プロセス性能変更処理によって変更されたパラメータの値を可能な限り、変更前の値に戻すための処理である。
プロセス制御部113は、周期的に、又は、管理者からの指示を受け付けた場合、以下で説明する復帰処理を実行する。
プロセス制御部113は、プロセスフローの中からターゲットプロセスフローを選択する(ステップS701)。具体的には、以下のような処理が実行される。
プロセス制御部113は、プロセスフロー要件情報122を参照し、運用フラグ504が「1」であるプロセスフローを特定する。さらに、プロセス制御部113は、プロセスフロー構成情報121を参照し、通常値及び設定値が異なるプロセスの行を含むエントリを検索する。プロセス制御部113は、検索されたプロセスフローのリストを生成する。
プロセス制御部113は、リストからターゲットプロセスを選択する。このとき、プロセス制御部113は、リストからターゲットプロセスフローを削除する。また、プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセスフローを構成するプロセス150であり、かつ、設定値が通常値と異なるプロセス150のリストを生成する。すなわち、プロセス性能変更処理によってパラメータの値が変更されたプロセス150のリストが生成される。
以下の説明では、プロセス150のリストに登録されるプロセス150を復帰プロセス150とも記載する。以上がステップS701の処理の説明である。
次に、プロセス制御部113は、プロセスフロー負荷情報123を参照し、ターゲットプロセスフローを構成するプロセス150を実行する全ての計算機の負荷が閾値より小さいか否かを判定する(ステップS702)。ステップS702の処理は、ステップS602の処理と同様である。
ターゲットプロセスフローを構成するプロセス150を実行する少なくとも一つの計算機の負荷が閾値以上であると判定された場合(ステップS702がNO)、プロセス制御部113は、復帰プロセス150のパラメータの値を変更できないため、ステップS711に進む。
ターゲットプロセスフローを構成するプロセス150を実行する全ての計算機の負荷が閾値より小さいと判定された場合(ステップS702がYES)、プロセス制御部113は、全ての計算機の負荷が減少傾向にあるか否かを判定する(ステップS703)。ステップS703の処理は、ステップS603の処理と同様である。
少なくとも一つの計算機の負荷が減少傾向にないと判定された場合(ステップS703がNO)、プロセス制御部113は、復帰プロセス150のパラメータの値を変更できないため、ステップS711に進む。
全ての計算機の負荷が減少傾向にあると判定された場合(ステップS703がYES)、プロセス制御部113は、復帰プロセス150の中からターゲットプロセス150を選択する(ステップS704)。
このとき、プロセス制御部113は、復帰プロセス150のリストからターゲットプロセス150を削除する。また、プロセス制御部113は、プロセスフロー構成情報121を参照し、ターゲットプロセス150に対応する行のパラメータ404のコピーを第3シミュレーション用データとして生成する。
次に、プロセス制御部113は、ターゲットプロセス150のパラメータの値を変更した場合の各計算機の推定負荷を算出する(ステップS705)。ステップS605の処理はステップS503の処理と同様の処理である。ただし、ステップS605では、プロセス制御部113は、シミュレーション用データの設定値を刻み幅に基づいて一段階上げた値に変更する。
次に、プロセス制御部113は、各計算機の推定負荷が閾値より小さいか否かを判定する(ステップS706)。
少なくとも一つの計算機の推定負荷が閾値以上であると判定された場合(ステップS706がNO)、プロセス制御部113は、復帰プロセス150のパラメータの値を変更できないため、ステップS711に進む。
各計算機の推定負荷が閾値より小さいと判定された場合(ステップS706がYES)、プロセス制御部113は、ステップS705のパラメータの値の変更結果を実際のプロセス150に反映する(ステップS707)。
具体的には、プロセス制御部113は、ターゲットプロセス150を実行する計算機に、パラメータの値の変更内容として第3シミュレーション用データを含む変更要求を送信する。このとき、プロセス制御部113は、ステップS703で検索されたプロセスフロー構成情報121の行のパラメータ404を第3シミュレーション用データに基づいて更新する。
次に、プロセス制御部113は、変更後のパラメータの値が通常値に一致するか否かを判定する(ステップS708)。
具体的には、プロセス制御部113は、プロセスフロー構成情報121のターゲットプロセス150に対応する行のパラメータ404を参照し、設定値が通常値に一致するか否かを判定する。
変更後のパラメータの値が通常値に一致しないと判定された場合(ステップS708がNO)、プロセス制御部113は、ステップS705に戻り、同様の処理を実行する。
変更後のパラメータの値が通常値に一致すると判定された場合(ステップS708がYES)、プロセス制御部113は、プロセスフロー要件情報122を参照し、ターゲットプロセスフローに対応するエントリの運用フラグ504に「0」を設定する(ステップS709)。
次に、プロセス制御部113は、未処理の復帰プロセス150が存在するか否かを判定する(ステップS710)。
具体的には、プロセス制御部113は、ステップS701において生成された復帰プロセス150のリストが空であるか否かを判定する。復帰プロセス150のリストが空である場合、プロセス制御部113は、未処理の復帰プロセス150が存在しないと判定する。
未処理の復帰プロセス150が存在すると判定された場合(ステップS710がYES)、プロセス制御部113は、ステップS704に戻り、同様の処理を実行する。
未処理の復帰プロセス150が存在しないと判定された場合(ステップS710がNO)、プロセス制御部113は、ステップS711に進む。
ステップS711では、プロセス制御部113は、未処理のプロセスフローが存在するか否かを判定する(ステップS711)。
具体的には、プロセス制御部113は、ステップS701において生成されたプロセスフローのリストが空であるか否かを判定する。プロセスフローのリストが空であると判定された場合、プロセス制御部113は、未処理のプロセスフローが存在しないと判定する。
未処理のプロセスフローが存在しないと判定された場合(ステップS711がNO)、プロセス制御部113は、パラメータ復帰処理を終了する。
未処理のプロセスフローが存在すると判定された場合(ステップS711がYES)、プロセス制御部113は、ステップS701に戻り、同様の処理を実行する。
パラメータ復帰処理を実行することによって、負荷の減少に伴って、段階的にプロセスフローの性能を元に戻すことができる。
以上で説明したように、本実施例によれば、プロセスフローを構成するプロセス150の性能の変更及び位置の変更のいずれかを実行することによって、プロセス150の実行に伴う特定の計算機の負荷を削減できる。これによって、データ処理を継続することができる。
また、本実施例の制御方法では、データ処理に要するリソースの追加する必要がないため、運用コストを削減できる効果も有する。
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。また、例えば、上記した実施例は本発明を分かりやすく説明するために構成を詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、各実施例の構成の一部について、他の構成に追加、削除、置換することが可能である。
また、上記の各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、本発明は、実施例の機能を実現するソフトウェアのプログラムコードによっても実現できる。この場合、プログラムコードを記録した記憶媒体をコンピュータに提供し、そのコンピュータが備えるプロセッサが記憶媒体に格納されたプログラムコードを読み出す。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施例の機能を実現することになり、そのプログラムコード自体、及びそれを記憶した記憶媒体は本発明を構成することになる。このようなプログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、CD−ROM、DVD−ROM、ハードディスク、SSD(Solid State Drive)、光ディスク、光磁気ディスク、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどが用いられる。
また、本実施例に記載の機能を実現するプログラムコードは、例えば、アセンブラ、C/C++、perl、Shell、PHP、Java(登録商標)等の広範囲のプログラム又はスクリプト言語で実装できる。
さらに、実施例の機能を実現するソフトウェアのプログラムコードを、ネットワークを介して配信することによって、それをコンピュータのハードディスクやメモリ等の記憶手段又はCD−RW、CD−R等の記憶媒体に格納し、コンピュータが備えるプロセッサが当該記憶手段や当該記憶媒体に格納されたプログラムコードを読み出して実行するようにしてもよい。
上述の実施例において、制御線や情報線は、説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。全ての構成が相互に接続されていてもよい。