(57)【要約】【課題】サービス毎のＣＰＵ使用率の推定精度を改善し、そのＣＰＵ使用率を制御すること。【解決手段】履歴情報記憶部３１に記憶されているサービス毎の単位時間あたりのイベント処理負荷量とコンピュータが使用しているＣＰＵ全使用率とを用いてサービス毎のＣＰＵ使用率を計算する。また、上記イベント処理負荷量が上限値を超えるサービス処理を実行しないようにする。【選択図】図１
2014137716.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより、
サービス処理時におけるイベントの処理コストをイベント処理負荷量としてサービス毎に繰り返し計算する第１のステップと、
前記コンピュータが使用しているＣＰＵの全使用率を繰り返し計算する第２のステップと、
単位時間あたりにおける前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いてサービス毎のＣＰＵ使用率を計算し、前記繰り返し計算に応じて更新する第３のステップと、
前記サービス毎のイベント処理負荷量の上限値を計算し、データ記憶手段に記憶させる第４のステップと、
前記データ記憶手段からイベント処理負荷量の上限値を取得し、前記第１のステップで計算されたイベント処理負荷量が当該上限値を超えるサービス処理を実行しないようにする第５のステップと、
を有することを特徴とするイベント駆動型サービス処理方法。
【請求項２】
前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いて前記サービス毎のＣＰＵ使用率を計算するためのＣＰＵ使用率計算関数を導出するステップと、
前記ＣＰＵ使用率計算関数の逆関数であり前記サービス毎のイベント処理負荷量を計算するためのイベント処理負荷量計算関数を導出するステップと、を更に有し、
前記第４のステップは、
前記イベント処理負荷量計算関数を用いて前記サービス毎のイベント処理負荷量の上限値を計算することを特徴とする請求項１記載のイベント駆動型サービス処理方法。
【請求項３】
前記イベント処理負荷量は、
イベントの処理に要するサービス処理時間と、イベントの処理に要するＣＰＵ使用時間とのうち少なくとも１つ以上を用いて計算されることを特徴とする請求項１又は２記載のイベント駆動型サービス処理方法。
【請求項４】
コンピュータ内で動作するイベント駆動型サービス処理装置において、
サービス処理時におけるイベントの処理コストをイベント処理負荷量としてサービス毎に繰り返し計算する第１の手段と、
前記コンピュータが使用しているＣＰＵの全使用率を繰り返し計算する第２の手段と、
単位時間あたりにおける前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いてサービス毎のＣＰＵ使用率を計算し、前記繰り返し計算に応じて更新する第３の手段と、
前記サービス毎のイベント処理負荷量の上限値を計算し、データ記憶手段に記憶させる第４の手段と、
前記データ記憶手段からイベント処理負荷量の上限値を取得し、前記第１の手段によって計算されたイベント処理負荷量が当該上限値を超えるサービス処理を実行しないようにする第５の手段と、
を有することを特徴とするイベント駆動型サービス処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一サービスのＣＰＵ使用率を推定する技術に関する。
【背景技術】
【０００２】
サーバやパソコン等の情報処理装置は、実装済みのＯＳ機能等を用いて、所定のサービス処理に係るＣＰＵ使用率をプロセス毎やスレッド毎に表示することができる。非特許文献１によれば、各スレッドのＣＰＵ使用時間の相対的配分を指定し、一定期間あたりのＣＰＵ使用時間を制御している。また、同一のスレッドで複数のサービス処理が実行される場合には、各サービスのＣＰＵ使用率を表示することもできる。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】“3.2 cpu”、Red Hat Enterprise Linux 6 リソース管理ガイド、＜URL:http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/＞
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、サービス処理で取り出されたイベントの数に基づいてサービス毎のＣＰＵ使用率を推定しているため、複数のイベント処理を通じて１つのサービスを実現する場合に、各イベントの処理コスト（ＣＰＵ使用時間やダイナミック・ステップ数等）が異なると、ＣＰＵ使用率の推定精度が低下するという問題があった。
【０００５】
本発明は、上記事情を鑑みてなされたものであり、サービス毎のＣＰＵ使用率の推定精度を改善し、そのＣＰＵ使用率を制御することを目的とする。
【課題を解決するための手段】
【０００６】
請求項１記載のイベント駆動型サービス処理方法は、コンピュータにより、サービス処理時におけるイベントの処理コストをイベント処理負荷量としてサービス毎に繰り返し計算する第１のステップと、前記コンピュータが使用しているＣＰＵの全使用率を繰り返し計算する第２のステップと、単位時間あたりにおける前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いてサービス毎のＣＰＵ使用率を計算し、前記繰り返し計算に応じて更新する第３のステップと、前記サービス毎のイベント処理負荷量の上限値を計算し、データ記憶手段に記憶させる第４のステップと、前記データ記憶手段からイベント処理負荷量の上限値を取得し、前記第１のステップで計算されたイベント処理負荷量が当該上限値を超えるサービス処理を実行しないようにする第５のステップと、を有することを要旨とする。
【０００７】
請求項２記載のイベント駆動型サービス処理方法は、請求項１記載のイベント駆動型サービス処理方法において、前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いて前記サービス毎のＣＰＵ使用率を計算するためのＣＰＵ使用率計算関数を導出するステップと、前記ＣＰＵ使用率計算関数の逆関数であり前記サービス毎のイベント処理負荷量を計算するためのイベント処理負荷量計算関数を導出するステップと、を更に有し、前記第４のステップは、前記イベント処理負荷量計算関数を用いて前記サービス毎のイベント処理負荷量の上限値を計算することを要旨とする。
【０００８】
請求項３記載のイベント駆動型サービス処理方法は、請求項１又は２記載のイベント駆動型サービス処理方法において、前記イベント処理負荷量は、イベントの処理に要するサービス処理時間と、イベントの処理に要するＣＰＵ使用時間とのうち少なくとも１つ以上を用いて計算されることを要旨とする。
【０００９】
請求項４記載のイベント駆動型サービス処理装置は、コンピュータ内で動作するイベント駆動型サービス処理装置において、サービス処理時におけるイベントの処理コストをイベント処理負荷量としてサービス毎に繰り返し計算する第１の手段と、前記コンピュータが使用しているＣＰＵの全使用率を繰り返し計算する第２の手段と、単位時間あたりにおける前記サービス毎のイベント処理負荷量と前記ＣＰＵの全使用率とを用いてサービス毎のＣＰＵ使用率を計算し、前記繰り返し計算に応じて更新する第３の手段と、前記サービス毎のイベント処理負荷量の上限値を計算し、データ記憶手段に記憶させる第４の手段と、前記データ記憶手段からイベント処理負荷量の上限値を取得し、前記第１の手段によって計算されたイベント処理負荷量が当該上限値を超えるサービス処理を実行しないようにする第５の手段と、を有することを要旨とする。
【００１０】
以上より、本発明によれば、サービス毎の単位時間あたりのイベント処理負荷量とコンピュータが使用しているＣＰＵの全使用率とを用いてサービス毎のＣＰＵ使用率を計算するため、各サービス処理における各イベントの処理コストが異なる場合であってもサービス毎のＣＰＵ使用率を高い精度で推定できる。また、イベント処理負荷量が上限値を超えるサービス処理を実行しないようにするため、そのＣＰＵ使用率を制御できる。
【発明の効果】
【００１１】
本発明によれば、サービス毎のＣＰＵ使用率の推定精度を改善し、そのＣＰＵ使用率を制御できる。
【図面の簡単な説明】
【００１２】
【図１】イベント駆動型サービス処理装置の機能ブロック構成を示す図である。
【図２】イベント処理負荷量の計算処理フローを示す図である。
【図３】ＣＰＵ使用率の計算処理フローを示す図である。
【図４】履歴情報の例を示す図である。
【図５】ＣＰＵ使用率の推定処理フローを示す図である。
【図６】ＣＰＵ使用率計算関数情報の例を示す図である。
【図７】イベント処理負荷量上限値の計算処理フローを示す図である。
【図８】ＣＰＵ使用率上限情報の例を示す図である。
【図９】イベント処理負荷量上限情報の例を示す図である。
【図１０】ＣＰＵ使用率の制限処理フローを示す図である。
【発明を実施するための形態】
【００１３】
本発明は、サーバにおいて複数のサービス処理が１つのＣＰＵを共用する場合、そのＣＰＵを効率的に利用するために各サービス処理でのＣＰＵ使用率を推定するのに、各サービス処理での各イベントの処理コストが異なっても、ＣＰＵ使用率の推定精度を低下させないことを目的としている。
【００１４】
以下、本発明を実施する一実施の形態について図面を用いて説明する。但し、本発明は多くの異なる様態で実施することが可能であり、本実施の形態の記載内容に限定して解釈すべきではない。
【００１５】
〔イベント駆動型サービス処理装置１の構成について〕
図１は、本実施の形態に係るイベント駆動型サービス処理装置１の機能ブロック構成を示す図である。このイベント駆動型サービス処理装置１は、サーバ内で動作し、複数の処理機能部によって構成される。
【００１６】
具体的には、サービス毎の単位時間あたりのイベント処理負荷量を計算するイベント処理負荷量計算機能部１０と、システム全体のＣＰＵ使用率を計算するＣＰＵ使用率計算機能部２０と、サービス毎のＣＰＵ使用率を推定するＣＰＵ使用率推定機能部３０と、サービス毎のイベント処理負荷量の上限値を計算するイベント処理負荷量上限計算機能部４０とで構成される。以下、それら各処理機能部１０〜４０の構成について説明する。
【００１７】
イベント処理負荷量計算機能部１０は、イベントキュー１２にイベント情報を登録するイベント更新部１１と、イベント情報をサービス名等に関連付けて更新可能に記憶するイベントキュー１２と、イベント情報や参照用イベント処理負荷量を用いてサービス毎の単位時間あたりのイベント処理負荷量を計算する第１のイベント処理負荷量計算部１３と、呼処理等のサービス処理を実行等し、更に要求に応じてイベント処理負荷量を計算する第２のイベント処理負荷量計算部（以下、サービス処理部という場合もある）１４と、事前測定されたイベント毎のイベント処理負荷量を参照用イベント処理負荷量として記憶しておく参照用イベント処理負荷量記憶部１５とで構成されている。
【００１８】
ＣＰＵ使用率計算機能部２０は、イベント駆動型サービス処理装置１が実装されているサーバシステム内の全処理を実行するＣＰＵ２１と、単位時間あたりのシステム全体のＣＰＵ使用率を取得するＣＰＵ使用率取得部２２とで構成されている。
【００１９】
ＣＰＵ使用率推定機能部３０は、同一の時間帯で計算されたサービス毎の単位時間あたりのイベント処理負荷量と単位時間あたりのシステム全体のＣＰＵ使用率とを関連付けて追記可能に履歴情報として記憶する履歴情報記憶部３１と、ＣＰＵ使用率を推定計算する際に用いるＣＰＵ使用率計算関数をサービス毎に導出するＣＰＵ使用率計算関数導出部３２と、ＣＰＵ使用率計算関数をサービス名等に関連付けて記憶しておくＣＰＵ使用率計算関数記憶部３３と、履歴情報及びＣＰＵ使用率計算関数を用いてサービス毎のＣＰＵ使用率を計算するＣＰＵ使用率計算部３４とで構成されている。
【００２０】
イベント処理負荷量上限計算機能部４０は、入力装置から入力されたサービス毎のＣＰＵ使用率上限値を記憶しておくＣＰＵ使用率上限記憶部４１と、ＣＰＵ使用率上限値とＣＰＵ使用率計算関数から導出したイベント処理負荷量計算関数とを用いてサービス毎のイベント処理負荷量の上限値を計算するイベント処理負荷量上限計算部４２と、イベント処理負荷量の上限値をサービス名等に関連付けて更新可能に記憶しておくイベント処理負荷量上限記憶部４３とで構成されている。
【００２１】
以上説明したイベント駆動型サービス処理装置１は、記憶機能や演算機能を備えたコンピュータによって実現できる。また、各処理機能部１０〜４０は、上述した機能を実行するプログラムによって実現できる。
【００２２】
尚、イベント処理負荷量とは、サービス処理の実行時に生じたイベント処理に係る処理コストである。本実施の形態では、そのようなイベント処理負荷量として、（Ａ）イベントの取り出し数を使用する場合、（Ｂ）事前測定したイベント毎の各機能部（イベント処理時に動作した全機能部（ＯＳ等を含む）。以下同じ。）での処理時間の合計を使用する場合、（Ｃ）事前測定したイベント毎の各機能部での処理時間の合計を使用し、イベント処理負荷量を計算する際の測定条件が過去に行った事前測定の条件と異なる場合に補正する場合、（Ｄ）サービス処理部１４でのサービス処理開始から処理終了までの時間（サービス処理時に動作した全機能部での処理時間を含む。以下同じ。）を使用する場合（逐次計測）、（Ｄ’）事前測定したサービス処理部１４でのサービス処理開始から処理終了までの時間を使用する場合、（Ｅ）ＣＰＵ使用時間を使用する場合（逐次計測）、（Ｅ’）事前測定したＣＰＵ使用時間を使用する場合、（Ｆ）ＣＰＵ使用時間をサービス処理部１４でのサービス処理開始から処理終了までの時間で除したものを使用する場合（逐次計測）、（Ｆ’）事前測定したＣＰＵ使用時間を事前測定したサービス処理部１４でのサービス処理開始から処理終了までの時間で除したものを使用する場合、について説明する。
【００２３】
以上のイベント処理負荷量は一例である。イベント処理負荷量としての単位が異なる（Ａ）と（Ｂ）〜（Ｆ’）のうちいずれかとを組み合わせても構わない。
【００２４】
〔イベント駆動型サービス処理装置１の動作について〕
次に、イベント駆動型サービス処理装置１の動作について説明する。最初に、図２を参照しながら、イベント処理負荷量の計算処理動作について説明する。
【００２５】
まず、イベント更新部１１が、他のサーバから信号を受信したり、他の機能部からの要求を受信したりすると、当該受信信号や当該受信要求をイベントという形式に変換し、当該変換によるイベント情報をイベントキュー１２に登録（追加）する（ステップＳ１０１）。
【００２６】
次に、第１のイベント処理負荷量計算部１３が、使用するイベント処理負荷量の種類が、前述したＡ〜Ｆ’のうち、Ａ，Ｂ，Ｃ，Ｄ’，Ｅ’，Ｆ’であるか、Ｄ，Ｅ，Ｆであるかを判定する（ステップＳ１０２）。
【００２７】
次に、ステップＳ１０２の判定結果がＡ，Ｂ，Ｃ，Ｄ’，Ｅ’，Ｆ’の場合、第１のイベント処理負荷量計算部１３は、Ａであるか、Ｂ，Ｃ，Ｄ’，Ｅ’，Ｆ’であるかを更に判定する（ステップＳ１０３）。
【００２８】
次に、ステップＳ１０３の判定結果がＡの場合、第１のイベント処理負荷量計算部１３は、イベント情報をイベントキュー１２から１つ読み出して、１つ読み出す毎にイベント処理負荷量を＋１することにより、当該イベントのイベント処理負荷量を計算する（ステップＳ１０４）。
【００２９】
一方、ステップＳ１０３の判定結果がＢ，Ｃ，Ｄ’，Ｅ’，Ｆ’の場合、第１のイベント処理負荷量計算部１３は、イベント情報をイベントキュー１２から１つ読み出して、該イベントに対応する参照用イベント処理負荷量（イベントの処理時間やＣＰＵの使用時間等）を参照用イベント処理負荷量記憶部１５から取得する（ステップＳ１０５）。
【００３０】
その後、第１のイベント処理負荷量計算部１３は、ステップＳ１０４又はステップＳ１０５で計算又は取得されたイベント処理負荷量を履歴情報記憶部３１の履歴情報に追加する（ステップＳ１０６）。具体的には、履歴情報において直近の単位時間の当該イベントのイベント処理負荷量の値に、ステップＳ１０４又はステップＳ１０５で計算又は取得したイベント処理負荷量を加算する。
【００３１】
一方、ステップＳ１０２の判定結果がＤ，Ｅ，Ｆの場合、第２のイベント処理負荷量計算部１４は、イベント処理負荷量の種類が、Ｄであるか、Ｅであるか、Ｆであるかを判定する（ステップＳ１０７）。
【００３２】
次に、ステップＳ１０７の判定結果がＤの場合、第２のイベント処理負荷量計算部１４は、受け取ったイベント情報に係るサービス処理を実行すると共に、その処理開始時刻及び処理終了時刻を記録して、処理終了時刻と処理開始時刻との差分を計算することにより、該イベントのサービス処理時間を算出する（ステップＳ１０８）。
【００３３】
一方、ステップＳ１０７の判定結果がＥの場合、第２のイベント処理負荷量計算部１４は、受け取ったイベント情報に係るサービス処理を実行すると共に、そのサービス処理でのＣＰＵ使用時間を計測することにより、該イベントのＣＰＵ使用時間を算出する（ステップＳ１０９）。
【００３４】
一方、ステップＳ１０７の判定結果がＦの場合、第２のイベント処理負荷量計算部１４は、ステップＳ１０９と同様に該イベントのサービス処理時間を算出すると共に、ステップＳ１１０と同様に該イベントのＣＰＵ使用時間を算出して、ＣＰＵ使用時間をサービス処理時間で除算する（ステップＳ１１０）。
【００３５】
その後、第２のイベント処理負荷量計算部１４は、ステップＳ１０８〜ステップＳ１１０のうちいずれかで計算された該イベントの計算値をイベント処理負荷量として履歴情報に追加する（ステップＳ１１１）。
【００３６】
尚、イベント処理負荷量の種類がＣの場合、第２のイベント処理負荷量計算部１４は、現在の測定条件が事前測定条件と異なる場合には、現在の測定条件における受け取ったイベント情報に対応する参照用イベント処理負荷量（参照用サービス処理時間）を参照用イベント処理負荷量記憶部１５から取得し、該参照用サービス処理時間と事前測定における参照用サービス処理時間との差分を測定条件の相違による誤差として当該サービス処理時間に加算する。そして、加算後のサービス処理時間を補正後のイベント処理負荷量として履歴情報に追加する。尚、事前測定条件とは、例えば、信号を受信して正常に信号を返信するような場合である。また、現在の測定条件とは、例えば、信号を受信してエラーを意味する信号を返信するような場合である。
【００３７】
尚、イベント処理負荷量の種類を識別していく方法に代えて、イベント処理負荷量の種類としてどれを使用するかをコンフィグ等で選択するようにしても構わない。例えば、使用したいイベント処理負荷量の識別子を予めコンフィグファイルに設定しておき、当該コンフィグファイルに設定された識別子に応じたイベント処理負荷量を計算する。
【００３８】
続いて、図３を参照しながら、ＣＰＵ使用率の計算処理動作について説明する。
【００３９】
まず、ＣＰＵ２１が、イベント駆動型サービス処理装置１を実装しているシステム内の全ての処理を実行し、そのシステムに実装されたＯＳのタスク管理機能等によって、そのシステムで動作する各処理やシステム全体のＣＰＵ使用率が計算される（ステップＳ２０１）。
【００４０】
その後、ＣＰＵ使用率取得部２２が、所定の単位時間毎にＯＳからシステム全体のＣＰＵ使用率を取得して、履歴情報記憶部３１の履歴情報に追加する（ステップＳ２０２）。
【００４１】
以上説明した２つの計算処理動作は、それぞれ、サービス処理毎及び所定の単位時間毎に同じタイミングで繰り返し実行される。これにより、図４に示すような履歴情報が履歴情報記憶部３１に記憶される。
【００４２】
例えば、イベント処理負荷量の種類がＡの場合、ある単位時間Ｔ＿１〜Ｔ＿２において、上記ステップＳ１０４により、サービスＡについては、イベントａのイベント取り出し数がＷ＿Ａａ＿１（個）、イベントｂのイベント取り出し数がＷ＿Ａｂ＿１（個）、イベントｃのイベント取り出し数がＷ＿Ａｃ＿１（個）、それらイベントａ〜イベントｃの合計がＷ＿Ａ＿１（個）と記録される。また、同じ単位時間Ｔ＿１〜Ｔ＿２において、上記ステップＳ２０２により、ＣＰＵ全使用率がＲ＿１（％）と記録される。
【００４３】
続いて、図５を参照しながら、ＣＰＵ使用率の推定処理動作について説明する。
【００４４】
まず、ＣＰＵ使用率計算関数導出部３２が、所定の単位時間及び所定のサービス処理に対応するイベント処理負荷量を履歴情報から取得する（ステップＳ３０１）。
【００４５】
次に、ＣＰＵ使用率計算関数導出部３２は、上記所定の単位時間に対応するＣＰＵ全使用率を履歴情報から取得する（ステップＳ３０２）。
【００４６】
次に、ステップＳ３０１で取得したイベント処理負荷量とステップＳ３０２で取得したシステム全体のＣＰＵ使用率とを用いて、上記所定のサービス処理に係るＣＰＵ使用率計算関数を導出する（ステップＳ３０３）。
【００４７】
その後、ＣＰＵ使用率計算関数導出部３２は、上記所定の単位時間における全てのサービス処理についてステップＳ３０１〜ステップＳ３０３を繰り返すことによりサービス毎のＣＰＵ使用率計算関数を導出し、図６に示すようにサービス名に関連付けてＣＰＵ使用率計算関数記憶部３３に記憶する（ステップＳ３０４）。
【００４８】
尚、サービス毎のＣＰＵ使用率計算関数は任意に導出可能である。例えば、システム全体のＣＰＵ使用率を全てのサービス処理のイベント処理負荷量の合計で除算し、その除算値に各サービス処理のイベント処理負荷量をそれぞれ乗算する式をＣＰＵ使用率計算関数として導出してもよい。また、サービスの種類やイベントの種類に応じて重み付けをしても構わない。
【００４９】
続いて、ＣＰＵ使用率計算部３４は、所定のサービス処理に対応するイベント処理負荷量とシステム全体のＣＰＵ使用率とを履歴情報から取得すると共に、そのサービス処理に対応するＣＰＵ使用率計算関数をＣＰＵ使用率計算関数記憶部３３から取得する（ステップＳ３０５）。
【００５０】
その後、ＣＰＵ使用率計算部３４は、ステップＳ３０５で取得したイベント処理負荷量及びシステム全体のＣＰＵ使用率をＣＰＵ使用率計算関数に適用して計算することにより、サービス毎のＣＰＵ使用率を推定する（ステップＳ３０６）。
【００５１】
以上説明したＣＰＵ使用率の推定計算は、所定の単位時間毎に再度計算（更新）される。また、イベント処理負荷量とＣＰＵ使用率との関係（ＣＰＵ使用率計算関数）は実測に基づいて定期的に算出し直してもよく、その度に再度計算（更新）してもよい。
【００５２】
続いて、図７を参照しながら、イベント処理負荷量上限値の計算処理動作について説明する。
【００５３】
まず、ＣＰＵ使用率上限記憶部４１が、入力装置を用いて入力された各サービス処理に対するＣＰＵ使用率上限値を記憶する（ステップＳ４０１）。
【００５４】
次に、ＣＰＵ使用率上限記憶部４１は、全てのサービス処理についてステップＳ４０１の処理を繰り返すことにより、図８に示すようなサービス毎のＣＰＵ使用率上限値を記憶する（ステップＳ４０２）。
【００５５】
次に、イベント処理負荷量上限計算部４２は、ＣＰＵ使用率計算関数記憶部３３に記憶されているＣＰＵ使用率計算関数と、ＣＰＵ使用率上限記憶部４１に記憶されているＣＰＵ使用率上限値との少なくともいずれか一方が更新（記憶、追加記憶、変更等）されたか否かを判定する（ステップＳ４０３）。
【００５６】
次に、ステップＳ４０３の判定結果が「更新された」の場合、イベント処理負荷量上限計算部４２は、ＣＰＵ使用率計算関数記憶部３３から取得したサービス毎のＣＰＵ使用率計算関数の逆関数であるサービス毎のイベント処理負荷量計算関数を導出する（ステップＳ４０４）。
【００５７】
例えば、所定のサービス処理に係るイベント処理負荷量をＷ、ＣＰＵ使用率をＲとする場合、ＣＰＵ使用率計算関数導出部３２によって導出されたＣＰＵ使用率計算関数ｆをＲ＝ｆ（Ｗ）と定義できる。一方で、同じサービス処理に係るイベント処理負荷計算関数ｇをＷ＝ｇ（Ｒ）と定義できる。ここで、ｆはｇの逆関数であり、例えば、Ｒ＝ｋ×Ｗ（ｋ：比例関数）の関係が成り立つ場合、Ｗ＝１／ｋ×Ｒとなる。このとき、ＣＰＵ使用率計算関数ｆ（ｘ）＝ｋ×ｘ、イベント処理負荷量計算関数ｇ（ｘ）＝１／ｋ×ｘと導出される。
【００５８】
その後、イベント処理負荷量上限計算部４２は、ＣＰＵ使用率上限記憶部４１からＣＰＵ使用率上限値を取得し、ステップＳ４０４で導出されたイベント処理負荷量計算関数に適用してイベント処理負荷量の上限値を計算する（ステップＳ４０５）。
【００５９】
以上説明したステップＳ４０１〜ステップＳ４０５を通じて、図９に示すようなサービス毎のイベント処理負荷量の上限値がイベント処理負荷量上限記憶部４３に記憶される。
【００６０】
最後に、図１０を参照しながら、サービス毎のイベント処理負荷量の上限値に基づくＣＰＵ使用率の制限処理動作について説明する。
【００６１】
まず、第１のイベント処理負荷量計算部１３が、所定のサービス処理に対する単位時間あたりのイベント処理負荷量を履歴情報記憶部３１から読み出すと共に、同じサービス処理に対するイベント処理負荷量の上限値をイベント処理負荷量上限記憶部４３から読み出して、当該単位時間あたりのイベント処理負荷量が当該イベント処理負荷量の上限値を超えているか否かを判定する（ステップＳ５０１）。
【００６２】
次に、ステップＳ５０１の判定結果が「越えている」の場合にのみ、第１のイベント処理負荷量計算部１３は、サービス処理部１４で当該サービス処理が実行されないように、当該サービス処理に係るイベント情報をイベントキュー１２から取り出さないようにする（ステップＳ５０２）。これにより、サービス処理部１４において、当該サービス処理が実行されなくなる。
【００６３】
その後、第１のイベント処理負荷量計算部１３及びサービス処理部１４は、全てのサービス処理についてステップＳ５０１〜ステップＳ５０２の処理を繰り返すことにより、イベント処理負荷量の上限値を超えない範囲でのサービス処理を実現する（ステップＳ５０３）。
【００６４】
以上より、本実施の形態によれば、サービス毎の単位時間あたりのイベント処理負荷量とシステム全体のＣＰＵ使用率とを用いてサービス毎のＣＰＵ使用率を計算するので、各サービス処理における各イベントの処理コストが異なる場合であってもサービス毎のＣＰＵ使用率を高い精度で推定できる。
【００６５】
また、本実施の形態によれば、イベント処理負荷量が上限値を超えるサービス処理を実行しないように当該サービス処理に係るイベント情報を取り出さないので、サービス毎のＣＰＵ使用率を制御できる。これにより、１つのサーバで複数のサービスを適切に処理することが可能となる。
【符号の説明】
【００６６】
１…イベント駆動型サービス処理装置
１０…イベント処理負荷量計算機能部
１１…イベント更新部
１２…イベントキュー
１３…第１のイベント処理負荷量計算部
１４…第２のイベント処理負荷量計算部／サービス処理部
１５…参照用イベント処理負荷量記憶部
２０…ＣＰＵ使用率計算機能部
２１…ＣＰＵ
２２…ＣＰＵ使用率取得部
３０…ＣＰＵ使用率推定機能部
３１…履歴情報記憶部
３２…ＣＰＵ使用率計算関数導出部
３３…ＣＰＵ使用率計算関数記憶部
３４…ＣＰＵ使用率計算部
４０…イベント処理負荷量上限計算機能部
４１…ＣＰＵ使用率上限記憶部
４２…イベント処理負荷量上限計算部
４３…イベント処理負荷量上限記憶部
Ｓ１０１〜Ｓ１１１、Ｓ２０１〜Ｓ２０２、Ｓ３０１〜Ｓ３０６、Ｓ４０１〜Ｓ４０５、Ｓ５０１〜Ｓ５０３…ステップ
【図１】
2014137716.tif 000003
【図２】
2014137716.tif 000004
【図３】
2014137716.tif 000005
【図４】
2014137716.tif 000006
【図５】
2014137716.tif 000007
【図６】
2014137716.tif 000008
【図７】
2014137716.tif 000009
【図８】
2014137716.tif 000010
【図９】
2014137716.tif 000011
【図１０】
2014137716.tif 000012