(57)【要約】（課題）開示の技術は、プログラムの動作状況を診断する際、コンピュータのシステム上におけるＣＰＵの負荷率の変動を抑制する。（解決手段）  実行するプログラムの負荷を制御する負荷制御装置であって、プログラムを実行する演算処理装置と、演算処理装置の負荷率を検出する負荷検出部と、所定の負荷率と負荷検出部により検出された負荷率との差分を求める負荷差分検出部と、負荷差分検出部より検出された差分に基づいて、演算処理装置が実行するプログラムの起動又は停止を制御する負荷制御部と、を備え、負荷制御部は、演算処理装置のカーネル空間又はユーザ空間における演算処理装置が実行するプログラムの起動又は停止を制御する。
2012025962.tif 000002
【特許請求の範囲】
【請求項１】
実行するプログラムの負荷を制御する負荷制御装置であって、
前記プログラムを実行する演算処理装置と、
前記演算処理装置の負荷率を検出する負荷検出部と、
所定の負荷率と前記負荷検出部により検出された負荷率との差分を求める負荷差分検出部と、
前記負荷差分検出部より検出された差分に基づいて、前記演算処理装置が実行するプログラムの起動又は停止を制御する負荷制御部と、
を備えることを特徴とする負荷制御装置。
【請求項２】
前記負荷制御部は、前記演算処理装置のカーネル空間又はユーザ空間における前記演算処理装置が実行するプログラムの起動又は停止を制御することを特徴とする請求項１記載の負荷制御装置。
【請求項３】
前記負荷制御部は、前記演算処理装置が前記所定の負荷率となるように所定時間、前記前記演算処理装置が実行するプログラムの起動又は停止を制御することを特徴とする請求項１記載の負荷制御装置。
【請求項４】
前記負荷制御部は、前記演算処理装置が前記所定の負荷率となるように所定時間、前記演算処理装置が実行する部分プログラムの起動又は停止を制御し、前記所定時間が経過した後に前記所定の負荷率を増減した第２の負荷率となるように前記演算処理装置が実行する部分プログラムの起動又は停止を制御することを特徴とする請求項１記載の負荷制御装置。
【請求項５】
前記所定の負荷率、前記負荷率の増減の割合及び前記所定時間を含む設定値を格納する記憶装置を有することを特徴とする請求項４記載の負荷制御装置。
【請求項６】
プログラムを実行する情報処理装置の負荷を制御する負荷制御方法であって、
前記情報処理装置が有する演算処理装置に、
前記プログラムを動作させるステップと、
前記演算処理装置の負荷率を検出するステップと、
所定の負荷率と前記検出された前記演算処理装置の負荷率との差分を求めるステップと、
検出された差分に基づいて前記演算処理装置が実行するプログラムの一部である部分プログラムの起動又は停止を制御するステップを実行させることを特徴とする負荷制御方法。
【請求項７】
前記検出された差分に基づいて前記演算処理装置が実行する部分プログラムの起動又は停止は、前記演算処理装置のカーネル空間又はユーザ空間における前記スレッドの起動又は停止であることを特徴とする請求項６記載の負荷制御方法。
【請求項８】
前記演算処理装置が前記所定の負荷率となるように所定時間の間、前記演算処理装置が実行する部分プログラムの起動又は停止を制御することを特徴とする請求項６記載の負荷制御方法。
【請求項９】
前記演算処理装置が前記所定の負荷率となるように所定時間の間、前記演算処理装置が実行する部分プログラムの起動又は停止を制御し、前記所定時間が経過した後に、前記所定の負荷率を増減した第２の所定の負荷率となるように前記演算処理装置が実行する部分プログラムの起動又は停止を制御することを特徴とする請求項６記載の負荷制御方法。
【請求項１０】
前記負荷制御装置はさらに、
前記所定の負荷率、前記負荷率を増減する増減の割合及び前記負荷率の制御時間を含む設定値を格納する記憶装置を有することを特徴とする請求項９の負荷制御方法。
【請求項１１】
プログラムを実行する情報処理装置の負荷を制御する負荷制御プログラムであって、
前記情報処理装置が有する演算処理装置に、
前記プログラムを動作させるステップと、
前記演算処理装置の負荷率を検出させるステップと、
所定の負荷率と前記検出された前記演算処理装置の負荷率との差分を求めるステップと、
検出された差分に基づいて前記演算処理装置が実行するプログラムの一部である部分プログラムの起動又は停止を制御するステップを実行させることを特徴とする負荷制御プログラム。
【請求項１２】
前記検出された差分に基づいて前記演算処理装置が実行する部分プログラムの起動又は停止は、前記演算処理装置のカーネル空間又はユーザ空間における前記スレッドの起動又は停止であることを特徴とする請求項１１記載の負荷制御プログラム。
【請求項１３】
前記演算処理装置が前記所望の負荷率となるように所定時間の間前記負荷率を制御することを特徴とする請求項１１記載の負荷制御プログラム。
【請求項１４】
前記演算処理装置が前記所定の負荷率となるように所定時間の間、前記演算処理装置が実行する部分プログラムの起動又は停止を制御し、前記所定の時間が経過した後に、前記所定の負荷率を増減した第２の所定の負荷率となるように前記演算処理装置が実行する部分プログラムの起動又は停止を制御することを特徴とする請求項１１記載の負荷制御プログラム。
【請求項１５】
前記情報処理装置はさらに、
前記所定の負荷率、前記負荷率を増減する増減の割合及び前記負荷率の制御時間を含む設定値を格納する記憶装置を有することを特徴とする請求項１１の負荷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、負荷制御装置、負荷制御方法及び負荷制御プログラムに関する。
【背景技術】
【０００２】
従来、情報処理装置であるコンピュータでプログラムを実行する際、演算処理装置としてのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の負荷率を監視することによってプログラムの動作状況を監視するＣＰＵ負荷監視装置が知られている。ＣＰＵ負荷監視装置は、定量的なＣＰＵの負荷をコンピュータシステムに加える方法が一般的である。【０００３】
従来のＣＰＵ負荷監視装置は、監視対象であるターゲット・プログラムを動作させている状態でＣＰＵ負荷監視装置を起動し、プログラムの動作状況を監視する。ＣＰＵ負荷監視装置の起動時に、ターゲット・プログラムが動作しているコンピュータシステムの負荷にＣＰＵ負荷監視装置が監視したＣＰＵの負荷率が加算され、ＣＰＵの負荷率が想定以上に上昇する問題が発生する。【０００４】
さらに、コンピュータシステムにおけるＣＰＵの負荷率は、ターゲット・プログラム以外のプログラムの動作状況により変動する。例えば、ターゲット・プログラム以外のプログラムが動作すると、ＣＰＵに負荷が加わるためＣＰＵの負荷率は上昇する。一方、ターゲット・プログラム以外のプログラムの動作が停止すると、ＣＰＵの負荷が軽減するためＣＰＵの負荷率は減少する。コンピュータシステムのＣＰＵ負荷の変動が発生すると、ＣＰＵ負荷監視装置によって一旦設定された所定のＣＰＵの負荷率を維持することは困難であった。このため、ターゲット・プログラムをコンピュータシステム上で動作させるＣＰＵの負荷率を維持することは困難であった。【０００５】
従来技術として、下記の文献がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１８２８２号公報
【特許文献２】特開２０００−２８４９７６号公報
【発明の概要】
【０００７】
（発明が解決しようとする課題）
開示の技術は、プログラムの動作状況を診断する際、コンピュータシステム上におけるＣＰＵの負荷の変動を抑制し、所定の負荷を維持する負荷制御装置、負荷制御方法及び負荷制御プログラムを提供することを目的とする。
【０００８】
（課題を解決するための手段）
本発明の課題を解決するため、開示の技術の第１の側面によれば、
実行するプログラムの負荷を制御する負荷制御装置であって、
前記プログラムを実行する演算処理装置と、
前記演算処理装置の負荷率を検出する負荷検出部と、
所定の負荷率と前記負荷検出部により検出された負荷率との差分を求める負荷差分検出部と、
前記負荷差分検出部より検出された差分に基づいて、前記演算処理装置が実行するプログラムの起動又は停止を制御する負荷制御部と、
を備えることを特徴とする負荷制御装置を提供する。
【０００９】
開示の技術の第２の側面によれば、
プログラムを実行する情報処理装置の負荷を制御する負荷制御方法であって、
前記情報処理装置が有する演算処理装置に、
前記プログラムを動作させるステップと、
前記演算処理装置の負荷率を検出するステップと、
所定の負荷率と前記検出された前記演算処理装置の負荷率との差分を求めるステップと、
検出された差分に基づいて前記演算処理装置が実行するプログラムの一部である部分プログラムの起動又は停止を制御するステップを実行させることを特徴とする負荷制御方法を提供する。
【００１０】
開示の技術の第３の側面によれば、
プログラムを実行する情報処理装置の負荷を制御する負荷制御プログラムであって、
前記情報処理装置が有する演算処理装置に、
前記プログラムを動作させるステップと、
前記演算処理装置の負荷率を検出させるステップと、
所定の負荷率と前記検出された前記演算処理装置の負荷率との差分を求めるステップと、
検出された差分に基づいて前記演算処理装置が実行するプログラムの一部である部分プログラムの起動又は停止を制御するステップを実行させることを特徴とする負荷制御プログラムを提供する。
【００１１】
（発明の効果）
開示の技術によれば、負荷検出部によりプログラムを所定時間に亘って実行してプロセッサの負荷率を検出し、負荷差分検出部により検出されたプロセッサの負荷率と、プロセッサの実効負荷率との差分を求める。求められた差分に基づいてスレッドを起動又はスレッドを停止してプロセッサの負荷率の変動を抑制し、所定の負荷率を維持することができるため、ターゲット・プログラムを動作させる際のプロセッサの負荷率を正確に測定することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るサーバの概略構成図を示す図である。
【図２】図２は、実施例１に係る負荷制御装置の概要を示す図である。
【図３】図３は、実施例１に係るパラメタファイルの一部を示す図である。
【図４】図４は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図５】図５は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図６】図６は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図７】図７は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図８】図８は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図９】図９は、実施例１に係る負荷制御装置の動作例を示すシーケンス図である。
【図１０】図１０は、実施例２に係るパラメタファイルの一部を示す図である。
【図１１】図１１は、実施例２に係る負荷制御装置の動作例を示すシーケンス図である。
【図１２】図１２は、実施例２に係る負荷制御装置の動作例を示すシーケンス図である。
【図１３】図１３は、実施例１及び実施例２に係るコマンド制御部の動作を示すフローチャートを示す図である。
【図１４】図１４は、実施例１及び実施例２に係るコマンド制御部の動作を示すフローチャートを示す図である。
【図１５】図１５は、実施例１及び実施例２に係る負荷制御部の動作を示すフローチャートを示す図である。
【図１６】図１６は、実施例１及び実施例２に係る負荷監視部の動作を示すフローチャートを示す図である。
【図１７】図１７は、実施例１及び実施例２に係るターゲット監視部の動作を示すフローチャートを示す図である。
【図１８】図１８は、実施例３に係る負荷制御装置の概要を示す図である。
【図１９】図１９は、実施例３に係るパラメタファイルの一部を示す図である。
【図２０】図２０は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【図２１】図２１は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【図２２】図２２は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【図２３】図２３は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【図２４】図２４は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【図２５】図２５は、実施例３に係る負荷制御装置の動作例を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、開示の技術の実施例１、実施例２及び実施例３に係る負荷制御装置、負荷制御方法及び負荷制御プログラムが説明される。ただし、開示の技術は各実施例に限定されるものではない。
【００１４】
（実施例１）
図１から図９では、実施例１に係る負荷制御装置、負荷制御方法及び負荷制御プログラムが説明される。
【００１５】
図１は、実施例１に係る情報処理装置としてのサーバ１００の構成図を示す。
サーバ１００は、ＣＰＵ１０１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０３、グラフィック処理装置１０５、入力インタフェース１０６、通信インタフェース１０７及びバス１０８を備える。
【００１６】
サーバ１００は、ＣＰＵ１０１が実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）によって全体が制御される。ＣＰＵ１０１には、バス１０８を介してＲＡＭ１０２、ＨＤＤ１０３、グラフィック処理装置１０５、入力インタフェース１０６通信インタフェース１０７が接続される。
【００１７】
ＣＰＵ１０１は、タイマ１０１Ａの機能を備える。タイマ１０１Ａは、負荷時間タイマ、負荷監視間隔タイマ及びターゲット監視タイマとして機能する。負荷時間タイマは、ＣＰＵ１０１に負荷を加える期間（以下「負荷時間」）を計時する機能を有する。負荷監視間隔タイマは、ＣＰＵ１０１に負荷を加えた後、ＣＰＵ１０１を監視する時間の間隔を計時する機能を有する。ＣＰＵ１０１に負荷を加える方法としては、例えば、ＣＰＵ１０１が有する演算器等のハードウェア資源に対してスレッド又はダミープログラムの投入を実行する方法が挙げられる。ターゲット監視間隔タイマは、監視対象となるターゲット・プログラム１１５Ａを監視する時間の間隔を計時する機能を有する。
【００１８】
ＲＡＭ１０２は、例えば、ＣＰＵ１０１が実行するＯＳプログラム、アプリケーションプログラム、ターゲット・プログラム１１５Ａ及び後述するダミープログラムの少なくとも一部を一時的に格納する。ターゲット・プログラム１１５は、実施例１に係る負荷制御装置で監視対象となるプログラムである。また、ＲＡＭ１０２は、ＣＰＵ１０１における処理に必要な各種データを格納する。
【００１９】
なお、ターゲット・プログラム１１５Ａは、ＲＡＭ１０２以外の記憶媒体に保持してもよい。ターゲット・プログラム１１５Ａは、例えば、サーバ１００に挿入されるフレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＭＯディスク、ＤＶＤディスク、光磁気ディスク及びＩＣカードなどの「可搬用の物理的記憶媒体」に記憶される。ターゲット・プログラム１１５Ａは、サーバ１００の内外に備えられるディスク装置、あるいは公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してサーバ１００に接続される「他のコンピュータ（またはサーバ）」が保持する記憶媒体に記憶される。サーバ１００は、上記記憶媒体からターゲット・プログラム１１５Ａを読み出して実行する。
【００２０】
ＨＤＤ１０３は、例えば、ＯＳ、アプリケーションプログラム及び後述するダミープログラムを格納する。ＨＤＤ１０３は、後述するパラメタファイル１０４を格納する。
【００２１】
グラフィック処理装置１０５には、モニタ１１が接続される。グラフィック処理装置１０５は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１に表示させる。
【００２２】
入力インタフェース１０６は、キーボード１２及びマウス１３が接続される。入力インタフェース１０６は、キーボード１２及びマウス１３から送られてくる信号を、バス１０８を介してＣＰＵ１０１に送信する。
【００２３】
通信インタフェース１０７は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）１０に接続されている。通信インタフェース１０７は、ＬＡＮ１０を介して、不図示の他のサーバ及び後述する負荷制御装置１０００Ａの使用者である例えば保守員（ＣＥ）が使用するＣＥ端末１４との間でデータの送受信を行う。
【００２４】
図２は、実施例１に係る負荷制御装置１０００Ａの概要を示す図である。負荷制御装置１０００Ａは、サーバ１００内で実行される機能の１つである。負荷制御装置１０００Ａは、ＣＰＵ１０１に備えられるコマンド処理部１１１、負荷制御部１１２、負荷監視部１１３及びターゲット監視部１１４としての機能を備える。
【００２５】
コマンド処理部１１１は、入出力コマンド処理部１１１Ａ、ＣＰＵ負荷率取得部１１１Ｂ、ＣＰＵ負荷率比較部１１１Ｃ、ＣＰＵ負荷率調節部１１１Ｄ及びタイムアウト処理部１１１Ｅを備える。コマンド処理部１１１は、ＨＤＤ１０３に格納されているパラメタファイル１０４の定義内容を読み込む。コマンド処理部１１１は、読み込まれたパラメタファイル１０４の定義内容の値に従いＣＰＵ１０１の実効負荷率を設定する。
【００２６】
入出力コマンド処理部１１１Ａは、ＨＤＤ１０３から読み込まれたパラメタファイル１０４の定義内容により、例えば負荷を加える対象、負荷の加え方、負荷の度合、負荷を加える時間、前記負荷の監視間隔、前記プログラムの監視時間が定義される。ＣＰＵ１０１に対する「負荷」は、例えば、ＣＰＵ１０１が有する演算器等のハードウェア資源に対してスレッド又はダミープログラムの投入を実行することにより与えられる。入出力コマンド処理部１１１Ａは、負荷制御装置１０００Ａの使用者である例えば保守員（ＣＥ）が使用するＣＥ端末１４よりコマンド処理部１１１の起動要求を取得する。コマンド処理部１１１は、入出力コマンド処理部１１１Ａを介するＣＥ端末１４からの呼出要求に従って呼び出される。
【００２７】
ＣＰＵ負荷率取得部１１１Ｂは、入出力コマンド処理部１１１Ａを介してＣＥ端末１４からＣＰＵ１０１の現在の負荷率の取得要求を取得すると、負荷監視部１１３を呼出しＣＰＵ１０１の現在の負荷状態を取得する。なお、負荷監視部１１３は、例えばソフトウェアにより構成される。
【００２８】
ＣＰＵ負荷率比較部１１１Ｃは、ＣＰＵ負荷率取得部１１１ＢからＣＰＵ１０１の現在の負荷率を取得すると、取得した現在の負荷率と設定された実効負荷率との差分を求める。
【００２９】
ＣＰＵ負荷率調節部１１１Ｄは、負荷制御部１１２を起動させる。また、ＣＰＵ負荷率調節部１１１Ｄは、ＣＰＵ負荷率比較部１１１Ｃによって検出された現在の負荷率と設定された実効負荷率との差分に応じて負荷制御部１１２を呼出し、ＣＰＵ１０１のスレッド実行部１１２Ａに対するスレッドの投入又は停止を実行する要求を負荷制御部１１２に行う。なお、スレッドとは、ＣＰＵ１０１が実行するダミープログラムの実行単位である。スレッドは、例えば負荷制御部１１２で起動される所定のＣＰＵ負荷率をＣＰＵ１０１に加えるダミープログラムのスレッド、タスク又はプロセスを使用することができる。負荷制御部１１２は、スレッドを所定の数だけスレッド実行部１１２Ａに投入又は投入を停止することによって、ＣＰＵ１０１の負荷を調節することができる。
【００３０】
タイムアウト処理部１１１Ｅは、負荷時間タイマ・タイムアウト処理部１１１Ｅ１、終了処理部１１１Ｅ２、ターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３及び負荷監視間隔タイマ・タイムアウト処理部１１１Ｅ４を備える。タイムアウト処理部１１１Ｅは、負荷時間タイマ、ターゲット監視タイマ及び負荷監視タイマとして機能するタイマ１０１Ａにそれぞれ設定された負荷を加える時間、ターゲット監視時間及び負荷監視時間が経過、つまりタイムアウトした後の処理を行う。
【００３１】
負荷時間タイマ・タイムアウト処理部１１１Ｅ１は、設定された負荷を加える時間が経過して負荷時間タイマがタイムアウトした後、終了処理部１１１Ｅ２に設定されたスレッド実行部１１２Ａに対するスレッド投入の終了処理を実施する要求を行う。または、負荷時間タイマ・タイムアウト処理部１１１Ｅ１は、設定された負荷を加える時間が経過した場合、ＣＰＵ負荷率取得部１１１ＢにＣＰＵ１０１の実効負荷率を更新させる処理を行う。
【００３２】
終了処理部１１１Ｅ２は、負荷時間タイマのタイムアウト後、負荷時間タイマ・タイムアウト処理部１１１Ｅ１から終了処理を実施する要求を取得すると、負荷制御部１１２を停止させる処理を行う。
【００３３】
ターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３は、設定されたターゲット監視時間が経過してターゲット監視間隔タイマがタイムアウトした後、ターゲット監視部１１４を呼出しターゲット・プログラム１１５Ａの現在の動作の状態を示す動作情報を取得する。
【００３４】
負荷監視間隔タイマ・タイムアウト処理部１１１Ｅ４は、設定された負荷監視時間が経過して負荷監視間隔タイマがタイムアウトした後、ＣＰＵ負荷率取得部１１１Ｂに現在のＣＰＵ負荷率の取得を要求する。
【００３５】
負荷制御部１１２は、ＯＳが扱うアドレス空間のうちユーザ空間又はカーネル空間におけるターゲット・プログラム１１５Ａが動作する際、ＣＰＵ１０１において、カーネル空間で動作するＯＳ（システムプログラム）等のシステムプログラム領域の負荷と、ユーザ空間で実行されるアプリケーションプログラム等のユーザプログラム領域の負荷を制御する。カーネル空間は、例えば、ＯＰの核であるカーネルが利用するＣＰＵ１０１の空間である。ユーザ空間は、例えば、アプリケーションプログラムが利用するＣＰＵ１０１の空間である。実施例１において、ターゲット・プログラム１１５Ａ及びスレッド実行部１１２Ａはカーネル空間に存在する。
【００３６】
負荷制御部１１２は、ＣＰＵ負荷率調節部１１１Ｄからの呼出要求により呼び出される。負荷制御部１１２は、ＣＰＵ負荷率調節部１１１ＤからＣＰＵ１０１の負荷率を増減させる要求を取得すると、スレッドをスレッド実行部１１２Ａに投入又は投入を停止することによってＣＰＵ１０１におけるシステムプログラム領域に加える負荷を増減させる。負荷制御部１１２は、終了処理部１１１Ｅ２から停止要求を取得すると、スレッド実行部１１２Ａによるスレッドの実行を停止する。
【００３７】
負荷監視部１１３は、システムプログラム領域の負荷とユーザプログラム領域のそれぞれ毎にＣＰＵ１０１の負荷を監視する。負荷監視部１１３は、ＣＰＵ負荷率取得部１１１ＢからＣＰＵ負荷率取得要求を取得すると、ＣＰＵ１０１におけるシステムプログラム領域及びユーザプログラム領域の負荷率を取得し、取得したそれぞれの領域毎のＣＰＵ１０１の負荷率をＣＰＵ負荷率取得部１１１Ｂに出力する。負荷監視部１１３は、モニタ１１にシステムプログラム領域及びユーザプログラム領域毎のＣＰＵ１０１の負荷率を含むＣＰＵ１０１の負荷情報を出力する。
【００３８】
ターゲット監視部１１４がターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３から、ターゲット・プログラム１１５Ａの動作状況取得要求を取得した場合、ターゲット監視部１１４は、カーネル空間で動作するＯＳ（システムプログラム）等のシステムプログラム領域で動作するターゲット・プログラム１１５Ａの動作状況を監視する。実施例１に係るターゲット・プログラム１１５Ａは、例えばカーネル空間で実行される。ターゲット監視部１１４は、例えば後述するパラメタファイル１０４の「ターゲット監視コマンド」に予め設定されたターゲット監視用のコマンドを起動する。ターゲット監視コマンド実行部１１４Ａは、ターゲット監視部１１４により起動された「ターゲット監視コマンド」を実行し、ターゲット・プログラム１１５Ａの動作状況を監視する。
【００３９】
ターゲット・プログラム１１５Ａの動作状況は、例えばコマンドが復帰する際の復帰値（戻り値）の値及び計測した復帰するまでの経過時間から判断される。一例として、「復帰値（戻り値）」の値が“０”の場合は正常動作を表し、“１”の場合はエラーが発生したことを示す。コマンドが復帰するまでの経過時間が例えば６０秒以上の場合、ＣＥは、コマンド復帰時間が実際のサーバ１００の運用では耐えられないと判断してエラーと判定する。ターゲット監視コマンド実行部１１４Ａからの動作状況取得状況を受けて、ターゲット監視部１１４は、ターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３が取得したターゲット・プログラム１１５Ａの動作状況を通知する。そして、ターゲット監視部１１４は、取得したターゲット・プログラム１１５Ａの動作状況をモニタ１１に出力する。
【００４０】
ターゲット・プログラム１１５Ａは、実施例１に係る負荷制御装置１０００Ａにおいて監視の対象となるプログラムである。実施例１に係るターゲット・プログラム１１５Ａは、例えばカーネル空間で実行される。
【００４１】
図３は、実施例１に係るパラメタファイル１０４の例を示す図である。パラメタファイル１０４は、例えば、図１及び図２に示すＨＤＤ１０３に格納される。パラメタファイル１０４には、例えば、負荷種別、負荷モード、負荷率最小（％）、負荷率最大（％）、負荷率上昇幅（％）、負荷時間（分）、負荷監視間隔（秒）、ターゲット監視間隔（秒）及びターゲット監視コマンドを含むパラメタが設定される。
【００４２】
負荷種別は、図２に係る負荷制御部１１２がＣＰＵ１０１の実行するＯＳのアドレス空間のうち、カーネル空間で動作するシステムプログラム領域とユーザ空間で動作するユーザプログラム領域のどちらの領域にスレッドをＣＰＵ１０１のスレッド実行部１１２Ａに投入して、負荷を加えるかを設定する項目である。実施例１に係る負荷制御装置１０００Ａは、システムプログラム領域側のスレッドであるスレッド実行部１１２Ａを実行することにより、ＣＰＵ１０１のシステムプログラム領域側に負荷を加える設定を示す「ＳＹＳ」が入力されている。なお、負荷種別に「ＵＳＲ」が入力される場合、ユーザプログラム領域側のスレッドであるスレッド実行部１１２Ｂを実行してＣＰＵ１０１のユーザプログラム領域側に負荷が加えられる。
【００４３】
負荷モードは、図２に係る負荷制御部１１２がＣＰＵ１０１に負荷を加える際のスレッド実行部１１２Ａのスレッドの実行による負荷の加え方を設定する項目である。実施例１に係る負荷制御装置１０００Ａは、スレッド実行部１１２Ａのスレッドの実行により、負荷率最大（％）に設定された一定の負荷をＣＰＵ１０１に加えることを示す「ＨＯＬＤ」が入力される。負荷モードが「ＨＯＬＤ」である場合は、負荷率最小（％）及び負荷率上昇幅（％）の項目は設定されないか、又は設定された値は無視される。
【００４４】
負荷時間は、図２に係る負荷制御部１１２がＣＰＵ１０１のスレッド実行部１１２Ａにスレッドを投入してＣＰＵ１０１に負荷を加える時間を設定する項目である。実施例１に係る負荷制御装置１０００Ａは、負荷を加える時間を３０分として設定されている。
【００４５】
負荷監視間隔は、図２に係る負荷監視部１１３がＣＰＵ１０１の負荷を監視する時間間隔を設定する項目である。実施例１に係る負荷制御装置１０００Ａは、負荷監視間隔を１０秒として設定されている。
【００４６】
ターゲット監視間隔は、図２に係るターゲット監視部１１４がターゲット・プログラム１１５Ａの動作状況を監視する時間間隔を設定する項目である。実施例１に係る負荷制御装置１０００Ａは、ターゲット・プログラム１１５Ａの監視間隔を１０秒として設定されている。
【００４７】
ターゲット監視コマンドは、図２に係るターゲット監視部１１４がターゲット・プログラム１１５Ａの動作状況を監視するコマンドの種類を設定する項目である。実施例１に係るターゲット監視部１１４は、「ターゲット監視コマンド」に予め設定されたターゲット監視用のコマンドを起動することにより、ターゲット・プログラム１１５Ａの動作状況を監視する。ターゲット監視部１１４は、例えば、ターゲット監視用のコマンドを実行後、当該ターゲット監視用のコマンドが復帰する際の復帰値（戻り値）の値を取得することにより、又はコマンドが復帰するまでの経過時間を計測することによって、ターゲット・プログラム１１５Ａの動作状況を監視する。
【００４８】
なお、負荷モードは、「ＨＯＬＤ」の他に「ＵＰ」が存在する。負荷モードが「ＵＰ」である場合は、スレッド実行部１１２Ａのスレッドの実行により、負荷率最小（％）として設定された一定の負荷を、負荷時間（分）として設定された時間だけＣＰＵ１０１に加える。次いで、負荷時間（分）が経過した後、負荷制御装置１０００Ａは、負荷率最小（％）に負荷率上昇幅（％）を加算する。加算された結果は実行負荷率（以下、「負荷率上昇幅加算後の実効負荷率」という）として設定する。次いで、負荷制御装置１０００Ａは、設定された実効負荷率を負荷時間（分）として設定された時間だけＣＰＵ１０１に加える。
【００４９】
次いで、負荷時間（分）が経過した後、負荷制御装置１０００Ａは、負荷率上昇幅加算後の実行負荷率（％）に、負荷率上昇幅（％）を加算して、第２の負荷率上昇幅加算後の実効負荷率を設定する。次いで、負荷制御装置１０００Ａは、設定された第２の負荷率上昇幅加算後の実効負荷率を負荷時間（分）として設定された時間だけＣＰＵ１０１に加える。
【００５０】
このように、負荷制御装置１０００Ａは、負荷率最小（％）に、負荷率上昇幅（％）を段階的に加算し、負荷時間（分）として設定された時間だけＣＰＵ１０１に加える。負荷率最小（％）に負荷率上昇幅（％）を段階的に加算した負荷率上昇幅加算後の実効負荷率の値が負荷値最大（％）よりも大きい値となる場合、負荷制御装置１０００Ａは、負荷率上昇幅加算後の実効負荷率（％）に負荷率上昇幅（％）を段階的に加算する処理を停止する。同時に、負荷制御装置１０００Ａは、コマンド処理部１１１を用いて負荷制御部１１２を呼び出し、負荷制御部１１２にスレッド実行部１１２Ａのスレッドの起動を停止させる指示を通知する。
【００５１】
図４から図９は、実施例１に係る負荷制御装置１０００Ａの動作例を示すシーケンス図である。図４に示す処理は図５の「Ａ」に続いている。図５に示す処理は図６の「Ａ」に続いている。図６に示す処理は図７の「Ａ」に続いている。図７に示す処理は図８の「Ａ」に続いている。図８に示す処理は図９の「Ａ」に続いている。図４から図９に示す処理は、ＣＥがＣＥ端末１４を用いて実施例１に係る負荷制御装置１０００Ａによるターゲット・プログラム１１５Ａの動作状況を診断する処理を示す。図４から図９までの処理は、ＣＥがＣＥ端末１４を用いて、各種指示などを行う。
【００５２】
図４に示すように、ＣＥはＣＥ端末１４を用いてパラメタファイル１０４をＨＤＤ１０３に定義し、コマンド処理部１１１を呼び出す（ＯＰ１）。コマンド処理部１１１は、パラメタファイル１０４の定義内容である負荷種別及び負荷モードを読込み、図１及び図２に示すシステムプログラム領域のＣＰＵ１０１の実効負荷率を設定する（ＯＰ２）。図３に係るパラメタファイル１０４において、負荷種目が「ＳＹＳ」及び負荷モードが「ＨＯＬＤ」と定義されている。そのため、コマンド処理部１１１は、「負荷率最大」として例えば９０％の負荷率をＣＰＵ１０１におけるシステムプログラム領域の実効負荷率として設定する。コマンド処理部１１１は、負荷監視部１１３を呼び出して現在のＣＰＵ１０１の負荷率を取得する（ＯＰ３）。
【００５３】
負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のシステムプログラム領域側のＣＰＵ負荷情報を取得し、モニタ１１に出力する（ＯＰ４）。負荷監視部１１３は、現在のシステムプログラム領域のＣＰＵ負荷情報を取得し、コマンド処理部１１１に通知する（ＯＰ５）。
【００５４】
図５に示すように、コマンド処理部１１１は、取得した現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率と設定された実効負荷率との差分を求める（ＯＰ１１）。コマンド処理部１１１は、負荷制御部１１２を呼び出し、負荷制御部１１２にＣＰＵ１０１の負荷率を調節させる（ＯＰ１２）。
【００５５】
負荷制御部１１２は、所定のスレッドのスレッド実行部１１２Ａへの投入又は投入の停止を行うことにより、ＣＰＵ１０１におけるシステムプログラム領域の負荷率を調節する（ＯＰ１３）。具体的には、負荷制御部１１２は、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率と設定された実効負荷率との差分を減少させるように、所定のスレッド実行部１１２Ａによるスレッドの起動又は停止を行い、システムプログラム領域の負荷率を調整する。負荷制御部１１２は、ＣＰＵ１０１におけるシステムプログラム領域の負荷率の調節処理を完了した後、コマンド処理部１１１に負荷調節処理の完了を通知する（ＯＰ１４）。
【００５６】
コマンド処理部１１１は、負荷時間タイマを起動し、負荷制御部１１２がシステムプログラム領域のＣＰＵ１０１に負荷を加える時間の計時を開始する（ＯＰ１５）。コマンド処理部１１１は、負荷監視間隔タイマを起動し、負荷監視部１１３がシステムプログラム領域のＣＰＵ１０１の負荷を監視する時間間隔の計時を開始する（ＯＰ１６）。コマンド処理部１１１は、ターゲット監視間隔タイマを起動し、ターゲット監視部１１４がシステムプログラム領域のターゲット・プログラム１１５Ａの動作状況を監視する時間間隔の計時を開始する（ＯＰ１７）。ＯＰ１７の処理の後、コマンド処理部１１１はタイマ１０１Ａのタイムアウト発生待ちモードに移行する。
【００５７】
図６に示すように、コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいて負荷監視間隔タイマのタイムアウトにより負荷監視時間が経過したことを検出すると（ＯＰ２１）、負荷監視部１１３から現在のシステムプログラム領域のＣＰＵ１０１の負荷率を再度取得するために負荷監視部１１３を呼び出す（ＯＰ２２）。
【００５８】
ＣＰＵ１０１の負荷率は、ターゲット・プログラム１１５Ａ以外のプログラムの動作状況により変動する。ターゲット・プログラム１１５Ａ以外のプログラムの動作によりＣＰＵ１０１に負荷が加わると、ＣＰＵ１０１の負荷率が上昇する。一方、ターゲット・プログラム１１５Ａ以外のプログラムの動作が停止するとＣＰＵ１０１の負荷が軽減するため、ＣＰＵ１０１の負荷率が減少する。又、ＣＰＵ１０１の負荷率は、サーバ１００に対する他サーバからのアクセス量が増加すると、他サーバからＣＰＵ１０１に送信されるパケット量が増加することにより変動する。ＣＰＵ１０１の負荷率の変動に備え、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を再度取得する必要がある。
【００５９】
負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を再度取得し、モニタ１１に出力する（ＯＰ２３）。負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を取得し、取得したシステムプログラム領域の負荷率をコマンド処理部１１１に再度通知する（ＯＰ２４）。
【００６０】
コマンド処理部１１１は、負荷監視部１１３から現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を取得すると、取得した現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率と予め設定された実効負荷率との差分を再度求める（ＯＰ２５）。
【００６１】
図７に示すように、コマンド処理部１１１は、負荷制御部１１２によってＣＰＵ１０１におけるシステムプログラム領域の負荷率を再度調節させるために、負荷制御部１１２を再度呼び出す（ＯＰ３１）。
【００６２】
負荷制御部１１２は、コマンド処理部１１１からの呼び出しを受けると、図５に示すＯＰ１３の処理と同様に、システムプログラム領域のＣＰＵ１０１の負荷率を再度調節する（ＯＰ３２）。負荷制御部１１２は、システムプログラム領域のＣＰＵ１０１の負荷率の調節処理を再度完了した後、図５に示すＯＰ１４の処理と同様に、コマンド処理部１１１に調節処理の完了を再度通知する（ＯＰ３３）。
【００６３】
コマンド処理部１１１は、負荷制御部１１２から調節処理の完了が再度通知されると、負荷監視間隔タイマを再起動し、負荷監視部１１３によるＣＰＵ１０１におけるシステムプログラム領域の負荷を監視する時間間隔の計時を再開する（ＯＰ３４）。上記のＯＰ２１からＯＰ３４までの処理、即ち負荷監視処理が、負荷時間タイマがタイムアウトすることにより、設定されたＣＰＵ１０１に負荷を加える時間の経過を検出するまで繰り返される（ＯＰ３５）。
【００６４】
コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいてターゲット監視間隔タイマがタイムアウトすることにより、ＣＰＵ１０１に負荷を加える時間の経過を検出すると（ＯＰ３６）、ターゲット監視部１１４を呼び出してターゲット・プログラム１１５Ａの実行状況を監視する（ＯＰ３７）。
【００６５】
ターゲット監視部１１４は、コマンド処理部１１１から呼び出しを受けると、ターゲット・プログラム監視コマンドを実行してターゲット・プログラム１１５Ａの監視を実行する（ＯＰ３８）。具体的には、ターゲット監視部１１４は、例えばコマンドが復帰する際の復帰値を取得することにより、又はコマンドが復帰するまでの経過時間を計時することによって、ターゲット・プログラム１１５Ａの動作状況を判断する。ターゲット監視部１１４は、コマンドが復帰する際の復帰値及びコマンドが復帰するまでの経過時間をモニタ１１に出力させる（ＯＰ３９）。ターゲット監視部１１４は、モニタ１１に復帰値及び復帰するまでの経過時間をモニタ１１に出力した後、図８に示すようにコマンド処理部１１１にコマンドの実行結果を通知する（ＯＰ４１）。ターゲット・プログラム１１５Ａの動作状況は、例えばコマンドが復帰する際の復帰値（戻り値）の値及び計測したコマンドが復帰するまでの経過時間から判断される。一例として、「復帰値（戻り値）」の値が“０”の場合は正常終了を表し、“１”の場合は異常終了、即ちエラーが発生したことを示す。
【００６６】
図８に示すように、コマンド処理部１１１は、ターゲット処理部１１４からコマンド実行結果が通知されると（ＯＰ４１）、ターゲット監視間隔タイマを再起動し、ターゲット・プログラム１１５Ａを監視する時間間隔の計時を再開させる（ＯＰ４２）。
【００６７】
上記のＯＰ３５からＯＰ４１までの処理、即ちターゲット・プログラム監視処理が、負荷時間タイマがタイムアウトし、設定された負荷を加える時間が経過するまで繰り返される（ＯＰ４３）。
【００６８】
モニタ１１には、出力されたシステムプログラム領域のＣＰＵ１０１の負荷情報、ターゲット・プログラム１１５Ａに係るコマンドの復帰値及び復帰時間が出力される。ＣＥはＣＥ端末１４を用いて、モニタ１１に出力された情報を元に、ターゲット・プログラム１１５Ａが動作可能であるシステムプログラム領域のＣＰＵ１０１の負荷の限界点を把握することが可能となる（ＯＰ４４）。
【００６９】
図９に示すように、コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいて負荷時間タイマがタイムアウトすることにより設定された負荷を加える時間の経過を検出すると、負荷時間タイマの計時を停止させるととともに（ＯＰ５１）、負荷監視間隔タイマの計時を強制的に停止させる（ＯＰ５２）。同様に、コマンド処理部１１１は、ターゲット監視間隔タイマの計時を強制的に停止させる（ＯＰ５３）。コマンド処理部１１１は、負荷制御部１１２に負荷制御部１１２を停止させる指示を通知する（ＯＰ５４）。
【００７０】
負荷制御部１１２は、コマンド処理部１１１から負荷制御部１１２の停止指示が通知されると、負荷を印加するためにＣＰＵ１０１のスレッド実行部１１２Ａに投入したスレッドを全て停止させる（ＯＰ５５）。負荷制御部１１２は、負荷制御部１１２の停止処理が完了した後、コマンド処理部１１１に停止処理が完了したことを通知する（ＯＰ５６）。ＯＰ５６の処理により、上記のＯＰ３４からＯＰ４１までの処理の繰り返しが終了する。
【００７１】
実施例１に係る負荷制御装置１０００Ａ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１におけるシステムプログラム領域の実効負荷率を設定し、ＣＰＵ１０１の実効負荷率及び現在の負荷率の差分を求め、スレッド起動及び停止が行われる。スレッド起動及び停止が行われることにより、ＣＰＵ１０１の負荷率の増減が行われ、負荷率の変動が抑制される。そのため、ターゲット・プログラム１１５Ａを動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。また、ターゲット・プログラム１１５Ａをカーネル空間で動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。
【００７２】
（実施例２）
図１０から図１７では、実施例２に係る負荷制御装置１０００Ａ、負荷制御方法及び負荷制御プログラムが説明される。なお、実施例２において、実施例１で説明した構成と同様の構成には同一の符号を付し、説明を省略する。更に、実施例２に係るサーバ１００及び実施例２の負荷制御装置１０００Ａの各構成は、図１及び図２と同様であるため説明を省略する。
【００７３】
実施例２に係る負荷制御装置１０００Ａ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１におけるシステムプログラム領域の負荷率が一定時間保持された後、保持されたＣＰＵ１０１におけるシステムプログラム領域の負荷率に所定の負荷率が加えられる。実施例１と同様に、所定の負荷率が加えられたＣＰＵ１０１の負荷率が一定時間保持され、システムプログラム領域で動作するターゲット・プログラム１１５Ａの負荷制御が行われる。そのため、ターゲット・プログラム１１５Ａをシステムプログラム領域で動作させる際のＣＰＵ１０１の負荷率を段階的に測定することができる。
【００７４】
図１０は、実施例２に係るパラメタファイル１０４Ａの一部を示す図である。パラメタファイル１０４Ａは、図１及び図２に示すＨＤＤ１０３に格納される。
【００７５】
負荷種別は、図２に係る負荷制御部１１２がＣＰＵ１０１において、システムプログラム領域とユーザプログラム領域のどちらに負荷を加えるか設定する項目である。実施例２に係る負荷制御装置１０００Ａは、システムプログラム領域側に負荷を加える設定を示す「ＳＹＳ」が入力されている。
【００７６】
負荷モードは、図２に係る負荷制御部１１２がＣＰＵ１０１に負荷を加える際の負荷の加え方を設定する項目である。実施例２に係る負荷制御装置１０００Ａは、負荷モードに「ＵＰ」が入力されている。
【００７７】
負荷モードが「ＵＰ」である場合、負荷制御装置１０００Ａは、実施例１の図３において説明したように、負荷率最小（％）に、負荷率上昇幅（％）を段階的に加算し、負荷時間（分）として設定された時間だけＣＰＵ１０１に加える。負荷率最小（％）に負荷率上昇幅（％）を段階的に加算した負荷率上昇幅加算後の実効負荷率の値が負荷値最大（％）よりも大きい値となる場合がある。実効負荷率の値が負荷値最大（％）よりも大きい値となる場合、負荷制御装置１０００Ａは、負荷率上昇幅加算後の実効負荷率（％）に負荷率上昇幅（％）を段階的に加算する処理を停止する。同時に、負荷制御装置１０００Ａは、コマンド処理部１１１を用いて負荷制御部１１２を呼び出し、負荷制御部１１２にスレッド実行部１１２Ａのスレッドの起動を停止させる指示を通知する。
【００７８】
実施例２に係るパラメタファイル１０４Ａにおいて、負荷率最小（％）は８０（％）に設定されている。実施例２に係るパラメタファイル１０４Ａにおいて、負荷率最大（％）は９５（％）に設定されている。実施例２に係るパラメタファイル１０４Ａにおいて、負荷率上昇幅は５（％）に設定されている。実施例２に係るパラメタファイル１０４Ａにおいて、負荷時間は１０分に設定されている。
【００７９】
図１１から図１２は、実施例２に係る負荷制御装置１０００Ａの動作例を示すシーケンス図である。図１１に示す処理は図１２の「Ａ」に続いている。図１１から図１２に示す処理は、ＣＥがＣＥ端末１４を用いて実施例２に係る負荷制御装置１０００Ａを用いてターゲット・プログラム１１５Ａの負荷制御を実行する際の処理である。
【００８０】
図１１に示すように、ＣＥはＣＥ端末１４を用いてパラメタファイル１０４Ａを定義し、コマンド処理部１１１を呼び出す（ＯＰ６１）。コマンド処理部１１１は、実施例２の定義内容である「ＳＹＳ」及び「ＵＰ」を読込み、図１及び図２に示すＣＰＵ１０１におけるシステムプログラム側の実効負荷率を設定する（ＯＰ６２）。図１１に係るパラメタファイル１０４Ａにおいて、負荷種目は「ＳＹＳ」及び負荷モードは「ＵＰ」と定義されている。そのため、コマンド処理部１１１は、「負荷率最小」に設定された例えば８０％をＣＰＵ１０１におけるシステムプログラム側の実効負荷率として設定する。
【００８１】
なお、実施例２において、ＣＰＵ１０１におけるシステムプログラム側の実効負荷率は「負荷率最小」の８０％と設定された状態で、「負荷時間」である１０分間保持される。次いで、ＣＰＵ１０１におけるシステムプログラム側の実効負荷率は、「負荷率上昇幅」である５％だけ加算され、「負荷時間」である１０分間保持される。ＣＰＵ１０１におけるシステムプログラム側の実効負荷率は。「負荷率上昇幅」である５％だけ繰返し加算され、「負荷率最大」の９５％まで段階的に上昇する。
【００８２】
コマンド処理部１１１は、ＯＰ６２の処理の後、実施例１のＯＰ３〜ＯＰ５３と同様の処理が行われる（ＯＰ６３）。即ち、実施例１と同様に、負荷監視タイマがタイムアウトしＣＰＵ１０１に対する負荷監視の時間が経過するまで、ＣＰＵ１０１の負荷率監視処理及びターゲット・プログラム１１５Ａの監視処理が行われる。
【００８３】
コマンド処理部１１１は、現在の実効負荷率にパラメタファイル１０４Ａの負荷率上昇幅に設定された値を加算する（ＯＰ６４）。上記のＯＰ６３からＯＰ６４までの処理が、実効負荷率が負荷率最大よりも大きくなるまで繰り返される（ＯＰ６５）。
【００８４】
図１２に示すように、コマンド処理部１１１は、実効負荷率が負荷率最大よりも大きくなった場合、負荷制御部１１２に負荷制御部１１２に起動しているスレッドを停止させる指示を通知する（ＯＰ７１）。
【００８５】
負荷制御部１１２は、コマンド処理部１１１から負荷制御部１１２の停止指示が通知されると、ＣＰＵ１０１に負荷を印加するために投入した起動中のスレッドを停止させる（ＯＰ７２）。負荷制御部１１２は、負荷制御部１１２のスレッドの停止処理が完了した後、コマンド処理部１１１にスレッドの停止処理が完了したことを通知する（ＯＰ７３）。
【００８６】
図１３から図１４は、実施例１及び実施例２に係るコマンド処理部１１１の動作を示すフローチャートを示す図である。図１３に示す処理は図１４のＡに続いている。図１３から図１４に示すコマンド処理部１１１のフローチャートは、図４から図９に示す負荷制御装置１０００Ａの動作例を示すシーケンス図のうち、コマンド処理部１１１の動作例を示すシーケンス図に対応する。
【００８７】
図１３に示すように、Ｓ１において、コマンド処理部１１１は、入出力コマンド処理部１１１Ａによって指定されたパラメタファイル１０４の読込を行う（図４のＯＰ２）。
【００８８】
Ｓ２において、コマンド処理部１１１は、パラメタファイル１０４の各パラメタの指定内容が実行可能であるか判断する。Ｓ２において、コマンド処理部１１１は、各パラメタの指定内容が実行可能であると判断すると、次にＳ３の判断を行う。
【００８９】
Ｓ３において、コマンド処理部１１１は、パラメタファイル１０４によって指定された負荷モードについて判断する。Ｓ３において、コマンド処理部１１１は負荷モードが「ＨＯＬＤ」であると判断すると、次にＳ４の処理を行う。
【００９０】
Ｓ４において、コマンド処理部１１１は、例えば、ＣＰＵ１０１における負荷率最大の設定値を、ＣＰＵ１０１の実効負荷率として設定する。
【００９１】
Ｓ５において、コマンド処理部１１１は、負荷監視部１１３を呼び出す（図４のＯＰ３）。
【００９２】
Ｓ６において、コマンド処理部１１１は、取得した現在の負荷率と設定された実効負荷率とを比較し、差分を求める（図５のＯＰ１１）。
【００９３】
Ｓ９において、コマンド処理部１１１は、呼び出した負荷制御部１１２によりシステムプログラム側のＣＰＵ１０１の負荷率を調節させるため、スレッド実行部１１２Ａによるスレッドの起動又は停止を指示する（図５のＯＰ１２）。
【００９４】
図１４に示すように、Ｓ１１において、コマンド処理部１１１は、負荷時間タイマ、負荷監視間隔タイマ、ターゲット監視間隔タイマを起動し、ＣＰＵ１０１に負荷を与える時間、負荷監視間隔時間、ターゲット監視間隔時間の計時をそれぞれ開始する（図５のＯＰ１５、ＯＰ１６及びＯＰ１７）。Ｓ１１の処理の後、コマンド処理部１１１はタイマ１０１Ａのタイムアウト発生待ちモードに移行する。
【００９５】
Ｓ１２において、コマンド処理部１１１は、負荷時間タイマがタイムアウトしたか判断する（図６のＯＰ２１）。負荷時間タイマがタイムアウトした場合、コマンド処理部１１１は、Ｓ１３の処理を行う。
【００９６】
Ｓ１３において、コマンド処理部１１１は、起動中の負荷時間タイマ、負荷監視間隔タイマ、ターゲット監視間隔タイマの全てを停止させる（図９のＯＰ５１、ＯＰ５２及びＯＰ５３）。
【００９７】
Ｓ１４において、コマンド処理部１１１は、図１３のＳ３と同様に、パラメタファイル１０４によって指定された負荷モードを判断する。Ｓ１４において、コマンド処理部１１１は、負荷モードが「ＨＯＬＤ」であると判断すると、次にＳ１５の処理を行う。
【００９８】
Ｓ１５において、コマンド処理部１１１は、負荷制御部１１２を呼び出し、負荷制御部１１２にスレッド実行部１１２Ａのスレッドの起動を停止させる指示を通知する（図９のＯＰ５４）。
【００９９】
なお、図１３に示すＳ２において、コマンド処理部１１１は、各パラメタの指定内容を確認し、パラメタを実行することができないと判断すると、Ｓ７においてエラー終了処理を行う。例えば、コマンド処理部１１１がパラメタファイル１０４における各パラメタの読込を失敗した場合、コマンド処理部１１１はパラメタを実行することができない。また、例えばコマンド処理部１１１がパラメタファイル１０４において定義されていない文字列を指定した場合、コマンド処理部１１１はパラメタを実行することができない。また、例えばコマンド処理部１１１がパラメタファイル１０４において許容範囲外の数値を指定した場合、コマンド処理部１１１はパラメタを実行することができない。また、例えばパラメタファイル１０４におけるパラメタ間での設定値が矛盾する場合、コマンド処理部１１１はパラメタを実行することができない。また、例えばパラメタファイル１０４において指定コマンドが存在しない場合、コマンド処理部１１１はパラメタを実行することができない。
【０１００】
なお、図１３に示すＳ３において、コマンド処理部１１１は、負荷モードが「ＨＯＬＤ」では無いと判断する場合がある。即ち、コマンド処理部１１１が、負荷モードを実施例２に後述する「ＵＰ」モードであると判断すると、Ｓ８において、システムプログラム領域におけるＣＰＵ１０１の負荷率最小の設定値をＣＰＵ１０１の実効負荷率に設定する（図１１のＯＰ６２）。
【０１０１】
なお、図１４に示すＳ１２において、コマンド処理部１１１は、負荷時間タイマがタイムアウトしていないと判断する場合、Ｓ１８の処理へ進む。コマンド処理部１１１は、Ｓ１８において、負荷監視間隔タイマがタイムアウトしているか判断する。Ｓ１８において、コマンド処理部１１１は、負荷監視間隔タイマがタイムアウトしていると判断すると、次にＳ１９の処理を行う。
【０１０２】
Ｓ１９において、コマンド処理部１１１は、負荷監視部１１３を呼び出す（図６のＯＰ２２）。負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を再度取得し、モニタ１１に出力する（図６のＯＰ２３）。負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率を取得し、取得したシステムプログラム領域の負荷率をコマンド処理部１１１に再度通知する（図６のＯＰ２４）。
【０１０３】
Ｓ２０において、コマンド処理部１１１は、取得した現在の負荷率と設定された実効負荷率とを比較し、差分を求める（図６のＯＰ２５）。
【０１０４】
Ｓ２１において、コマンド処理部１１１は、負荷制御部１１２を呼び出し、負荷制御部１１２によってスレッド実行部１１２Ａに対する所定のスレッドを起動又は停止させ、ＣＰＵ１０１におけるシステムプログラム領域の負荷率を増減させる指示を通知する（図７のＯＰ３１）。即ち、コマンド処理部１１１は、負荷制御部１１２によりＣＰＵ１０１におけるシステムプログラム領域の負荷率を調節させる指示を通知する。
【０１０５】
Ｓ２２において、コマンド処理部１１１は、負荷監視間隔タイマの再起動を行うことにより、負荷監視時間の計時を再開する（図７のＯＰ３４）。Ｓ２２の処理が終了すると、コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードに移行する。
【０１０６】
なお、Ｓ１８において、コマンド処理部１１１は、負荷監視間隔タイマがタイムアウトしていないと判断した場合、Ｓ２３において、ターゲット監視間隔タイマがタイムアウトしているか判断を行う。Ｓ２３において、コマンド処理部１１１はターゲット監視間隔タイマがタイムアウトしていると判断すると、次にＳ２４の処理を行う。
【０１０７】
Ｓ２４において、コマンド処理部１１１は、ターゲット監視部１１４の呼び出しを行い、ターゲット監視部１１４にターゲット・プログラム１１５Ａのターゲット監視コマンドを実行させる指示を通知する。
【０１０８】
Ｓ２５において、コマンド処理部１１１は、ターゲット監視間隔タイマを再起動することにより、ターゲット監視間隔時間の計時を再開させる（図８のＯＰ４２）。Ｓ２５の処理の後、コマンド処理部１１１はタイマ１０１Ａのタイムアウト発生待ちモードに移行する。
【０１０９】
なお、Ｓ１４において、コマンド処理部１１１は負荷モードが「ＨＯＬＤ」では無く、実施例２における「ＵＰ」モードであると判断する場合がある。この場合、コマンド処理部１１１は、Ｓ１６において、ＣＰＵ１０１におけるシステムプログラム領域の実効負荷率にパラメタファイル１０４で設定された負荷率上昇幅を加算し、加算された結果を実行負荷率（以下、「負荷率上昇幅加算後の実効負荷率」という）として設定する（図１１のＯＰ６２）。
【０１１０】
Ｓ１７において、コマンド処理部１１１は、現在のＣＰＵ１０１におけるシステムプログラム領域の負荷率上昇幅加算後の実効負荷率がパラメタファイル１０４で設定された負荷率最大よりも大きい値であるか判断する。ＣＰＵ１０１の実効負荷率が負荷率最大以下である場合、コマンド処理部１１１は図１０のＳ５における負荷監視部１１３の起動処理に移行する（図１１のＯＰ６４）。Ｓ１７において、ＣＰＵ１０１の負荷率上昇幅加算後の実効負荷率が負荷率最大よりも大きい値である場合は、コマンド処理部１１１はＳ１５の処理に移行する。
【０１１１】
図１５は、実施例１及び実施例２に係る負荷制御部１１２の動作を示すフローチャートを示す図である。図１５に示す負荷制御部１１２のフローチャートは、図４から図９に示す負荷制御装置１０００Ａの動作例を示すシーケンス図のうち、負荷制御部１１２の動作例を示すシーケンス図に対応している。
【０１１２】
Ｓ３１において、負荷制御部１１２は、コマンド処理部１１１から起動指示が通知されたか判断する。Ｓ３１において、負荷制御部１１２は、コマンド処理部１１１から起動指示が通知されたと判断すると、次にＳ３２の処理を行う。
【０１１３】
Ｓ３２において、負荷制御部１１２は、コマンド処理部１１１から指定されたＣＰＵ１０１の負荷率に基づいた数のスレッドをスレッド実行部１１２Ａに投入することによりスレッドを起動する（図５のＯＰ１３）。なお、スレッドは、ダミープログラムの実行単位である。負荷制御部１１２がＣＰＵ１０１の負荷率に基づいた数のスレッドをスレッド実行部１１２Ａに投入することによりダミープログラムが動作する。ダミープログラムが動作すると、ＣＰＵ１０１の負荷率は上昇する。そのため、負荷制御部１１２がＣＰＵ１０１の負荷率に基づいた数のスレッドをスレッド実行部１１２Ａに投入すると、ＣＰＵ１０１の負荷率が上昇する。
【０１１４】
Ｓ３３において、負荷制御部１１２は、コマンド処理部１１１にスレッド起動処理が完了したことを通知する（図５のＯＰ１４）。
【０１１５】
なお、Ｓ３１において、負荷制御部１１２は、コマンド処理部１１１からスレッドの起動指示が通知されていないと判断すると、Ｓ３４において、コマンド処理部１１１から起動対象のスレッド数の増減指示を受けたか判断を行う。Ｓ３４において、負荷制御部１１２は、コマンド処理部１１１から起動対象のスレッド数の増減指示が通知されたと判断すると、次にＳ３５の判断を行う。
【０１１６】
Ｓ３５において、負荷制御部１１２は、コマンド処理部１１１から起動対象のスレッド数の増加指示が通知されたか判断する。Ｓ３５において、負荷制御部１１２は、コマンド処理部１１１から起動対象のスレッド数の増加指示が通知されたと判断すると、次にＳ３６の処理を行う。
【０１１７】
Ｓ３６において、負荷制御部１１２は、コマンド処理部１１１から指定されたＣＰＵ１０１の負荷率に基づいた数のスレッドをスレッド実行部１１２Ａに投入することによりスレッドを起動する（図５のＯＰ１３）。
【０１１８】
Ｓ３７において、負荷制御部１１２は、コマンド処理部１１１にＣＰＵ１０１の負荷率に基づく起動対象のスレッド数の増減指示が完了したことを通知する（図５のＯＰ１４）。
【０１１９】
なお、Ｓ３５において、負荷制御部１１２は、コマンド処理部１１１から起動対象のスレッド数の増加指示が通知されていないと判断すると、次にＳ３８の処理を行う。
【０１２０】
Ｓ３８において、負荷制御部１１２は、コマンド処理部１１１から指定されたＣＰＵ１０１の負荷率に基づいた数のスレッドをスレッド実行部１１２Ａに停止させる指示を行う（図５のＯＰ１３）。Ｓ３８の処理が終了した後、負荷制御部１１２は、Ｓ３７の処理を行う。
【０１２１】
なお、Ｓ３４において、負荷制御部１１２は、コマンド処理部１１１から起動対象のスレッド数の増減指示が通知されていないと判断すると、次にＳ３９の判断を行う。
【０１２２】
Ｓ３９において、負荷制御部１１２は、コマンド処理部１１１からスレッドの停止指示が通知されているか判断する。Ｓ３９において、負荷制御部１１２は、コマンド処理部１１１から停止指示が通知されたと判断すると、次にＳ４０の処理を行う。
【０１２３】
Ｓ４０において、負荷制御部１１２は、ＣＰＵ１０１における負荷を印加するためにＣＰＵ１０１に投入した起動中のスレッドを停止する（図５のＯＰ１３）。
【０１２４】
Ｓ４１において、負荷制御部１１２は、コマンド処理部１１１に停止指示が完了したことを通知する（図５のＯＰ１４）。
【０１２５】
なお、Ｓ３９において、負荷制御部１１２は、コマンド処理部１１１から停止指示が通知されていないと判断すると、次にＳ４２の処理を行う。
【０１２６】
Ｓ４２において、負荷制御部１１２は、コマンド処理部１１１から通知された指示の種類が負荷制御部１１２で認識している指示では無かったため、コマンド処理部１１１にエラーを通知する。
【０１２７】
図１６は、実施例１及び実施例２に係る負荷監視部１１３の動作を示すフローチャートを示す図である。図１６に示す負荷監視部１１３のフローチャートは、図４から図９に示す負荷制御装置１０００Ａの動作例を示すシーケンス図のうち、負荷監視部１１３の動作例を示すシーケンス図に対応している。
【０１２８】
Ｓ５１において、負荷監視部１１３は、コマンド処理部１１１から呼び出しを受けると、現在のＣＰＵ１０１の負荷情報を取得する（図４のＯＰ４）。ＣＰＵ１０１の負荷情報は、例えばＣＰＵ１０１の負荷率を含む。
【０１２９】
Ｓ５２において、負荷監視部１１３は、現在のＣＰＵ１０１の負荷情報の取得結果をモニタ１１に出力する（図４のＯＰ４）。
【０１３０】
Ｓ５３において、負荷監視部１１３は、現在のＣＰＵ１０１の負荷情報の取得結果をコマンド処理部１１１に通知する（図４のＯＰ５）。
【０１３１】
図１７は、実施例１及び実施例２に係るターゲット監視部１１４の動作を示すフローチャートを示す図である。図１７に示すターゲット監視部１１４のフローチャートは、図４から図９に示す負荷制御装置１０００Ａの動作例を示すシーケンス図のうち、ターゲット監視部１１４の動作例を示すシーケンス図に対応している。
【０１３２】
Ｓ６１において、ターゲット監視部１１４は、コマンド処理部１１１から呼び出しを受けると、ターゲット・プログラム１１５Ａの監視を実行させるためのターゲット・プログラム監視コマンドを実行する（図７のＯＰ３８）。ターゲット監視部１１４は、例えばコマンドが復帰する際の復帰値及びコマンドが復帰するまでの経過時間を計時することによって、ターゲット・プログラム１１５Ａの動作状況を取得する。
【０１３３】
Ｓ６１において、ターゲット・プログラム監視コマンドを実行した結果は、正常終了又は異常終了という２通りの結果が存在する。ターゲット・プログラム監視コマンドを実行した結果は、取得したコマンドの復帰値より確認することができる。なお、ＣＰＵ１０１の負荷率が高い状態でターゲット・プログラム監視コマンドが実行された場合、正常終了する一方でコマンド実行から復帰するまでの経過時間が大きくなることがある。コマンド実行から復帰するまでの経過時間が例えば６０秒以上の場合、ＣＥは、コマンド復帰時間が実際のサーバ１００の運用では耐えられないと判断してエラーと判定する。ＣＥは、コマンドが復帰する際の復帰値及び経過時間に基づいてターゲット・プログラム１１５Ａの動作状況を取得し、ＣＰＵ１０１の負荷率におけるターゲット・プログラム１１５Ａの動作の可否を判断する。
【０１３４】
Ｓ６２において、ターゲット監視部１１４は、現在の復帰値及び復帰するまでの経過時間を含む取得結果をモニタ１１に出力する（図７のＯＰ３９）。
【０１３５】
Ｓ６３において、ターゲット監視部１１４は、現在の復帰値及び復帰するまでの経過時間を含む取得結果をコマンド処理部１１１に通知する（図８のＯＰ４１）。
【０１３６】
実施例２に係る負荷制御装置１０００Ａ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１におけるシステムプログラム側の負荷率が一定時間保持された後、所定の負荷率がＣＰＵ１０１におけるシステムプログラム側に加えられる。所定の負荷率がＣＰＵ１０１におけるシステムプログラム側に加えられた状態で、実施例１と同様にＣＰＵ１０１におけるシステムプログラム側の負荷率が一定時間保持される。そして、実施例１と同様に、ＣＰＵ１０１におけるシステムプログラム側のターゲット・プログラム１１５Ａの負荷制御が行われる。そのため、ターゲット・プログラム１１５ＡをＣＰＵ１０１におけるシステムプログラム側で動作させる際のＣＰＵ１０１の負荷率を段階的に測定することができる。
【０１３７】
（実施例３）
図１８から図２５では、実施例３に係る負荷制御装置１０００Ｂ、負荷制御方法及び負荷制御プログラムが説明される。なお、実施例３において、実施例１及び実施例２で説明した構成と同様の構成には同一の符号を付し、説明を省略する。更に、実施例３に係るサーバ１００の構成は、図１と同様であるため説明を省略する。
【０１３８】
実施例３に係る負荷制御装置１０００Ｂ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１におけるユーザプログラム領域の実効負荷率を設定し、ＣＰＵ１０１の実効負荷率及び現在の負荷率の差分を求め、スレッド起動及び停止が行われる。スレッド起動及び停止が行われることにより、ＣＰＵ１０１の負荷率の増減が行われ、負荷率の変動が抑制される。そのため、ターゲット・プログラム１１５Ｂを動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。また、ターゲット・プログラム１１５Ｂをユーザ空間で動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。
【０１３９】
図１８は、実施例３に係る負荷制御装置１０００Ｂの概要を示す図である。負荷制御装置１０００Ｂは、サーバ１００内で実行される機能の１つである。負荷制御装置１０００Ｂは、ＣＰＵ１０１に備えられるコマンド処理部１１１、負荷制御部１１２、負荷監視部１１３及びターゲット監視部１１４としての機能を備える。実施例３において、ターゲット・プログラム１１５Ｂ及びスレッド実行部１１２Ｂはユーザ空間に存在する。ユーザ空間は、例えば、アプリケーションプログラムが利用するＣＰＵ１０１の空間である。
【０１４０】
負荷制御部１１２は、ＣＰＵ負荷率調節部１１１ＤからＣＰＵ１０１の負荷率を増減させる要求を取得すると、スレッドをスレッド実行部１１２Ｂに投入又は投入を停止することによってＣＰＵ１０１におけるユーザプログラム領域に加える負荷を増減させる。負荷制御部１１２は、終了処理部１１１Ｅ２から停止要求を取得すると、スレッド実行部１１２Ｂによるスレッドの実行を停止する。
【０１４１】
ターゲット監視部１１４がターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３から、ターゲット・プログラム１１５Ｂの動作状況取得要求を取得した場合、ターゲット監視部１１４は、ユーザ空間で実行されるアプリケーションプログラム等のユーザプログラム領域で動作するターゲット・プログラム１１５Ｂの動作状況を監視する。実施例３に係るターゲット・プログラム１１５Ｂは、例えばユーザ空間で実行される。ターゲット監視部１１４は、例えば後述するパラメタファイル１０４の「ターゲット監視コマンド」に予め設定されたターゲット監視用のコマンドを起動する。ターゲット監視コマンド実行部１１４Ａは、ターゲット監視部１１４により起動された「ターゲット監視コマンド」を実行し、ターゲット・プログラム１１５Ｂの動作状況を監視する。
【０１４２】
ターゲット・プログラム１１５Ｂの動作状況は、例えばコマンドが復帰する際の復帰値（戻り値）の値及び計測したコマンドが復帰するまでの経過時間から判断される。一例として、「復帰値（戻り値）」の値が“０”の場合は正常動作を表し、“１”の場合はエラーが発生したことを示す。コマンドが復帰するまでの経過時間が例えば６０秒以上の場合、ＣＥは、コマンド復帰時間が実際のサーバ１００の運用では耐えられないと判断してエラーと判定する。ターゲット監視コマンド実行部１１４Ｂからの動作状況取得状況を受けて、ターゲット監視部１１４は、ターゲット監視間隔タイマ・タイムアウト処理部１１１Ｅ３が取得したターゲット・プログラム１１５Ｂの動作状況を通知する。そして、ターゲット監視部１１４は、取得したターゲット・プログラム１１５Ｂの動作状況をモニタ１１に出力する。
【０１４３】
ターゲット・プログラム１１５Ｂは、実施例３に係る負荷制御装置１０００Ｂにおいて監視の対象となるプログラムである。実施例３に係るターゲット・プログラム１１５Ｂは、例えばユーザ空間で実行される。
【０１４４】
図１９は、実施例３に係るパラメタファイル１０４Ｂの一部を示す図である。パラメタファイル１０４Ｂは、図１及び図２に示すＨＤＤ１０３に格納される。
【０１４５】
負荷種別は、図１８に係る負荷制御部１１２がシステム又はユーザのＣＰＵ１０１のうち、どちらに負荷を加えるか設定する項目である。実施例３に係る負荷制御装置１０００Ｂは、ＣＰＵ１０１のユーザプログラム領域側に負荷を加える設定を示す「ＵＳＲ」が入力されている。
【０１４６】
負荷種別は、図１９に係る負荷制御部１１２がＣＰＵ１０１の実行するＯＳのアドレス空間のうちカーネル空間で動作するシステムプログラム領域とユーザ空間で動作するユーザプログラム領域のどちらの領域にスレッドをＣＰＵ１０１のスレッド実行部１１２Ｂに投入することにより、負荷を加えるかを設定する項目である。実施例３に係る負荷制御装置１０００Ｂは、ユーザプログラム領域側のスレッドであるスレッド実行部１１２Ｂを実行することにより、ＣＰＵ１０１のユーザプログラム領域側に負荷を加える設定を示す「ＵＳＲ」が入力されている。
【０１４７】
負荷モードは、図１８に係る負荷制御部１１２がＣＰＵ１０１に負荷を加える際のスレッド実行部１１２Ｂのスレッドの実行による負荷の加え方を設定する項目である。実施例３に係る負荷制御装置１０００Ｂは、スレッド実行部１１２Ｂのスレッドの実行により、負荷率最大（％）に設定された一定の負荷をＣＰＵ１０１に加えることを示す「ＨＯＬＤ」が入力される。負荷モードが「ＨＯＬＤ」である場合は、実施例１に係る負荷制御装置１０００Ａと同様に、負荷率最小（％）及び負荷率上昇幅（％）の項目は設定されないか又は設定された値は無視される。
【０１４８】
図２０から図２５は、実施例３に係る負荷制御装置１０００Ｂの動作例を示すシーケンス図である。図１９に示す処理は図２０の「Ａ」に続いている。図２０に示す処理は図２１の「Ａ」に続いている。図２１に示す処理は図２２の「Ａ」に続いている。図２２に示す処理は図２３の「Ａ」に続いている。図２３に示す処理は図２４の「Ａ」に続いている。図１９から図２４に示す処理は、ＣＥがＣＥ端末１４を用いて実施例３に係る負荷制御装置１０００Ｂを用いてターゲット・プログラム１１５Ｂの動作状況の診断を実行する際の処理である。
【０１４９】
図２０に示すように、ＣＥはＣＥ端末１４を用いてパラメタファイル１０４Ｂを定義し、コマンド処理部１１１を呼び出す（ＯＰ８１）。コマンド処理部１１１は、パラメタファイル１０４Ｂの定義内容である「ＵＳＲ」及び「ＨＯＬＤ」を読込み、図１及び図２に示すユーザのＣＰＵ１０１の実効負荷率を設定する（ＯＰ８２）。図１９に係るパラメタファイル１０４Ｂにおいて、負荷種目は「ＵＳＲ」及び負荷モードは「ＨＯＬＤ」と定義されている。そのため、コマンド処理部１１１は、「負荷率最大」として例えば９０％の負荷率をＣＰＵ１０１におけるユーザプログラム領域の実効負荷率として設定する。コマンド処理部１１１は、負荷監視部１１３を呼び出して現在のＣＰＵ１０１の負荷率を取得する（ＯＰ８３）。
【０１５０】
負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のユーザプログラム領域側のＣＰＵ負荷情報を取得し、モニタ１１に出力する（ＯＰ８４）。負荷監視部１１３は、現在のユーザプログラム領域のＣＰＵ負荷情報を取得し、コマンド処理部１１１に通知する（ＯＰ８５）。
【０１５１】
図２１に示すように、コマンド処理部１１１は、取得した現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率と設定された実効負荷率との差分を求める（ＯＰ９１）。コマンド処理部１１１は、負荷制御部１１２を呼び出し、負荷制御部１１２にＣＰＵ１０１の負荷率を調節させる（ＯＰ９２）。
【０１５２】
負荷制御部１１２は、所定のスレッドのスレッド実行部１１２Ｂへの投入又は投入の停止を行うことにより、ＣＰＵ１０１におけるユーザプログラム領域の負荷率を調節する（ＯＰ９３）。具体的には、負荷制御部１１２は、現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率と設定された実効負荷率との差分を減少させ、所定のスレッド実行部１１２Ｂによるスレッドの起動又は停止を行う。負荷制御部１１２は、所定のスレッド実行部１１２Ｂによるスレッドの起動又は停止を行い、ユーザプログラム領域の負荷率を調整する。負荷制御部１１２は、ＣＰＵ１０１におけるユーザプログラム領域の負荷率の調節処理を完了した後、コマンド処理部１１１に負荷調節処理の完了を通知する（ＯＰ９４）。
【０１５３】
コマンド処理部１１１は、負荷時間タイマを起動し、負荷制御部１１２がユーザプログラム領域のＣＰＵ１０１に負荷を加える時間の計時を開始する（ＯＰ９５）。コマンド処理部１１１は、負荷監視間隔タイマを起動し、負荷監視部１１３がユーザプログラム領域のＣＰＵ１０１に負荷を監視する時間間隔の計時を開始する（ＯＰ９６）。コマンド処理部１１１は、ターゲット監視間隔タイマを起動し、ターゲット監視部１１４がユーザプログラム領域のターゲット・プログラム１１５Ｂに動作状況を監視する時間間隔の計時を開始する（ＯＰ９７）。ＯＰ９７の処理の後、コマンド処理部１１１はタイマ１０１Ａのタイムアウト発生待ちモードに移行する。
【０１５４】
図２２に示すように、コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいて負荷監視間隔タイマのタイムアウトにより負荷監視時間が経過したことを検出すると（ＯＰ１０１）、負荷監視部１１３から現在のユーザプログラム領域のＣＰＵ１０１の負荷率を再度取得するために負荷監視部１１３を呼び出す（ＯＰ１０２）。
【０１５５】
ＣＰＵ１０１の負荷率は、ターゲット・プログラム１１５Ｂ以外のプログラムの動作状況により変動する。又、ＣＰＵ１０１の負荷率は、サーバ１００に対する他サーバからのアクセス量が増加すると、他サーバからＣＰＵ１０１に送信されるパケット量が増加することにより変動する。ＣＰＵ１０１の負荷率の変動に備え、現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率を再度取得する必要がある。
【０１５６】
負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率を再度取得し、モニタ１１に出力する（ＯＰ１０３）。負荷監視部１１３は、コマンド処理部１１１から呼出を受けると、現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率を取得し、取得したユーザプログラム領域の負荷率をコマンド処理部１１１に再度通知する（ＯＰ１０４）。
【０１５７】
コマンド処理部１１１は、負荷監視部１１３から現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率を取得すると、取得した現在のＣＰＵ１０１におけるユーザプログラム領域の負荷率と予め設定された実効負荷率との差分を再度求める（ＯＰ１０５）。
【０１５８】
図２３に示すように、コマンド処理部１１１は、負荷制御部１１２によってＣＰＵ１０１におけるユーザプログラム領域の負荷率を再度調節させるために、負荷制御部１１２を再度呼び出す（ＯＰ１１１）。
【０１５９】
負荷制御部１１２は、コマンド処理部１１１からの呼び出しを受けると、図２１に示すＯＰ９３の処理と同様に、ユーザプログラム領域のＣＰＵ１０１の負荷率を再度調節する（ＯＰ１１２）。負荷制御部１１２は、ユーザプログラム領域のＣＰＵ１０１の負荷率の調節処理を再度完了した後、図２１に示すＯＰ９４の処理と同様に、コマンド処理部１１１に調節処理の完了を再度通知する（ＯＰ１１３）。
【０１６０】
コマンド処理部１１１は、負荷制御部１１２から調節処理の完了が再度通知されると、負荷監視間隔タイマを再起動し、負荷監視部１１３によるＣＰＵ１０１におけるユーザプログラム領域の負荷を監視する時間間隔の計時を再開する（ＯＰ１１４）。上記のＯＰ１０１からＯＰ１１４までの処理、負荷時間タイマがタイムアウトすることにより、設定されたＣＰＵ１０１に負荷を加える時間の経過を検出するまで繰り返される（ＯＰ１１５）。
【０１６１】
コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいてターゲット監視間隔タイマがタイムアウトすることにより、ＣＰＵ１０１に負荷を加える時間の経過を検出すると（ＯＰ１１６）、ターゲット監視部１１４を呼び出してターゲット・プログラム１１５Ｂの実行状況を監視する（ＯＰ１１７）。
【０１６２】
ターゲット監視部１１４は、コマンド処理部１１１から呼び出しを受けると、ターゲット・プログラム監視コマンドを実行してターゲット・プログラム１１５Ｂの監視を実行する（ＯＰ１１８）。具体的には、ターゲット監視部１１４は、例えばコマンドが復帰する際の復帰値を取得することにより又は復帰するまでの経過時間を計時することによって、ターゲット・プログラム１１５Ｂの動作状況を判断する。ターゲット監視部１１４は、コマンドが復帰する際の復帰値及び復帰するまでの経過時間をモニタ１１に出力させる（ＯＰ１１９）。ターゲット監視部１１４は、モニタ１１に復帰値及び復帰するまでの経過時間をモニタ１１に出力した後、図２４に示すように、モニタ１１に復帰値及び復帰するまでの復帰時間をモニタ１１に出力する。ターゲット監視部１１４は、モニタ１１に復帰値及び復帰するまでの復帰時間をモニタ１１に出力した後、コマンド処理部１１１にコマンドの実行結果を通知する（ＯＰ１２１）。ターゲット・プログラム１１５Ｂの動作状況は、例えばコマンドが復帰する際の復帰値（戻り値）の値及び計測した復帰するまでの経過時間から判断される。一例として、「復帰値（戻り値）」の値が“０”の場合は正常終了を表し、“１”の場合は異常終了、即ちエラーが発生したことを示す。
【０１６３】
コマンド処理部１１１は、ターゲット処理部１１４からコマンドの実行結果が通知されると（ＯＰ１２１）、ターゲット監視間隔タイマを再起動し、ターゲット・プログラム１１５Ｂを監視する時間間隔の計時を再開させる（ＯＰ１２２）。
【０１６４】
上記のＯＰ１１６からＯＰ１２２までの処理、即ちターゲット・プログラム監視処理が、負荷時間タイマがタイムアウトし、設定された負荷を加える時間が経過するまで繰り返される（ＯＰ１２３）。
【０１６５】
モニタ１１には、出力されたユーザプログラム領域のＣＰＵ１０１の負荷情報、ターゲット・プログラム１１５Ｂに係るコマンドの復帰値及び復帰時間が出力される。ＣＥはＣＥ端末１４を用いて、モニタ１１に出力された情報を元に、ターゲット・プログラム１１５Ｂが動作可能であるユーザプログラム領域のＣＰＵ１０１の負荷の限界点を把握することが可能となる（ＯＰ１２４）。
【０１６６】
図２５に示すように、コマンド処理部１１１は、タイマ１０１Ａのタイムアウト発生待ちモードにおいて負荷時間タイマがタイムアウトすることにより設定された負荷を加える時間の経過を検出すると、負荷時間タイマの計時を停止させるととともに（ＯＰ１３１）、負荷監視間隔タイマの計時を強制的に停止させる（ＯＰ１３２）。同様に、コマンド処理部１１１は、ターゲット監視間隔タイマの計時を強制的に停止させる（ＯＰ１３３）。コマンド処理部１１１は、負荷制御部１１２に負荷制御部１１２を停止させる指示を通知する（ＯＰ１３４）。
【０１６７】
負荷制御部１１２は、コマンド処理部１１１から負荷制御部１１２の停止指示が通知されると、負荷を印加するためにＣＰＵ１０１のスレッド実行部１１２Ｂに投入したスレッドを全て停止させる（ＯＰ１３５）。負荷制御部１１２は、負荷制御部１１２の停止処理が完了した後、コマンド処理部１１１に停止処理が完了したことを通知する（ＯＰ１３６）。ＯＰ１３６の処理により、上記のＯＰ１１４からＯＰ１２１までの処理の繰り返しが終了する。
【０１６８】
実施例３に係る負荷制御装置１０００Ｂ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１におけるユーザプログラム領域の実効負荷率を設定し、ＣＰＵ１０１の実効負荷率及び現在の負荷率の差分を求め、スレッド起動及び停止が行われる。スレッド起動及び停止が行われることにより、ＣＰＵ１０１の負荷率の増減が行われ、負荷率の変動が抑制される。そのため、ターゲット・プログラム１１５Ｂを動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。また、ターゲット・プログラム１１５Ｂをユーザ空間で動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。
【産業上の利用可能性】
【０１６９】
開示の技術に係る負荷制御装置１０００Ａ・１０００Ｂ、負荷制御方法及び負荷制御プログラムによれば、ＣＰＵ１０１の負荷率の変動を抑制することができるため、ターゲット・プログラム１１５Ａ・１１５Ｂを動作させる際のＣＰＵ１０１の負荷率を正確に測定することができる。
【符号の説明】
【０１７０】
１０  ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）
１１  モニタ
１２  キーボード
１３  マウス
１４  ＣＥ（Ｃｕｓｔｏｍｅｒ  Ｅｎｇｉｎｅｅｒ）端末
１５  ネットワーク
１００  サーバ
１０１  ＣＰＵ
１０１Ａ  タイマ
１０２  ＲＡＭ
１０３  ＨＤＤ
１０４  パラメタファイル
１０４Ａ  パラメタファイル
１０４Ｂ  パラメタファイル
１０５  グラフィック処理装置
１０６  入力インタフェース
１０７  通信インタフェース
１０８  バス
１１１  コマンド処理部
１１１Ａ  入出力コマンド処理部
１１１Ｂ  ＣＰＵ負荷率取得部
１１１Ｃ  ＣＰＵ負荷率比較部
１１１Ｄ  ＣＰＵ負荷率調節部
１１１Ｅ  タイムアウト処理部
１１１Ｅ１  負荷時間タイマ・タイムアウト処理部
１１１Ｅ２  終了処理部
１１１Ｅ３  ターゲット監視間隔タイマ・タイムアウト処理部
１１１Ｅ４  負荷監視間隔タイマ・タイムアウト処理部
１１２  負荷制御部
１１２Ａ  スレッド実行部
１１２Ｂ  スレッド実行部
１１３  負荷監視部
１１４  ターゲット監視部
１１４Ａ  ターゲット監視コマンド実行部
１１５Ａ  ターゲット・プログラム
１１５Ｂ  ターゲット・プログラム
１０００Ａ  負荷制御装置
１０００Ｂ  負荷制御装置
【図１】
2012025962.tif 000003
【図２】
2012025962.tif 000004
【図３】
2012025962.tif 000005
【図４】
2012025962.tif 000006
【図５】
2012025962.tif 000007
【図６】
2012025962.tif 000008
【図７】
2012025962.tif 000009
【図８】
2012025962.tif 000010
【図９】
2012025962.tif 000011
【図１０】
2012025962.tif 000012
【図１１】
2012025962.tif 000013
【図１２】
2012025962.tif 000014
【図１３】
2012025962.tif 000015
【図１４】
2012025962.tif 000016
【図１５】
2012025962.tif 000017
【図１６】
2012025962.tif 000018
【図１７】
2012025962.tif 000019
【図１８】
2012025962.tif 000020
【図１９】
2012025962.tif 000021
【図２０】
2012025962.tif 000022
【図２１】
2012025962.tif 000023
【図２２】
2012025962.tif 000024
【図２３】
2012025962.tif 000025
【図２４】
2012025962.tif 000026
【図２５】
2012025962.tif 000027
【国際調査報告】
2012025962.tif 000028
2012025962.tif 000029
2012025962.tif 000030
2012025962.tif 000031
2012025962.tif 000032
2012025962.tif 000033