(57)【要約】【課題】  処理効率を向上させるために最適な多重度でサーバに処理を実行させることができるようにする。【解決手段】  負荷情報取得手段１ａにより、サーバ２のＣＰＵ資源および他の資源の負荷情報が収集される。すると、多重度決定手段１ｂにより、負荷情報に基づいて、サーバ２で実行されている処理の多重度を増加させた場合の各資源の負荷の増加量が計算され、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度が決定される。そして、多重度制御手段１ｃにより、サーバ２で実行されている処理の多重度が多重度決定手段１ｂで決定された多重度に変更される。【選択図】  図１
2006252163.tif 000002
【特許請求の範囲】
【請求項１】
多重化させた処理を実行するサーバの負荷を制御する負荷制御装置において、
前記サーバのＣＰＵ資源および他の資源の負荷情報を収集する負荷情報取得手段と、
前記負荷情報に基づいて、前記サーバで実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する多重度決定手段と、
前記サーバで実行されている処理の多重度を前記多重度決定手段で決定された多重度に変更する多重度制御手段と、
を有することを特徴とする負荷制御装置。
【請求項２】
前記多重度決定手段は、前記サーバで複数の処理が実行されている場合、各処理を順番に多重度増加検討対象として選択し、選択した処理の多重度を上げられるか否かを判断することを特徴とする請求項１記載の負荷制御装置。
【請求項３】
前記多重度決定手段は、全ての処理について多重度を増加できなくなるまで、多重度増加検討対象とする処理の選択を繰り返すことを特徴とする請求項２記載の負荷制御装置。
【請求項４】
前記負荷情報に基づいて、他のハードウェア資源の負荷情報が負荷上限値を超えているか否かを判断し、負荷上限値を超えている場合、前記他のハードウェア資源に応じたインターバル時間を計算するインターバル時間決定手段と、
前記他のハードウェア資源に対する処理要求を出力する際に前記インターバル時間だけ時間をあけてから前記処理要求を出力するように、前記サーバに指示を出すインターバル時間制御手段と、
をさらに有することを特徴とする請求項１記載の負荷制御装置。
【請求項５】
多重化させた処理を実行するサーバの負荷を制御するための負荷制御プログラムにおいて、
コンピュータを、
前記サーバのＣＰＵ資源および他の資源の負荷情報を収集する負荷情報取得手段、
前記負荷情報に基づいて、前記サーバで実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する多重度決定手段、
前記サーバで実行されている処理の多重度を前記多重度決定手段で決定された多重度に変更する多重度制御手段、
として機能させることを特徴とする負荷制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサーバの負荷を制御する負荷制御装置および負荷制御プログラムに関し、特に処理の多重度を調整することでサーバの負荷を制御する負荷制御装置および負荷制御プログラムに関する。
【背景技術】
【０００２】
大規模なコンピュータシステムは、システムを効率的に運用するために負荷制御が行われている。この負荷制御には、過負荷制御と疎負荷制御とがある。
過負荷制御は、負荷が閾値（上限値）を超えた場合に、負荷を閾値以下に下げる制御であり、疎負荷制御は、負荷が閾値に達していない場合に、閾値に近づくように負荷をあげる制御である。
【０００３】
現在、一般的に行われているのは過負荷制御である。過負荷制御では、資源の利用者が使用可能な負荷率の上限値を資源毎に予め設定しておき、資源の負荷をその上限値以下に抑えることを目的としている。
【０００４】
例えば、端末装置からの要求に応じて各種処理を実行するサーバコンピュータでは、端末装置からの要求を処理するために、複数のサーバプロセスが起動される。同時に起動されるサーバプロセスの数が、多重度である。このようなシステムでは、複数の端末装置からの要求が、特定の時間に集中する場合がある。その場合、各サーバプロセスでの負荷率が上昇する。その結果、各サーバプロセスの負荷率が所定の上限値を超えると、サーバコンピュータが自動的に多重度を上げる。多重度が上がる（同時に実行されるサーバプロセス数が増える）ことで、個々のサーバプロセスに掛かる負荷は低減する。これにより、サーバコンピュータにおける処理負荷を所定の負荷率以下に抑えておくことができる。
【０００５】
なお、過負荷制御と疎負荷制御とを行うシステムも提供されている。例えば、サーバのＣＰＵ(Central Processing Unit)使用率を測定し、そのＣＰＵ使用率が予め設定されたＣＰＵ使用率上限値より大きい場合にはサーバの多重度を増加させ、ＣＰＵ使用率が予め設定されたＣＰＵ使用率下限値より小さい場合には、サーバの多重度を減少させる技術が考えられている（特許文献１参照）。
【特許文献１】特開２００１−１６００４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記特許文献１記載の技術ではＣＰＵ以外の機能の処理負荷が考慮されていないため、ＣＰＵ以外の資源負荷が過大となったときに処理の多重度を上げても、並列で実行される各処理の負荷が低減されない場合がある。
【０００７】
すなわち、ハードディスクへのアクセス等のＩ／Ｏ（データの入出力）処理を頻繁に行う業務を実行する場合、ＣＰＵの処理能力よりもＩ／Ｏの処理能力の方が低くなる。すると、ＣＰＵ以外の資源による業務の処理負荷が上限値を超えた場合に、処理の多重度を上げたとしても、ＣＰＵには、Ｉ／Ｏ待ちによる待機時間が発生してしまう。そのため、個々の業務を処理する時間が長くなり、システム全体としての処理効率が改善されない結果となる。
【０００８】
本発明はこのような点に鑑みてなされたものであり、処理効率を向上させるために最適な多重度でサーバに処理を実行させることができる負荷制御装置および負荷制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明では上記課題を解決するために、図１に示すような負荷制御装置１が提供される。本発明の負荷制御装置１は、多重化させた処理を実行するサーバ２の負荷を制御するためのものである。この負荷制御装置１は、負荷情報取得手段１ａ、多重度決定手段１ｂ、および多重度制御手段１ｃを有する。負荷情報取得手段１ａは、サーバ２のＣＰＵ資源および他の資源の負荷情報を収集する。多重度決定手段１ｂは、負荷情報に基づいて、サーバ２で実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する。多重度制御手段１ｃは、サーバ２で実行されている処理の多重度を多重度決定手段１ｂで決定された多重度に変更する。
【００１０】
これにより、負荷情報取得手段１ａにより、サーバ２のＣＰＵ資源および他の資源の負荷情報が収集される。すると、多重度決定手段１ｂにより、負荷情報に基づいて、サーバ２で実行されている処理の多重度を増加させた場合の各資源の負荷の増加量が計算され、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度が決定される。そして、多重度制御手段１ｃにより、サーバ２で実行されている処理の多重度が多重度決定手段１ｂで決定された多重度に変更される。
【発明の効果】
【００１１】
本発明では、ＣＰＵ資源および他の全ての資源について負荷が負荷上限値を超えない範囲で処理の多重度を増加させるようにした。これにより、多重度を増加させてもサーバ上の全ての資源において処理負荷が過大とならず、処理効率上最適な多重度で処理を実行させることができる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施の形態を図面を参照して説明する。
図１は、本実施の形態の概略を示す図である。本発明の負荷制御装置１は、多重化させた処理を実行するサーバ２の負荷を制御するためのものである。この負荷制御装置１は、負荷情報取得手段１ａ、多重度決定手段１ｂ、および多重度制御手段１ｃを有する。負荷情報取得手段１ａは、サーバ２のＣＰＵ資源および他の資源（例えば、Ｉ／Ｏ資源、通信資源等のハードウェア資源やプロセス資源等のソフトウェア資源のうちの少なくとも１つの資源）の負荷情報を収集する。多重度決定手段１ｂは、負荷情報に基づいて、サーバ２で実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する。多重度制御手段１ｃは、サーバ２で実行されている処理の多重度を多重度決定手段１ｂで決定された多重度に変更する。
【００１３】
このような負荷制御装置１によれば、負荷情報取得手段１ａにより、サーバ２のＣＰＵ資源および他の資源の負荷情報が収集される。すると、多重度決定手段１ｂにより、負荷情報に基づいて、サーバ２で実行されている処理の多重度を増加させた場合の各資源の負荷の増加量が計算され、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度が決定される。そして、多重度制御手段１ｃにより、サーバ２で実行されている処理の多重度が多重度決定手段１ｂで決定された多重度に変更される。
【００１４】
その結果、多重度を増加させてもサーバ上の全ての資源において処理負荷が過大とならず、処理効率上最適な多重度で処理を実行させることができる。
ところで、処理の多重度の調整に加え、Ｉ／Ｏアクセスや通信等の負荷が負荷上限値に達した場合、Ｉ／Ｏアクセスのインターバル時間を設けることができる。Ｉ／Ｏアクセスにおいてインターバル時間を設けるとＩ／Ｏアクセスの待ち時間が少なくなり、処理効率を向上させることができる。
【００１５】
このように、Ｉ／Ｏ資源の負荷が負荷上限値を超えた場合、インターバル時間の調整が行われ、多重度の制御（処理を実行するプロセスの起動や停止等の制御）は行われない。しかし、インターバル時間の調整によってＩ／Ｏ処理の負荷を低下させることで、サーバ内でＩ／Ｏ処理待ちの状態のプロセスの出現頻度を低下させ、同時に処理できるプロセスを増加させることができる。その結果、多重度を増加させた場合と同様の処理効率の向上効果を得ることができる。
【００１６】
すなわち、Ｉ／Ｏ負荷が過大となっている場合、長時間のＩ／Ｏ待ちが発生する。Ｉ／Ｏ待ち状態のプロセスは、ＣＰＵにおいて処理が進行しない。そのため、ＣＰＵ資源でみた場合、例えば、３多重分のプロセスが起動されていても、２多重で動作させたときと処理効率が変わらない場合がある。
【００１７】
そのとき、Ｉ／Ｏ負荷をインターバル時間の調整によって低下させれば、Ｉ／Ｏ処理待ちの時間が短縮される。その結果、ＣＰＵでは、起動されている全てのプロセスの多重化処理により、効率的な処理が可能となる。
【００１８】
なお、Ｉ／Ｏ資源の負荷が負荷上限値以下の場合、インターバル時間の調整は行われない。インターバル時間の調整は、Ｉ／Ｏ待ち時間の長期化を防ぐために行われるものであるが、負荷上限値以下であれば負荷に応じたＩ／Ｏ待ち時間は短い上に変化量が少なく、インターバルを設ける必要が無いためである。
【００１９】
以下、本実施の形態の詳細を説明する。以下の実施の形態では、Ｉ／Ｏ資源と通信資源とのアクセスに関して、インターバル時間を制御するものとする。
図２は、本実施の形態のシステム構成例を示す図である。性能管理サーバ１００は、管理用のＬＡＮ（Local Area Network）１０を介して複数のアプリケーションサーバ２１０，２２０，２３０に接続されている。各アプリケーションサーバ２１０，２２０，２３０は、ネットワーク２０を介してクライアント２１，２２，・・・に対して各種サービスを提供する。そして、アプリケーションサーバ２１０，２２０，２３０は、自己の資源負荷情報を性能管理サーバ１００に送信する。また、アプリケーションサーバ２１０，２２０，２３０は、性能管理サーバ１００からの要求に応じて、サービスを提供する業務の多重度およびＩ／Ｏインターバル時間を変更する。
【００２０】
性能管理サーバ１００は、アプリケーションサーバ２１０，２２０，２３０の性能を管理し、アプリケーションサーバ２１０，２２０，２３０間の負荷バランスを調整する。具体的には、性能管理サーバ１００は、処理能力に余裕があるアプリケーションサーバ２１０，２２０，２３０に対しては、多重度の増加および適切なインターバル時間を指示する。
【００２１】
図３は、本実施の形態に用いる性能管理サーバのハードウェア構成例を示す図である。性能管理サーバ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
【００２２】
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
【００２３】
グラフィック処理装置１０４には、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
【００２４】
通信インタフェース１０６は、ＬＡＮ１０に接続されている。通信インタフェース１０６は、ＬＡＮ１０を介して、アプリケーションサーバ２１０，２２０，２３０との間でデータの送受信を行う。
【００２５】
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。なお、図３には、性能管理サーバ１００のハードウェア構成例を示したが、アプリケーションサーバ２１０，２２０，２３０やクライアント２１，２２，・・・も同様のハードウェア構成で実現することができる。
【００２６】
次に、アプリケーションサーバ２１０，２２０，２３０と性能管理サーバ１００とが有する処理機能について説明する。
図４は、性能管理のための機能を示すブロック図である。アプリケーションサーバ２１０は、性能情報提供部２１１と複数の業務アプリケーション２１２ａ，２１２ｂ，２１２ｃとを有している。
【００２７】
性能情報提供部２１１は、アプリケーションサーバ２１０のＣＰＵ、Ｉ／Ｏ、ネットワーク、およびプロセスに関する負荷情報を収集し、性能管理サーバ１００に対して送信する。具体的には、性能情報提供部２１１は、業務アプリケーション２１２ａ，２１２ｂ，２１２ｃ毎に、業務処理グループ名、資源使用量（負荷率）、資源使用時間、プロセス処理時間等の情報を収集し、それらの情報を性能情報として性能管理サーバ１００に対して送信する。業務アプリケーション２１２ａ，２１２ｂ，２１２ｃは、クライアント２１，２２，・・・にサービスを提供する機能である。業務アプリケーション２１２ａ，２１２ｂ，２１２ｃは、複数のプロセスを起動し、多重化して処理を実行することができる。
【００２８】
なお、図４には、アプリケーションサーバ２１０の機能を示しているが、他のアプリケーションサーバ２２０，２３０も同様の機能を有している。
性能管理サーバ１００は、アプリケーションサーバ２１０，２２０，２３０それぞれに対応づけられた、性能情報取得部１１０，１１０ａ，１１０ｂ、性能情報ログ１２０，１２０ａ，１２０ｂ、負荷制御対象バッチテーブル１３１，１３２，１３３、資源負荷管理テーブル１４１，１４２，１４３、および自動負荷制御部１５０，１５０ａ，１５０ｂを有している。
【００２９】
性能情報取得部１１０，１１０ａ，１１０ｂは、それぞれ対応づけられたアプリケーションサーバ２１０，２２０，２３０から性能情報を取得し、性能情報ログ１２０，１２０ａ，１２０ｂに格納する。性能情報ログ１２０，１２０ａ，１２０ｂは、各アプリケーションサーバ２１０，２２０，２３０から収集した性能情報を蓄積する記憶媒体である。
【００３０】
負荷制御対象バッチテーブル１３１，１３２，１３３は、負荷制御の対象となる処理とその最大可能多重度とが定義されたテーブルである。なお、負荷制御の対象となる処理は、長時間バッチ（処理に所定時間以上要するバッチ処理）に限定される。
【００３１】
負荷制御対象から短時間で完了するバッチ処理を除外したのは、短時間で完了するバッチ処理は元々システムに掛かる負荷が小さく、多重度を制御する必要がないためである。また、本実施の形態では、オンライン処理も負荷制御対象から除外されている。オンライン処理は、クライアントからの要求に応じて実行される処理であり、ある程度余裕をみて資源を割り当てておく必要がある。そのため、現在の処理負荷から一義的に多重度を決めるのは不適当だからである。
【００３２】
資源負荷管理テーブル１４１，１４２，１４３は、各資源（ＣＰＵ、Ｉ／Ｏ、通信、プロセス）の負荷を管理するデータベースである。資源負荷管理テーブル１４１，１４２，１４３の詳細は後述する。
【００３３】
自動負荷制御部１５０，１５０ａ，１５０ｂは、性能情報ログ１２０，１２０ａ，１２０ｂに格納された性能情報に基づいて、対応づけられたアプリケーションサーバ２１０，２２０，２３０毎の最適多重度とインターバル時間とを算出する。そして、自動負荷制御部１５０，１５０ａ，１５０ｂは、算出した多重度とインターバル時間とを、対応づけられたアプリケーションサーバ２１０，２２０，２３０に指示する。これらの処理を実行するために、自動負荷制御部１５０は、性能情報設定部１５１、負荷パラメータ設定部１５２、およびプロセス制御部１５３を有している。
【００３４】
性能情報設定部１５１は、性能情報ログ１２０と負荷制御対象バッチテーブル１３１とを参照し、現在実行されている業務アプリケーションのうち、負荷制御対象となる業務アプリケーション（長時間バッチ）を特定する。そして、性能情報設定部１５１は、負荷制御対象となる業務アプリケーションに関する負荷情報を性能情報ログ１２０から取得し、資源負荷管理テーブル１４１に設定する。
【００３５】
負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１を参照し、業務アプリケーション毎の最適な多重度とインターバル時間とを計算する。そして、負荷パラメータ設定部１５２は、算出された最適な多重度とインターバル時間とによって、資源負荷管理テーブル１４１を更新する。
【００３６】
プロセス制御部１５３は、資源負荷管理テーブル１４１に登録された業務アプリケーションの多重度とインターバル時間とが更新された場合、更新後の内容を、その業務アプリケーションを実行するアプリケーションサーバに対して送信する。
【００３７】
図示していないが、他の自動負荷制御部１５０ａ，１５０ｂも自動負荷制御部１５０と同様の機能を有している。
次に、性能管理サーバ１００が有する各種データの内容を詳細に説明する。
【００３８】
図５は、性能情報ログのデータ構造例を示す図である。図５の例では、性能情報ログ１２０に、各資源を利用する業務毎の性能情報１２１，１２２，１２３，・・・が登録されている。各性能情報１２１，１２２，１２３，・・・には、業務処理グループ名、多重度、プロセス名、プロセス処理時間、資源名、資源使用量（負荷率）、資源使用時間、資源使用回数等の情報が設定されている。
【００３９】
図６は、負荷制御対象バッチテーブルのデータ構造例を示す図である。負荷制御対象バッチテーブル１３１には、各アプリケーションサーバにおける所定時間以上要するバッチ処理（長時間バッチ）のグループ番号が登録されており、各長時間バッチの最大多重度が設定されている。なお、各アプリケーションサーバの業務処理運用による多重度の偏りを考慮し、システム全体の最大多重度を配分するように、各アプリケーションサーバにおける各長時間バッチの最大多重度が設定されている。また、長時間バッチは、優先度の高いものから順に、負荷制御対象バッチテーブル１３１の上位に登録されている。
【００４０】
以下、図７〜図９を参照して、資源負荷管理テーブルのデータ構造例について説明する。図７は、資源負荷管理テーブルのＣＰＵ資源およびＩ／Ｏ資源部分を示す図である。図８は、資源負荷管理テーブルの通信資源部分を示す図である。図９は、資源負荷管理テーブルのプロセス資源部分を示す図である。
【００４１】
資源負荷管理テーブル１４１には、資源名、資源使用量（負荷率）上限値、業務種別、業務処理グループ名、プロセス名、資源使用量（負荷率）、資源使用回数、資源使用時間、インターバル時間および多重度の欄が設けられている。
【００４２】
資源名の欄には、管理対象となるアプリケーションサーバ内の資源の名称が設定される。具体的には、資源名の欄には、ＣＰＵ、Ｉ／Ｏ、通信、プロセスの何れかが登録される。ＣＰＵ資源は、１台のアプリケーションサーバに１つの資源として管理される。例えば、アプリケーションサーバがマルチＣＰＵ構成であっても、資源負荷管理テーブル１４１では、１つのＣＰＵ資源として管理される。
【００４３】
Ｉ／Ｏ資源は、アプリケーションサーバからアクセス可能なＩ／Ｏ機器（ストレージデバイス等）の数分、資源名の欄に登録される。資源名の欄に登録されたＩ／Ｏ資源には、アプリケーションサーバ内でＩ／Ｏ資源を識別するための識別番号が付与されている。
【００４４】
通信資源は、アプリケーションサーバに接続された通信回線の数分、資源名の欄に登録される。資源名の欄に登録された通信資源には、アプリケーションサーバ内で通信資源を識別するための識別番号が付与されている。
【００４５】
プロセス資源は、オンライン処理とバッチ処理に割り当てられたプロセスの数分、資源名の欄に登録される。資源名の欄に登録されたプロセス資源には、アプリケーションサーバ内でプロセス資源を識別するための識別番号が付与されている。
【００４６】
資源使用率（負荷率）上限値の欄には、オンライン処理、及び負荷制御対象バッチテーブル１３１で管理される長時間バッチからの各資源の使用量または負荷率の上限値が設定される。オンライン処理以外、及び長時間バッチ以外の処理からの負荷率は既存システムでの実績値、或いは見積もりにより算出される。ＣＰＵ資源とＩ／Ｏ資源とに関しては、負荷率の上限値が、最大処理能力に対する割合（パーセンテージ）で示されている。通信資源に関しては、負荷率の上限値が、使用される出力バッファの個数で示されている。オンプロセス（オンライン処理を行うプロセス）資源に関しては、オンライン処理に割り当てられているプロセス負荷の上限値が設定されている。バッチプロセス資源に関しては、１００%の使用で構わないため、負荷率の上限値は設定されていない。また、アプリケーション間の共用資源となっているＩ／Ｏ資源、および通信資源については、各アプリケーションサーバの業務処理運用による負荷の偏りを考慮し、装置が持つ資源使用量（負荷率）上限値を配分するように、資源使用量（負荷率）上限値が設定されている。
【００４７】
なお、図７の例では、ＣＰＵ資源の負荷率の上限値として２７０％が設定されている。これは、アプリケーションサーバがＣＰＵを３つ搭載している場合の例であり、１つのＣＰＵの最大の処理能力を１００％としている。
【００４８】
また、図９の例では、バッチプロセスの資源機使用量（負荷率）上限値が「−」（空欄を示す）となっている。これは、上限値が設定されていないこと、すなわち、１００％まで使用可能であることを示している。
【００４９】
業務種別の欄には、業務処理グループ名の欄に登録されている業務処理グループの業務種別が設定されている。図７〜図９中、オンライン処理は「オン」と示され、バッチ処理は「バッチ」と示されている。
【００５０】
業務処理グループ名の欄には、各業務を実行する業務処理グループの名称が設定される。バッチグループについては、負荷制御対象バッチテーブル１３１で管理される長時間のバッチグループが設定される。なお、オンライン処理を行う業務処理グループには、「オングループ＃ｌ」（ｌは、１以上の整数）という名称が与えられている。また、バッチ処理を行う業務処理グループには、「バッチグループ＃ｋ」（ｋは１以上の整数）という名称が与えられている。
【００５１】
プロセス名の欄には、各業務を実行するプロセスの名称が設定される。なお、オンライン処理を行うプロセスには、「オンプロセス＃ｍ」（ｍは、１以上の整数）という名称が与えられている。また、バッチ処理を行うプロセスには、「バッチプロセス＃ｎ」（ｎは１以上の整数）という名称が与えられている。
【００５２】
資源使用量（負荷率）の欄には、各資源を使用しているプロセス毎の資源使用量または負荷率が設定される。なお、資源を使用していない場合は、空白が設定される。
資源使用回数の欄には、Ｉ／Ｏ資源、および通信資源を使用しているプロセス毎の資源使用回数が設定される。
【００５３】
資源使用時間の欄には、バッチプロセスにおけるプロセス毎の前回負荷情報収集時点からのＣＰＵ時間、およびプロセス処理時間が設定される。また、バッチプロセスにおける単位処理一回当たりのＩ／Ｏ資源、および通信資源の使用時間が設定される。
【００５４】
インターバル時間の欄には、Ｉ／Ｏ資源および通信資源を利用する際の各バッチグループのインターバル時間が設定される。
多重度の欄には、現在の業務処理グループ内の多重度が設定される。
【００５５】
ここで、資源名、資源使用量（負荷率）上限値、業務種別、業務処理グループ名、プロセス名の欄には、予めシステム管理者によってデータが設定される。また、多重度の欄には、システム管理者によって初期値が設定される。性能管理サーバ１００による自動負荷制御が開始されると、性能情報設定部１５１によって、資源使用量（負荷率）、資源使用回数、資源使用時間の欄に適宜データが設定される。また、負荷パラメータ設定部１５２によって、インターバル時間、多重度の欄にデータが設定される。
【００５６】
以上のような構成のシステムによって、自動負荷制御が行われる。以下、アプリケーションサーバ２１０に対応づけられた自動負荷制御部１５０で実行される自動負荷制御の処理手順を詳細に説明する。
【００５７】
まず、性能管理サーバ１００では、性能情報取得部１１０によって、各アプリケーションサーバ２１０から性能情報ログ１２０が採取される。そして、性能情報設定部１５１は、負荷制御対象バッチテーブル１３１を参照し、負荷制御対象のバッチグループ（長時間バッチ）についての性能情報を、資源負荷管理テーブル１４１に対して設定する。
【００５８】
負荷パラメータ設定部１５２は、所定時間間隔で起動される。起動された負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１に設定された性能情報に基づいて、適切な負荷パラメータ（多重度とインターバル時間）を計算し、資源負荷管理テーブル１４１に設定する。
【００５９】
なお、負荷パラメータ設定部１５２の起動間隔は、例えば、バッチ処理の平均処理時間に基づいて定める。バッチ処理の平均処理時間が３分であれば、負荷パラメータ設定部１５２が３分間隔で起動される。
【００６０】
図１０は、負荷パラメータ設定処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］負荷パラメータ設定部１５２は、オンライングループ毎のオンライン多重度を算出する。オンライン多重度は、以下の式で算出される。
オンライン多重度＝（オンプロセス負荷率＋オンプロセス負荷上限値）÷オンプロセス負荷上限値    ・・・（１）
ここで、オンプロセス負荷率は、対象となっているオンライングループ内で多重処理されている各プロセスの負荷率（資源負荷管理テーブル１４１のプロセス資源に対応づけて登録されているオンラインプロセスの資源使用量（負荷率）の欄に登録されている値）の合計である。オンプロセス負荷上限値は、資源負荷管理テーブル１４１のプロセス資源に対応づけて登録されているオンライングループの資源使用量（負荷率）上限値の欄に登録されている値（オンライングループ内の１プロセスにおける資源使用量（負荷率）の上限値）である。
【００６１】
［ステップＳ１２］負荷パラメータ設定部１５２は、バッチグループの多重度（バッチ多重度）を算出する。バッチ多重度算出処理の詳細は後述する。
［ステップＳ１３］負荷パラメータ設定部１５２は、Ｉ／Ｏ負荷制御処理を、Ｉ／Ｏ負荷上限値を超えている全てのＩ／Ｏについて繰り返し行う。Ｉ／Ｏ負荷制御処理の詳細は後述する。
【００６２】
［ステップＳ１４］負荷パラメータ設定部１５２は、通信負荷制御を、通信負荷上限値を超えている全ての通信資源に対して繰り返し行う。通信負荷制御処理の詳細は後述する。
【００６３】
［ステップＳ１５］プロセス制御部１５３は、資源負荷管理テーブル１４１に設定された負荷パラメータ（多重度とインターバル時間）に基づいて、各アプリケーションサーバ２１０のプロセス制御の起動／停止制御、およびインターバル時間制御を行う。
【００６４】
具体的には、プロセス制御部１５３は、資源負荷管理テーブル１４１を参照し、負荷パラメータ設定処理前より多重度が増加した業務処理グループがある場合、その業務処理グループの処理を実行するプロセスの起動要求を、その業務処理グループが実行されるアプリケーションサーバに対して送信する。また、プロセス制御部１５３は、資源負荷管理テーブル１４１を参照し、負荷パラメータ設定処理前より多重度が減少した業務処理グループがある場合、その業務処理グループの処理を実行するプロセスの停止要求を、その業務処理グループが実行されるアプリケーションサーバに対して送信する。
【００６５】
なお、バッチグループの多重度を減少させる場合、アプリケーションサーバは、バッチプロセスを完全に停止するのではなく中断させる。中断したバッチプロセスは、実行中のバッチプロセスが終了した場合、もしくは多重度の増加によるプロセスの起動要求が出された際に処理が再開される。
【００６６】
また、オンライングループの多重度を減少させる場合、アプリケーションサーバは、オンラインプロセスが未使用になったタイミングで、そのオンラインプロセスを停止させる。
【００６７】
次に、バッチ多重度算出処理について説明する。バッチ多重度を計算する際には、負荷パラメータ設定部１５２内部で、各処理グループに関する多重度と資源使用量（負荷率）との関係を示す負荷シミュレーションテーブルを生成する。
【００６８】
図１１は、負荷シミュレーションテーブルのデータ構造例を示す図である。負荷シミュレーションテーブル１５２ａには、業務処理グループ名、多重度、ＣＰＵ負荷率、Ｉ／Ｏ＃１負荷率、Ｉ／Ｏ＃２負荷率，・・・，通信＃１負荷率，・・・の各欄が業務処理グループ毎に設けられている。
【００６９】
業務処理グループ名の欄には、アプリケーションサーバで実行されている処理グループの名称が設定される。なお、バッチグループについては、負荷制御対象バッチテーブル１３１で管理される長時間のバッチグループが優先度の高い順に上位から設定される。
【００７０】
多重度の欄には、初期値として、オンライングループについては各処理グループの現在の多重度が設定され、バッチグループについては０が設定される。ＣＰＵ負荷率の欄には、初期値として、各処理グループの現時点におけるバッチプロセス１つ当たりのＣＰＵ負荷率が設定される。Ｉ／Ｏ＃１負荷率、Ｉ／Ｏ＃２負荷率，・・・の欄には、初期値として、各処理グループの現時点におけるバッチプロセス１つ当たりの各Ｉ／Ｏ負荷率が設定される。通信＃１負荷率，・・・の欄には、初期値として、各処理グループの現時点におけるバッチプロセス１つ当たりの各通信負荷率が設定される。
【００７１】
負荷パラメータ設定部１５２は、負荷シミュレーションテーブル１５２ａに登録されているバッチグループを上位から順（優先度の高い順）に選択する。そして、負荷パラメータ設定部１５２は、選択したバッチグループの多重度を１加算する。そのとき、負荷パラメータ設定部１５２は、バッチグループの多重度が増加することによる各資源のＣＰＵ負荷率およびＩ／Ｏ負荷率を計算し、選択したバッチグループのＣＰＵ負荷率、Ｉ／Ｏ＃１負荷率、Ｉ／Ｏ＃２負荷率，・・・の各欄に設定する。
【００７２】
例えば、ＣＰＵ負荷率を計算する場合、負荷パラメータ設定部１５２は、バッチプロセス１つ当たりのＣＰＵ負荷率に変更後の多重度を乗算し、多重度が増加することによるＣＰＵ負荷率を求める。Ｉ／Ｏの負荷率についても同様にして算出できる。
【００７３】
負荷パラメータ設定部１５２は、各資源の負荷率を再計算後、各資源について、資源使用量（負荷率）上限値を超えるか否かを判断する。上限値を超えていなければ、負荷パラメータ設定部１５２は、選択したバッチグループの増加させた多重度を確定する。上限値を超えることとなる資源が少なくとも１つ存在する場合、負荷パラメータ設定部１５２は、選択したバッチグループを、多重度増加の対象から除外する。その場合、選択したバッチグループの多重度の加算を取り消す。
【００７４】
なお、選択したバッチグループの多重度の増加を確定した場合、負荷パラメータ設定部１５２は、負荷制御対象バッチテーブル１３１を参照し、増加後の多重度が該当するバッチグループの最大多重度に達しているか否かを判定する。最大多重度に達している場合、負荷パラメータ設定部１５２は、選択したバッチグループを以後の多重度増加の対象から除外する。
【００７５】
以上の処理が順次選択したバッチグループに対して行われる。そして、負荷シミュレーションテーブル１５２ａに登録されている最下位のバッチグループに対して、多重度増加の検討が終了すると、負荷パラメータ設定部１５２は、負荷シミュレーションテーブル１５２ａの上位から順に、多重度増加対象となるバッチグループを再度選択し、多重度を増加すべきかを検討する。
【００７６】
そして、負荷パラメータ設定部１５２は、負荷シミュレーションテーブル１５２ａに登録されている全てのバッチグループが、多重度増加の対象から除外された場合、多重度算出処理を終了する。多重度算出処理を終了した時点で、負荷シミュレーションテーブル１５２ａの多重度の欄に登録されている多重度が、各バッチグループの多重度となる。
【００７７】
次に、Ｉ／Ｏ負荷制御処理について詳細に説明する。なお、以下の説明では、資源負荷管理テーブル１４１に対応するアプリケーションサーバのＩ／Ｏ負荷制御処理を行うものとする。
【００７８】
図１２は、Ｉ／Ｏ負荷制御処理の手順を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１においてＩ／Ｏ資源を１つ選択する。
【００７９】
［ステップＳ２２］負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１を参照し、選択したＩ／Ｏ資源を使用する全業務処理グループの資源使用量（負荷率）の合計値が、資源使用量（負荷率）上限値を超えているか否かを判断する。資源使用量（負荷率）上限値を超えている場合、処理がステップＳ２３に進められる。資源使用量（負荷率）上限値を超えていない場合、処理がステップＳ２８に進められる。
【００８０】
［ステップＳ２３］負荷パラメータ設定部１５２は、選択したＩ／Ｏ資源を使用するバッチプロセス毎にＩ／Ｏインターバル時間を計算する。具体的には、以下の式によって、Ｉ／Ｏインターバル時間が計算される。
Ｉ／Ｏインターバル時間＝（Ｉ／Ｏ処理時間÷（（Ｉ／Ｏ負荷上限値−オンライングループＩ／Ｏ負荷率）÷バッチ多重度合計））−Ｉ／Ｏ処理時間    ・・・（２）
式（２）におけるＩ／Ｏ処理時間は、資源負荷管理テーブル１４１においてステップＳ２１で選択したＩ／Ｏ資源を使用するバッチプロセスに対応づけて設定されたＩ／Ｏ資源の資源使用時間である。従って、Ｉ／Ｏ処理時間の値は、バッチプロセス毎に異なる値となる。Ｉ／Ｏ負荷上限値は、資源負荷管理テーブル１４１において選択したＩ／Ｏ資源に対応づけて設定されている資源使用量（負荷率）上限値である。オンライングループＩ／Ｏ負荷率は、資源負荷管理テーブル１４１において選択したＩ／Ｏ資源に対応づけて設定されている全オンラインプロセスの負荷率（資源使用量（負荷率）の欄の値）の合計値である。バッチ多重度合計は、資源負荷管理テーブル１４１において選択したＩ／Ｏ資源に対応づけて登録されているバッチプロセスの中で、選択したＩ／Ｏ資源を使用中のバッチプロセス（資源使用量（負荷率）の値が空白でないバッチプロセス）数の合計値である。
【００８１】
式（２）における「（Ｉ／Ｏ負荷上限値−オンライングループＩ／Ｏ負荷率）」の項は、Ｉ／Ｏ負荷上限値からオンライングループで使用されている分を除くＩ／Ｏ処理能力（バッチ処理用に割り当て可能な処理能力）を示している。このバッチ処理用に割り当て可能な処理能力を「バッチ多重度合計」で除算することで、バッチプロセス１つに割り当て可能な処理能力（Ｉ／Ｏの１００％の処理能力を１とした場合の割合を示す数値）が求められる。
【００８２】
図１３は、バッチプロセス１つに割り当て可能な処理能力を概念的に示す図である。図１３には、Ｉ／Ｏ処理能力３０のうち、Ｉ／Ｏ負荷上限値までの処理負荷をかけることができる。Ｉ／Ｏ負荷上限値までの処理能力からオンラインプロセス用の処理能力３１を差し引いた残りが、バッチプロセスに割り当て可能な処理能力３２，３３となる。なお、本実施の形態では、異なるバッチグループに属するバッチプロセスであっても、均等に処理能力を割り当てている。
【００８３】
このようにして得られたバッチプロセス１つに割り当て可能な処理能力に基づいて、各バッチグループ内のバッチプロセスにおけるＩ／Ｏインターバル時間が求められる。すなわち、バッチプロセスの１回のＩ／Ｏ処理当たりの処理時間は、「Ｉ／Ｏ処理時間＋Ｉ／Ｏインターバル時間」である。この処理時間のうちにＩ／Ｏ処理時間の割合が、バッチプロセス１つに割り当て可能な処理能力に相当するようにＩ／Ｏインターバル時間を定める。これを式で表すと次の様になる。
Ｉ／Ｏ処理時間÷（Ｉ／Ｏ処理時間＋Ｉ／Ｏインターバル時間）＝バッチプロセス１つに割り当て可能な処理能力    ・・・（３）
この式（３）をＩ／Ｏインターバル時間について解けば、式（２）が得られる。
【００８４】
以下、図１２に戻りステップＳ２４以降の処理を説明する。
［ステップＳ２４］負荷パラメータ設定部１５２は、選択されたＩ／Ｏ資源を使用するバッチプロセスのＣＰＵ負荷率を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択されたＩ／Ｏ資源に対応づけて登録されたバッチプロセス毎に、ＣＰＵ時間に対するプロセス処理時間の割合を計算し、ＣＰＵ資源の資源負荷率とする。なお、プロセス処理時間は、ステップＳ２３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００８５】
［ステップＳ２５］負荷パラメータ設定部１５２は、選択されたＩ／Ｏ資源を使用するバッチプロセスのＩ／Ｏ負荷率を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択されたＩ／Ｏ資源に対応づけて登録されたバッチプロセス毎に、Ｉ／Ｏ時間に対するプロセス処理時間の割合を計算し、Ｉ／Ｏ資源の資源負荷率とする。なお、プロセス処理時間は、ステップＳ２３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００８６】
［ステップＳ２６］負荷パラメータ設定部１５２は、選択されたＩ／Ｏ資源を使用するバッチプロセスの通信資源使用量を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択されたＩ／Ｏ資源に対応づけて登録されたバッチプロセス毎に、通信時間に対するプロセス処理時間の割合を計算し、その割合に応じた通信バッファの量を通信資源の資源使用量とする。なお、プロセス処理時間は、ステップＳ２３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００８７】
［ステップＳ２７］負荷パラメータ設定部１５２は、ステップＳ２４〜Ｓ２６で計算した各資源の資源使用量（負荷率）を、資源負荷管理テーブル１４１内の資源使用量（負荷率）の欄に設定する。
【００８８】
［ステップＳ２８］負荷パラメータ設定部１５２は、未選択のＩ／Ｏ資源が存在するか否かを判断する。未選択のＩ／Ｏ資源が存在すれば、処理がステップＳ２１に進められる。全てのＩ／Ｏ資源が選択され、Ｉ／Ｏ負荷制御処理が完了していれば、処理が終了する。
【００８９】
次に、通信負荷制御処理について詳細に説明する。なお、以下の説明では、資源負荷管理テーブル１４１に対応するアプリケーションサーバの通信負荷制御処理を行うものとする。
【００９０】
図１４は、通信負荷制御処理の手順を示すフローチャートである。以下、図１４に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１において通信資源を１つ選択する。
【００９１】
［ステップＳ３２］負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１を参照し、選択した通信資源を使用する全業務処理グループの資源使用量（負荷率）の合計値が、資源使用量（負荷率）上限値を超えているか否かを判断する。資源使用量（負荷率）上限値を超えている場合、処理がステップＳ３３に進められる。資源使用量（負荷率）上限値を超えていない場合、処理がステップＳ３８に進められる。
【００９２】
［ステップＳ３３］負荷パラメータ設定部１５２は、選択した通信資源を使用するバッチプロセス毎に通信インターバル時間を計算する。具体的には、以下の式によって、通信インターバル時間が計算される。
通信インターバル時間＝（通信処理時間÷（（通信負荷上限値−オンライングループバッファ使用個数）÷バッチ多重度合計））−通信処理時間    ・・・（４）
式（４）における通信処理時間は、資源負荷管理テーブル１４１においてステップＳ２１で選択した通信資源を使用するバッチプロセスに対応づけて設定された通信資源の資源使用時間である。従って、通信処理時間の値は、バッチプロセス毎に異なる値となる。通信負荷上限値は、資源負荷管理テーブル１４１において選択した通信資源に対応づけて設定されている資源使用量（負荷率）上限値である。オンライングループバッファ使用個数は、資源負荷管理テーブル１４１において選択した通信資源に対応づけて設定されている全オンラインプロセスの負荷率（資源使用量（負荷率）の欄の値）の合計値である。バッチ多重度合計は、資源負荷管理テーブル１４１において選択した通信資源に対応づけて登録されているバッチプロセスの中で、選択した通信資源を使用中のバッチプロセス（資源使用量（負荷率）の値が空白でないバッチプロセス）数の合計値である。
【００９３】
式（４）における「（通信負荷上限値−オンライングループバッファ使用個数）」の項は、通信負荷上限値からオンライングループで使用されている分を除く通信用の通信バッファの記憶容量（バッチ処理用に割り当て可能なバッファ数）を示している。このバッチ処理用に割り当て可能な処理能力を「バッチ多重度合計」で除算することで、バッチプロセス１つに割り当て可能な通信バッファの記憶容量の割合（通信バッファの全記憶容量を１とした場合の割合を示す数値）が求められる。
【００９４】
図１５は、バッチプロセス１つに割り当て可能な通信バッファの記憶容量を概念的に示す図である。図１５には、通信バッファ４０の全記憶容量のうち、通信負荷上限値まで各プロセスに使用させることができる。通信負荷上限値までの記憶容量からオンラインプロセス使用領域４３を差し引いた残りが、バッチプロセス使用領域４１，４２となる。なお、本実施の形態では、異なるバッチグループに属するバッチプロセスであっても、均等に通信バッファを割り当てている。
【００９５】
このようにして得られたバッチプロセス１つに割り当て可能な通信バッファの記憶容量に基づいて、各バッチグループ内のバッチプロセスにおける通信インターバル時間が求められる。すなわち、バッチプロセスの１回の通信処理当たりの処理時間は、「通信処理時間＋通信インターバル時間」である。この処理時間のうちに通信処理時間の割合が、バッチプロセス１つに割り当て可能な通信バッファの記憶容量の割合に相当するように通信インターバル時間を定める。これを式で表すと次の様になる。
通信処理時間÷（通信処理時間＋通信インターバル時間）＝バッチプロセス１つに割り当て可能な通信バッファの記憶容量の割合    ・・・（５）
この式（５）を通信インターバル時間について解けば、式（４）が得られる。
【００９６】
以下、図１４に戻りステップＳ３４以降の処理を説明する。
［ステップＳ３４］負荷パラメータ設定部１５２は、選択された通信資源を使用するバッチプロセスのＣＰＵ負荷率を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択された通信資源に対応づけて登録されたバッチプロセス毎に、ＣＰＵ時間に対するプロセス処理時間の割合を計算し、ＣＰＵ資源の資源負荷率とする。なお、プロセス処理時間は、ステップＳ３３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００９７】
［ステップＳ３５］負荷パラメータ設定部１５２は、選択された通信資源を使用するバッチプロセスのＩ／Ｏ負荷率を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択された通信資源に対応づけて登録されたバッチプロセス毎に、Ｉ／Ｏ時間に対するプロセス処理時間の割合を計算し、Ｉ／Ｏ資源の資源負荷率とする。なお、プロセス処理時間は、ステップＳ３３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００９８】
［ステップＳ３６］負荷パラメータ設定部１５２は、選択された通信資源を使用するバッチプロセスの通信資源使用量を再計算する。具体的には、負荷パラメータ設定部１５２は、資源負荷管理テーブル１４１の選択された通信資源に対応づけて登録されたバッチプロセス毎に、通信時間に対するプロセス処理時間の割合を計算し、その割合に応じた通信バッファの量を通信資源の資源使用量とする。なお、プロセス処理時間は、ステップＳ３３の処理によって決定されたインターバル時間と資源使用回数を基に再計算されている。
【００９９】
［ステップＳ３７］負荷パラメータ設定部１５２は、ステップＳ３４〜Ｓ３６で計算した各資源の資源負荷率を、資源負荷管理テーブル１４１内の資源使用量（負荷率）の欄に設定する。
【０１００】
［ステップＳ３８］負荷パラメータ設定部１５２は、未選択の通信資源が存在するか否かを判断する。未選択の通信資源が存在すれば、処理がステップＳ３１に進められる。全ての通信資源が選択され、通信負荷制御処理が完了していれば、処理が終了する。
【０１０１】
以上のようにして、一定時間毎に最適な多重度とインターバル時間とを算出し、バッチ処理の多重度および各バッチプロセスの１回の資源利用（Ｉ／Ｏアクセスや通信）当たりのインターバル時間が変更される。バッチ処理の多重度が適宜変更されることにより、例えば、オンライン処理の負荷が低下した際には、バッチ処理に割り当てられる処理能力が増加する。その結果、バッチ処理の多重度を増加させることができる。
【０１０２】
図１６は、多重度調整処理を示す概念図である。図１６（Ａ）は、多重度変更前のバッチ処理のスケジュールを示す図であり、図１６（Ｂ）は、多重度変更後のバッチ処理のスケジュールを示す図である。各スケジュールは、横軸に時間が示されている。スケジュール内の各矩形が、実行されるバッチ処理を示している。
【０１０３】
図１６の例では、変更前は４多重でバッチ処理を行っている。未処理のバッチ処理は１２個である。従って、４多重のまま処理を続行すると、全てのバッチ処理を完了するまで、あとバッチ処理３回分の時間が必要となる。多重度調整タイミングで多重度が変更され、６多重でバッチ処理が行われると、あとバッチ処理２回分の時間で、全てのバッチ処理を完了できる。
【０１０４】
ここで、多重度を増やしすぎると、ＣＰＵ、Ｉ／Ｏ、通信の何れかの資源において、処理負荷が過大となる。ＣＰＵ資源の処理負荷が過大となれば、多重度を減らすこととなるが、多くの場合、Ｉ／Ｏ資源や通信資源の方が先に負荷が過大となる。その場合、インターバル時間を調整することで、負荷の軽減が図られ、多重度を減少させずに負荷が最大負荷率以下に抑えられる。
【０１０５】
なお、インターバル時間を調整することで資源の負荷を軽減できるということは、待ち行列理論によって説明できる。以下、Ｉ／Ｏインターバル時間を調整する場合の例を採り、処理時間の削減効果について説明する。
【０１０６】
ここで、ＣＰＵによる演算処理とＩ／Ｏアクセスとが行われる場合のサービス時間（要求が出されてから処理が完了するまでの時間）は、
１処理時間＝実時間＋待ち時間    ・・・（６）
となる。ここで、１処理時間は、バッチプロセスがＣＰＵで実行されている時間、およびバッチプロセスから出されたＩ／Ｏ要求に応じたＩ／Ｏアクセスが行われている時間である。待ち時間は、ＣＰＵ資源やＩ／Ｏ資源に対して処理要求を出してからその処理が実行されるまでの待機時間である。
【０１０７】
ここで、待ち行列理論のＭ／Ｍ／１型のモデル（要求の到着がランダム、サービス時間の分布は指数分布、サービス窓口が一個）に従うと、待ち時間は
待ち時間＝（ρ／（１−ρ））×実時間    ・・・（７）
で表される。ここで、ρはトラフィック密度と呼ばれる処理の混み具合を示す数値である。トラフィック密度は、ρ＝λ／μで表される。λは要求の平均到着率（単位時間当たりの平均到着数）である。μは要求の平均処理率（単位時間当たりの平均処理数）である。
【０１０８】
ところで、（ρ／（１−ρ））は、システム内の処理要求の平均滞留数を表している。すなわち、新たに処理要求が出された時点ですでに滞留している全要求の処理時間が、待ち時間となる。
【０１０９】
式（７）によれば、ρの値が大きいほど待ち時間が長くなり、しかもρが１に近づくと待ち時間は急激に上昇する。そのため、ρの値が所定の上限値以上にならないように調整することで、待ち時間を所定の時間以下に抑えることができる。
【０１１０】
ρの値を低下させるには、λを小さくするか、μを大きくすることとなる。ただし、μはハードウェアの処理能力によって決まってしまう。そこで、λを小さくすることが考えられる。
【０１１１】
λは要求の平均到着率であり、Ｉ／Ｏアクセスに当てはめれば、バッチプロセスからのＩ／Ｏ要求の発生頻度に相当する。そこで、バッチプロセスがＣＰＵの処理を行ってからインターバル時間経過後にＩ／Ｏアクセスの要求を出力するようにすることで、λの値を小さくすることができる。λの値が小さくなればρが小さくなり、待ち時間が減少する。
【０１１２】
以下、処理時間削減の具体例を示す。
まず、前提条件として、１０多重でバッチプロセスが実行されているものとする。バッチ処理のＣＰＵ処理時間は３秒、Ｉ／Ｏ時間は、１回のＩ／Ｏアクセス当たり３０ｍｓとする。バッチ処理では、Ｉ／Ｏアクセスが３０００回発生するものとする。
【０１１３】
さらに、バッチプロセスがアクセスする資源は、磁気ディスク上の１ファイルである。このファイルに対しては、他のＣＰＵのバッチプロセスからもアクセスされるものとする。計算を分かりやすくするために、オンライン処理は発生していないものとする。また、インターバル時間を設けていない場合のＩ／Ｏ資源の負荷率は７５％である。さらに、Ｉ／Ｏバウンド処理（Ｉ／Ｏ機器に対してデータを送信する処理）が多量に行われており、ＣＰＵ待ちは発生していないものとする。
【０１１４】
〔インターバルが無いときの処理時間〕
まず、インターバルを設定する前の全体処理時間について試算する。
１処理時間（１つのバッチプロセスの処理に要する時間）は、以下の式となる。
１処理時間＝ＣＰＵ時間＋Ｉ／Ｏ時間
＝ＣＰＵ処理時間＋Ｉ／Ｏ処理時間
＝３秒＋３０ｍｓ×３０００回＝９３秒      ・・・（８）
ここで、ＣＰＵ時間は、待ち時間（この例では「０」）を含み、１つのバッチプロセの処理をＣＰＵが行うのに要する時間である。ＣＰＵ処理時間は、１つのバッチプロセスによるＣＰＵ資源の使用時間である。Ｉ／Ｏ処理時間は、１つのバッチプロセスによるＩ／Ｏ資源の使用時間である。
【０１１５】
全体処理時間は、総Ｉ／Ｏ時間とほぼ等しくなる。総Ｉ／Ｏ時間は、Ｉ／Ｏ処理時間＋Ｉ／Ｏ待ち時間である。Ｉ／Ｏアクセス１回当たりの処理時間は３０ｍｓであり、待ち時間は９０ｍｓ（＝（０．７５／（１−０．７５））×３０ｍｓ）である。すると、Ｉ／Ｏアクセス要求が出されてから処理が終了するまで、１回当たり１２０ｍｓかかる。
【０１１６】
図１７は、インターバルが無いときの全体処理時間を示す図である。図１７には、ＣＰＵで処理するバッチプロセスの時間変化と、Ｉ／Ｏアクセスを行っているバッチプロセスの時間変化とを示している。１０多重のバッチプロセスに１〜１０の番号を付け、各バッチプロセスの処理が行われている時間帯をバッチプロセスの番号で示している。
【０１１７】
Ｉ／Ｏアクセス１回当たり１２０ｍｓであり、３０００回のＩ／Ｏアクセスを行うバッチ処理が１０多重で実行されているため、総Ｉ／Ｏ時間は、１２０ｍｓ×３０００回×１０処理＝３６００秒となる。
【０１１８】
これを式で示すと以下の通りである。
全体処理時間＝総Ｉ／Ｏ時間
＝Ｉ／Ｏ処理時間＋Ｉ／Ｏ待ち時間
＝３０ｍｓ×（１＋（０．７５÷（１−０．７５）））×３０００回×１０処理
＝３６００秒      ・・・（９）
〔インターバルを挿入したときの処理時間〕
次に、インターバルを挿入したときの処理時間について説明する。インターバル時間は、以下の式で求められる。
Ｉ／Ｏ処理時間÷（Ｉ／Ｏ処理時間＋インターバル時間）＝バッチプロセス１つに割り当て可能な処理能力      ・・・（１０）
例えば、Ｉ／Ｏ負荷上限値を６０％とすると、バッチプロセス１つに割り当て可能な処理能力は６％である。すると、３０ｍｓ÷（３０ｍｓ＋インターバル時間）＝０．０６となり、インターバル時間＝４７０ｍｓとなる。
【０１１９】
このとき、１処理時間は以下の式となる。
１処理時間＝ＣＰＵ時間＋Ｉ／Ｏ時間
＝ＣＰＵ処理時間＋Ｉ／Ｏ処理時間＋インターバル時間
＝３秒＋（３０ｍｓ＋４７０ｍｓ）×３０００回
＝１５０３秒      ・・・（１１）
この１処理時間を、インターバル無しの場合の１処理時間（９３秒）と比べると、時間が長くなっている。ただし、インターバルを設けることで、Ｉ／Ｏ待ち時間が削減され、全体処理時間が短縮される。
【０１２０】
全体処理時間は、総Ｉ／Ｏ時間とほぼ等しくなる。総Ｉ／Ｏ時間は、Ｉ／Ｏ処理時間＋Ｉ／Ｏ待ち時間である。Ｉ／Ｏアクセス１回当たりの処理時間は３０ｍｓであり、待ち時間は４５ｍｓ（＝（０．６／（１−０．６））×３０ｍｓ）である。すると、Ｉ／Ｏアクセス要求が出されてから処理が終了するまで、１回当たり７５ｍｓかかる。
【０１２１】
図１８は、インターバルがあるときの全体処理時間を示す図である。図１８には、ＣＰＵで処理するバッチプロセスの時間変化と、Ｉ／Ｏアクセスを行っているバッチプロセスの時間変化とを示している。１０多重のバッチプロセスに１〜１０の番号を付け、各バッチプロセスの処理が行われている時間帯をバッチプロセスの番号で示している。
【０１２２】
Ｉ／Ｏアクセス１回当たり７５ｍｓであり、３０００回のＩ／Ｏアクセスを行うバッチ処理が１０多重で実行されているため、総Ｉ／Ｏ時間は、７５ｍｓ×３０００回×１０処理＝２２５０秒となる。
【０１２３】
これを式で示すと以下の通りである。
全体処理時間＝総Ｉ／Ｏ時間
＝Ｉ／Ｏ処理時間＋Ｉ／Ｏ待ち時間
＝３０ｍｓ×（１＋（０．６０÷（１−０．６０）））×３０００回×１０処理
＝２２５０秒      ・・・（１２）
以上より、インターバル時間の導入によって全体処理時間が３６００秒から２２５０秒に短縮され、約３７％のＩ／Ｏ負荷の削減が可能となったことがわかる。
【０１２４】
このように、本実施の形態では、ＣＰＵ資源、Ｉ／Ｏ資源、および通信資源の全ての資源において処理負荷に余裕がある場合にのみ、バッチプロセスの多重度を増やすようにした。そのため、サーバに対して、処理効率上最適な多重度で処理を実行させることができる。
【０１２５】
さらに、Ｉ／Ｏ処理や通信処理の処理負荷が負荷上限値以上となった場合、Ｉ／Ｏ処理や通信処理の処理要求の出力をインターバル時間だけ待つようにした。このインターバル時間の調整により、Ｉ／Ｏ処理の負荷を軽減し、システム全体としての処理効率を向上させることができる。
【０１２６】
なお、ＣＰＵ資源の負荷が負荷上限値以上となった場合には、多重度を下げることで、処理負荷が下げられる。
また、上記の処理機能は、コンピュータによって実現することができる。その場合、負荷制御装置が有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。光磁気記録媒体には、ＭＯ（Magneto-Optical disk）などがある。
【０１２７】
プログラムを流通させる場合には、例えば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
【０１２８】
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
【０１２９】
なお、本発明は、上述の実施の形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更を加えることができる。
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
【０１３０】
（付記１）  多重化させた処理を実行するサーバの負荷を制御する負荷制御装置において、
前記サーバのＣＰＵ資源および他の資源の負荷情報を収集する負荷情報取得手段と、
前記負荷情報に基づいて、前記サーバで実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する多重度決定手段と、
前記サーバで実行されている処理の多重度を前記多重度決定手段で決定された多重度に変更する多重度制御手段と、
を有することを特徴とする負荷制御装置。
【０１３１】
（付記２）  前記多重度決定手段は、前記サーバで複数の処理が実行されている場合、各処理を順番に多重度増加検討対象として選択し、選択した処理の多重度を上げられるか否かを判断することを特徴とする付記１記載の負荷制御装置。
【０１３２】
（付記３）  前記多重度決定手段は、全ての処理について多重度を増加できなくなるまで、多重度増加検討対象とする処理の選択を繰り返すことを特徴とする付記２記載の負荷制御装置。
【０１３３】
（付記４）  前記多重度決定手段は、前記サーバで実行されている各処理の最大多重度が予め設定されており、最大多重度に達した処理については、多重度増加検討対象から除外することを特徴とする付記２記載の負荷制御装置。
【０１３４】
（付記５）  前記多重度決定手段は、前記サーバで実行されている処理のうち、バッチ処理のみを選択して多重度を決定することを特徴とする付記１記載の負荷制御装置。
（付記６）  前記負荷情報に基づいて、他の資源の負荷情報が負荷上限値を超えているか否かを判断し、負荷上限値を超えている場合、前記他のハードウェア資源に応じたインターバル時間を計算するインターバル時間決定手段と、
前記他のハードウェア資源に対する処理要求を出力する際に前記インターバル時間だけ時間をあけてから前記処理要求を出力するように、前記サーバに指示を出すインターバル時間制御手段と、
をさらに有することを特徴とする付記１記載の負荷制御装置。
【０１３５】
（付記７）  多重化させた処理を実行するサーバの負荷を制御するための負荷制御プログラムにおいて、
コンピュータを、
前記サーバのＣＰＵ資源および他の資源の負荷情報を収集する負荷情報取得手段、
前記負荷情報に基づいて、前記サーバで実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定する多重度決定手段、
前記サーバで実行されている処理の多重度を前記多重度決定手段で決定された多重度に変更する多重度制御手段、
として機能させることを特徴とする負荷制御プログラム。
【０１３６】
（付記８）  コンピュータによって、多重化させた処理を実行するサーバの負荷を制御するための負荷制御方法において、
前記サーバのＣＰＵ資源および他の資源の負荷情報を収集し、
前記負荷情報に基づいて、前記サーバで実行されている処理の多重度を増加させた場合の各資源の負荷の増加量を計算し、全ての資源に対する負荷が資源毎に予め設定されている負荷上限値以下となる多重度を決定し、
前記サーバで実行されている処理の多重度を決定された多重度に変更する、
ことを特徴とする負荷制御方法。
【図面の簡単な説明】
【０１３７】
【図１】本実施の形態の概略を示す図である。
【図２】本実施の形態のシステム構成例を示す図である。
【図３】本実施の形態に用いる性能管理サーバのハードウェア構成例を示す図である。
【図４】性能管理のための機能を示すブロック図である。
【図５】性能情報ログのデータ構造例を示す図である。
【図６】負荷制御対象バッチテーブルのデータ構造例を示す図である。
【図７】資源負荷管理テーブルのＣＰＵ資源およびＩ／Ｏ資源部分を示す図である。
【図８】資源負荷管理テーブルの通信資源部分を示す図である。
【図９】資源負荷管理テーブルのプロセス資源部分を示す図である。
【図１０】負荷パラメータ設定処理の手順を示すフローチャートである。
【図１１】負荷シミュレーションテーブルのデータ構造例を示す図である。
【図１２】Ｉ／Ｏ負荷制御処理の手順を示すフローチャートである。
【図１３】バッチプロセス１つに割り当て可能な処理能力を概念的に示す図である。
【図１４】通信負荷制御処理の手順を示すフローチャートである。
【図１５】バッチプロセス１つに割り当て可能な通信バッファの記憶容量を概念的に示す図である。
【図１６】多重度調整処理を示す概念図である。
【図１７】インターバルが無いときの全体処理時間を示す図である。
【図１８】インターバルがあるときの全体処理時間を示す図である。
【符号の説明】
【０１３８】
１  負荷制御装置
１ａ  負荷情報取得手段
１ｂ  多重度決定手段
１ｃ  多重度制御手段
２  サーバ
【図１】
2006252163.tif 000003
【図２】
2006252163.tif 000004
【図３】
2006252163.tif 000005
【図４】
2006252163.tif 000006
【図５】
2006252163.tif 000007
【図６】
2006252163.tif 000008
【図７】
2006252163.tif 000009
【図８】
2006252163.tif 000010
【図９】
2006252163.tif 000011
【図１０】
2006252163.tif 000012
【図１１】
2006252163.tif 000013
【図１２】
2006252163.tif 000014
【図１３】
2006252163.tif 000015
【図１４】
2006252163.tif 000016
【図１５】
2006252163.tif 000017
【図１６】
2006252163.tif 000018
【図１７】
2006252163.tif 000019
【図１８】
2006252163.tif 000020