(57)【特許請求の範囲】
【請求項１】
ＣＰＵを用いて処理を実行する処理実行部と、
サービス別にイベント情報が記憶されるイベントキューと、
前記イベントキューからイベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼する処理依頼部と、
前記処理依頼部により行われた前記サービス別の単位時間あたりのイベント情報の取り出し数であるサービス別イベント情報取り出し数と前記ＣＰＵの当該単位時間での全使用率であるＣＰＵ全使用率とを含む履歴情報を単位時間毎に記憶する履歴情報記憶部と、
前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率であるサービス別ＣＰＵ使用率を当該サービスのサービス別イベント情報取り出し数から求めるためのサービス別ＣＰＵ使用率計算関数が記憶されるサービス別ＣＰＵ使用率計算関数記憶部と、
前記履歴情報記憶部から２以上の履歴情報を読み出し、当該履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数を計算し、前記サービス別ＣＰＵ使用率計算関数記憶部に記憶させるサービス別ＣＰＵ使用率計算関数計算部と、
前記サービス別に、前記サービス別イベント情報取り出し数の上限であるサービス別イベント情報取り出し数上限を記憶するサービス別イベント情報取り出し数上限記憶部とを備え、
前記処理依頼部は、
前記イベントキューからイベント情報を取り出すにあたり、前記履歴情報記憶部の該当の履歴情報から当該イベント情報のサービスのサービス別イベント情報取り出し数を取得するとともに、前記サービス別イベント情報取り出し数上限記憶部から当該サービスのサービス別イベント情報取り出し数上限を取得し、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限以下なら、当該イベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼する
ことを特徴とするイベント駆動型処理実行装置。
【請求項２】
前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率の上限であるサービス別ＣＰＵ使用率上限を記憶するサービス別ＣＰＵ使用率上限記憶部と、
前記サービス別に、前記サービス別ＣＰＵ使用率計算関数記憶部からサービス別ＣＰＵ使用率計算関数、前記サービス別ＣＰＵ使用率上限記憶部からサービス別ＣＰＵ使用率上限をそれぞれ取得し、当該サービス別ＣＰＵ使用率計算関数および当該サービス別ＣＰＵ使用率上限を用いて、当該サービスのサービス別イベント情報取り出し数上限を計算し、前記サービス別イベント情報取り出し数上限記憶部に記憶させるサービス別イベント情報取り出し数上限計算部と
を備えることを特徴とする請求項１記載のイベント駆動型処理実行装置。
【請求項３】
イベント駆動型処理実行装置の動作方法であって、
前記イベント駆動型処理実行装置は、
ＣＰＵを用いて処理を実行する処理実行部と、
サービス別にイベント情報が記憶されるイベントキューと、
前記イベントキューからイベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼する処理依頼部と、
前記処理依頼部により行われた前記サービス別の単位時間あたりのイベント情報の取り出し数であるサービス別イベント情報取り出し数と前記ＣＰＵの当該単位時間での全使用率であるＣＰＵ全使用率とを含む履歴情報を単位時間毎に記憶する履歴情報記憶部と、
前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率であるサービス別ＣＰＵ使用率を当該サービスのサービス別イベント情報取り出し数から求めるためのサービス別ＣＰＵ使用率計算関数が記憶されるサービス別ＣＰＵ使用率計算関数記憶部と、
前記サービス別に、前記サービス別イベント情報取り出し数の上限であるサービス別イベント情報取り出し数上限を記憶するサービス別イベント情報取り出し数上限記憶部とを備え、
前記動作方法は、
前記処理依頼部が、
前記イベントキューからイベント情報を取り出すにあたり、前記履歴情報記憶部の該当の履歴情報から当該イベント情報のサービスのサービス別イベント情報取り出し数を取得するとともに、前記サービス別イベント情報取り出し数上限記憶部から当該サービスのサービス別イベント情報取り出し数上限を取得し、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限以下なら、当該イベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼し、
前記イベント駆動型処理実行装置のサービス別ＣＰＵ使用率計算関数計算部が、
前記履歴情報記憶部から２以上の履歴情報を読み出し、当該履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数を計算し、前記サービス別ＣＰＵ使用率計算関数記憶部に記憶させる
ことを特徴とするイベント駆動型処理実行装置の動作方法。
【請求項４】
前記イベント駆動型処理実行装置は、
前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率の上限であるサービス別ＣＰＵ使用率上限を記憶するサービス別ＣＰＵ使用率上限記憶部を備え、
前記動作方法は、
前記イベント駆動型処理実行装置のサービス別イベント情報取り出し数上限計算部が、
前記サービス別に、前記サービス別ＣＰＵ使用率計算関数記憶部からサービス別ＣＰＵ使用率計算関数、前記サービス別ＣＰＵ使用率上限記憶部からサービス別ＣＰＵ使用率上限をそれぞれ取得し、当該サービス別ＣＰＵ使用率計算関数および当該サービス別ＣＰＵ使用率上限を用いて、当該サービスのサービス別イベント情報取り出し数上限を計算し、前記サービス別イベント情報取り出し数上限記憶部に記憶させる
ことを特徴とする請求項３記載のイベント駆動型処理実行装置の動作方法。
【請求項５】
請求項１または２記載のイベント駆動型処理実行装置としてコンピュータを機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、単一のサービスのみによるＣＰＵの使用率を求めることができるイベント駆動型処理実行装置およびその動作方法に関するものである。
【背景技術】
【０００２】
従来、複数のネットワークサービスを提供するためには、サービス毎にサーバを分け、サーバ全体のＣＰＵ使用率を基準にサーバの輻輳を判定し、トラヒックを規制してきた。一台のサーバで複数のサービスがＣＰＵを共用する場合には、特定のサービスがＣＰＵを占用しないよう、各サービスによるＣＰＵ使用量を制御する必要がある。
【０００３】
サーバにおけるＣＰＵ使用率制御法として、次のようなものがある。
【０００４】
１．所望のＣＰＵ使用率をスレッド毎に指定し、ＣＰＵ使用率が指定値以上となった際にスレッドでの処理を一定期間中止する（非特許文献１を参照）。
【０００５】
２．スレッドのＣＰＵ時間の相対的配分を指定し、一定期間あたりのＣＰＵ時間を制御する（非特許文献２を参照）。
【０００６】
３．複数のＣＰＵが同時に使用可能なシステムにおいて、スレッドを実行するＣＰＵを指定することで、ＣＰＵ使用率の上限を設定する（非特許文献３を参照）。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】CPU Usage Limiter for Linux、［ｏｎｌｉｎｅ］、［平成２４年１月２７日検索］、インターネット＜ＵＲＬ：http://cpulimit.sourceforge.net/＞
【非特許文献２】Red Hat Enterprise Linux 6  リソース管理ガイド、「３．２, cpu」、 ［ｏｎｌｉｎｅ］、［平成２４年１月２７日検索］、インターネット＜ＵＲＬ：http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/6/html/Resource_Management_Guide/＞
【非特許文献３】taskset(1) - Linux man page、［ｏｎｌｉｎｅ］、［平成２４年１月２７日検索］、インターネット＜ＵＲＬ：http://linux.die.net/man/1/taskset＞
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、上記の技術では、オペレーティングシステム（以下、ＯＳ）やミドルウェアなど複数のネットワークサービスで共用する部分について、各サービスによるＣＰＵ使用率を測定する手段がなく、各サービスのＣＰＵ使用率を制御できないため、１台の呼処理サーバで複数のネットワークサービスを制御できないことが問題であった。ＣＰＵを効率的に利用するために、同一のスレッドで複数のサービスを処理する場合には、ＣＰＵ使用率をサービス毎に測定する手段がない。仮に各サービスのプロセスを分離し、別々にＣＰＵを割当てたとしても、同一のＯＳ・ミドルウェア上でサービスを実行する場合には、ＯＳ・ミドルウェア部分のＣＰＵ使用率はサービス毎に分計できない。
【０００９】
また、複数のサービスの処理を行う場合、呼処理サーバに限らず、同様な問題が生じる。例えば、イベント駆動型のサーバ、つまり、イベント駆動型処理実行装置においては、サービス別にＣＰＵの使用率を求めることができないと、例えば、あるサービスについて、１つのイベントに対応するＣＰＵ使用率が増えた場合、他のサービスの処理に使えるＣＰＵ使用率は減少するので、他のサービスの処理を実行できない可能性がある。
【００１０】
本発明は、上記の課題に鑑みてなされたものであり、その目的とするところは、単一のサービスのみによるＣＰＵの使用率を求めることができるイベント駆動型処理実行装置およびその動作方法を提供することにある。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、第１の本発明は、ＣＰＵを用いて処理を実行する処理実行部と、サービス別にイベント情報が記憶されるイベントキューと、前記イベントキューからイベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼する処理依頼部と、前記処理依頼部により行われた前記サービス別の単位時間あたりのイベント情報の取り出し数であるサービス別イベント情報取り出し数と前記ＣＰＵの当該単位時間での全使用率であるＣＰＵ全使用率とを含む履歴情報を単位時間毎に記憶する履歴情報記憶部と、前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率であるサービス別ＣＰＵ使用率を当該サービスのサービス別イベント情報取り出し数から求めるためのサービス別ＣＰＵ使用率計算関数が記憶されるサービス別ＣＰＵ使用率計算関数記憶部と、前記履歴情報記憶部から２以上の履歴情報を読み出し、当該履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数を計算し、前記サービス別ＣＰＵ使用率計算関数記憶部に記憶させるサービス別ＣＰＵ使用率計算関数計算部と、前記サービス別に、前記サービス別イベント情報取り出し数の上限であるサービス別イベント情報取り出し数上限を記憶するサービス別イベント情報取り出し数上限記憶部とを備え、前記処理依頼部は、前記イベントキューからイベント情報を取り出すにあたり、前記履歴情報記憶部の該当の履歴情報から当該イベント情報のサービスのサービス別イベント情報取り出し数を取得するとともに、前記サービス別イベント情報取り出し数上限記憶部から当該サービスのサービス別イベント情報取り出し数上限を取得し、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限以下なら、当該イベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼することを特徴とするイベント駆動型処理実行装置をもって解決手段とする。
【００１３】
例えば、イベント駆動型処理実行装置は、前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率の上限であるサービス別ＣＰＵ使用率上限を記憶するサービス別ＣＰＵ使用率上限記憶部と、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数記憶部からサービス別ＣＰＵ使用率計算関数、前記サービス別ＣＰＵ使用率上限記憶部からサービス別ＣＰＵ使用率上限をそれぞれ取得し、当該サービス別ＣＰＵ使用率計算関数および当該サービス別ＣＰＵ使用率上限を用いて、当該サービスのサービス別イベント情報取り出し数上限を計算し、前記サービス別イベント情報取り出し数上限記憶部に記憶させるサービス別イベント情報取り出し数上限計算部とを備える。
【００１４】
第２の本発明は、イベント駆動型処理実行装置の動作方法であって、前記イベント駆動型処理実行装置は、ＣＰＵを用いて処理を実行する処理実行部と、サービス別にイベント情報が記憶されるイベントキューと、前記イベントキューからイベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼する処理依頼部と、前記処理依頼部により行われた前記サービス別の単位時間あたりのイベント情報の取り出し数であるサービス別イベント情報取り出し数と前記ＣＰＵの当該単位時間での全使用率であるＣＰＵ全使用率とを含む履歴情報を単位時間毎に記憶する履歴情報記憶部と、前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率であるサービス別ＣＰＵ使用率を当該サービスのサービス別イベント情報取り出し数から求めるためのサービス別ＣＰＵ使用率計算関数が記憶されるサービス別ＣＰＵ使用率計算関数記憶部と、前記サービス別に、前記サービス別イベント情報取り出し数の上限であるサービス別イベント情報取り出し数上限を記憶するサービス別イベント情報取り出し数上限記憶部とを備え、前記動作方法は、前記処理依頼部が、前記イベントキューからイベント情報を取り出すにあたり、前記履歴情報記憶部の該当の履歴情報から当該イベント情報のサービスのサービス別イベント情報取り出し数を取得するとともに、前記サービス別イベント情報取り出し数上限記憶部から当該サービスのサービス別イベント情報取り出し数上限を取得し、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限以下なら、当該イベント情報を取り出し、当該イベント情報に対応する処理を前記処理実行部に依頼し、前記イベント駆動型処理実行装置のサービス別ＣＰＵ使用率計算関数計算部が、前記履歴情報記憶部から２以上の履歴情報を読み出し、当該履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数を計算し、前記サービス別ＣＰＵ使用率計算関数記憶部に記憶させることを特徴とするイベント駆動型処理実行装置の動作方法をもって解決手段とする。
【００１６】
例えば、前記イベント駆動型処理実行装置は、前記サービス別に、前記ＣＰＵの当該サービスのみによる使用率の上限であるサービス別ＣＰＵ使用率上限を記憶するサービス別ＣＰＵ使用率上限記憶部を備え、前記動作方法は、前記イベント駆動型処理実行装置のサービス別イベント情報取り出し数上限計算部が、前記サービス別に、前記サービス別ＣＰＵ使用率計算関数記憶部からサービス別ＣＰＵ使用率計算関数、前記サービス別ＣＰＵ使用率上限記憶部からサービス別ＣＰＵ使用率上限をそれぞれ取得し、当該サービス別ＣＰＵ使用率計算関数および当該サービス別ＣＰＵ使用率上限を用いて、当該サービスのサービス別イベント情報取り出し数上限を計算し、前記サービス別イベント情報取り出し数上限記憶部に記憶させる。
【発明の効果】
【００１７】
本発明によれば、単一のサービスのみによるＣＰＵの使用率を求めることができる。
【図面の簡単な説明】
【００１８】
【図１】本実施の形態に係るイベント駆動型処理実行装置の構成を示す機能ブロック図である。
【図２】履歴情報記憶部１０６の構成とデータの一例を示す図である。
【図３】サービス別ＣＰＵ使用率計算関数記憶部１０８の構成とデータの一例を示す図である。
【図４】サービス別イベント情報取り出し数上限記憶部１１０の構成とデータの一例を示す図である。
【図５】サービス別ＣＰＵ使用率上限記憶部１１１に構成される記憶領域の構成とデータの一例を示す図である。
【図６】サービス別ＣＰＵ使用率計算関数計算部１０９の初期動作を示すフローチャートである。
【図７】サービス別ＣＰＵ使用率上限記憶部１１１の動作を示すフローチャートである。
【図８】サービス別イベント情報取り出し数上限計算部１１２の動作を示すフローチャートである。
【図９】処理依頼部１０５の動作を示すフローチャートである。
【図１０】サービス別ＣＰＵ使用率計算関数計算部１０９の初期動作後の動作を示すフローチャートである。
【発明を実施するための形態】
【００１９】
以下、本発明の実施の形態について図面を参照して説明する。
【００２０】
図１は、本実施の形態に係るイベント駆動型処理実行装置の構成を示す機能ブロック図である。
【００２１】
イベント駆動型処理実行装置１は、入力装置２に接続され、ＣＰＵ（中央演算装置）１０１と、ＣＰＵ１０１を用いて処理を実行する処理実行部１０２と、サービス別にイベント情報が記憶されるイベントキュー１０３と、イベントキュー１０３にイベント情報を記憶させるイベントキュー更新部１０４と、イベントキュー１０３からイベント情報を取り出し、当該イベント情報に対応する処理を処理実行部１０２に依頼する処理依頼部１０５と、処理依頼部１０５により行われたサービス別の単位時間あたりのイベント情報の取り出し数であるサービス別イベント情報取り出し数とＣＰＵ１０１の当該単位時間での全使用率であるＣＰＵ全使用率とを含む履歴情報を単位時間毎に記憶する履歴情報記憶部１０６と、ＣＰＵ全使用率を取得するＣＰＵ全使用率取得部１０７と、サービス別に、ＣＰＵ１０１の当該サービスのみによる使用率であるサービス別ＣＰＵ使用率を当該サービスのサービス別イベント情報取り出し数から求めるためのサービス別ＣＰＵ使用率計算関数が記憶されるサービス別ＣＰＵ使用率計算関数記憶部１０８と、履歴情報記憶部１０６から２以上の履歴情報を読み出し、当該履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、サービス別に、サービス別ＣＰＵ使用率計算関数を計算し、サービス別ＣＰＵ使用率計算関数記憶部１０８に記憶させるサービス別ＣＰＵ使用率計算関数計算部１０９と、サービス別に、サービス別イベント情報取り出し数の上限であるサービス別イベント情報取り出し数上限を記憶するサービス別イベント情報取り出し数上限記憶部１１０と、サービス別に、ＣＰＵ１０１の当該サービスのみによる使用率の上限であるサービス別ＣＰＵ使用率上限を記憶するサービス別ＣＰＵ使用率上限記憶部１１１と、サービス別に、サービス別ＣＰＵ使用率計算関数記憶部１０８からサービス別ＣＰＵ使用率計算関数、サービス別ＣＰＵ使用率上限記憶部１１１からサービス別ＣＰＵ使用率上限をそれぞれ取得し、サービス別ＣＰＵ使用率計算関数およびサービス別ＣＰＵ使用率上限を用いて、当該サービスのサービス別イベント情報取り出し数上限を計算し、サービス別イベント情報取り出し数上限記憶部１１０に記憶させるサービス別イベント情報取り出し数上限計算部１１２とを備える。イベント駆動型処理実行装置１は、例えば、呼処理に使用される呼処理サーバである。
【００２２】
図２は、履歴情報記憶部１０６の構成とデータの一例を示す図である。
【００２３】
履歴情報記憶部１０６には、例えば、１秒の単位時間の時間帯が新たに始まるごとに履歴情報が生成される。履歴情報には、当該時間帯でのサービス別イベント情報取り出し数が記録される。履歴情報には、当該時間帯での例えば、平均のＣＰＵ全使用率が記録される。
【００２４】
例えば、時間帯Ｔ１の履歴情報には、サービスＡのサービス別イベント情報取り出し数「２８０」と、サービスＢのサービス別イベント情報取り出し数「５６０」と、平均のＣＰＵ全使用率「８０％」が記録されている。
【００２５】
例えば、時間帯Ｔ２の履歴情報には、サービスＡのサービス別イベント情報取り出し数「３１０」と、サービスＢのサービス別イベント情報取り出し数「４８０」と、平均のＣＰＵ全使用率「８３％」が記録されている。
【００２６】
図３は、サービス別ＣＰＵ使用率計算関数記憶部１０８の構成とデータの一例を示す図である。
【００２７】
サービス別ＣＰＵ使用率計算関数記憶部１０８には、サービス別に、サービス別ＣＰＵ使用率計算関数が記憶される。例えば、サービス別ＣＰＵ使用率がサービス別イベント情報取り出し数に比例する場合、サービス別ＣＰＵ使用率計算関数は実際には比例係数である。
【００２８】
サービス別ＣＰＵ使用率計算関数記憶部１０８には、例えば、サービスＡのサービス別ＣＰＵ使用率計算関数（比例係数）ｆ＿Ａと、サービスＢのサービス別ＣＰＵ使用率計算関数（比例係数）ｆ＿Ｂが記憶される。
【００２９】
図４は、サービス別イベント情報取り出し数上限記憶部１１０の構成とデータの一例を示す図である。
【００３０】
サービス別イベント情報取り出し数上限記憶部１１０には、サービス別にサービス別イベント情報取り出し数上限が記憶される。
【００３１】
サービス別イベント情報取り出し数上限記憶部１１０には、例えば、サービスＡのサービス別イベント情報取り出し数上限Ｅ＿Ａｍａｘと、サービスＢのサービス別イベント情報取り出し数上限Ｅ＿Ｂｍａｘが記憶される。
【００３２】
図５は、サービス別ＣＰＵ使用率上限記憶部１１１に構成される記憶領域の構成とデータの一例を示す図である。
【００３３】
サービス別ＣＰＵ使用率上限記憶部１１１の記憶領域には、サービス別にサービス別ＣＰＵ使用率上限が記憶される。
【００３４】
サービス別ＣＰＵ使用率上限記憶部１１１の記憶領域には、例えば、サービスＡのサービス別ＣＰＵ使用率上限「５０％」と、サービスＢのサービス別ＣＰＵ使用率上限「５０％」が記憶される。
【００３５】
図６は、サービス別ＣＰＵ使用率計算関数計算部１０９の初期動作を示すフローチャートである。
【００３６】
サービス別ＣＰＵ使用率計算関数計算部１０９は、イベント駆動型処理実行装置１において、意図的に１つのサービスの処理のみが行われている状況の中、ある時間帯が終了したなら、処理依頼部１０５から、その時間帯でのサービス別イベント情報取り出し数を取得し（Ｓ１）、また、ＣＰＵ全使用率取得部１０７から、その時間帯でのＣＰＵ全使用率（１つのサービスの処理のみが行われているので、そのサービスのサービス別ＣＰＵ使用率でもある）を取得する（Ｓ３）。つまり、処理依頼部１０５は、時間帯においてイベントキュー１０３から取り出したイベント情報の数（サービス別イベント情報取り出し数）を計算しておき、履歴情報記憶部１０７に与える（Ｓ１）。また、ＣＰＵ全使用率取得部１０７は、その時間帯においてＣＰＵ１０１の使用率を計測しつづけ、その平均など（ＣＰＵ全使用率）を履歴情報機能部１０７に与える（Ｓ３）。そして、履歴情報機能部１０７はサービス別イベント情報取り出し数とＣＰＵ全使用率をサービス別ＣＰＵ使用率計算関数計算部１０９に与える。
【００３７】
サービス別ＣＰＵ使用率計算関数計算部１０９は、次に、例えば、ＣＰＵ全使用率をサービス別イベント情報取り出し数で除し、計算結果である比例係数、すなわち、サービス別ＣＰＵ使用率計算関数をサービス別ＣＰＵ使用率計算関数記憶部１０８に記憶させる（Ｓ５）。
【００３８】
サービス別ＣＰＵ使用率計算関数計算部１０９は、他のサービスもあるのなら（Ｓ７：ＹＥＳ）、今度は、そのサービスの処理のみが行われている状況において、同様に、ステップＳ１〜Ｓ５を実行する。
【００３９】
サービス別ＣＰＵ使用率計算関数計算部１０９は、全てのサービスについて、ステップＳ１〜Ｓ５を実行したなら（Ｓ７：ＮＯ）、処理を終える。
【００４０】
図７は、サービス別ＣＰＵ使用率上限記憶部１１１の動作を示すフローチャートである。
【００４１】
サービス別ＣＰＵ使用率上限記憶部１１１は、入力装置２から、あるサービスのサービス別ＣＰＵ使用率上限が入力されたなら、入力されたサービス別ＣＰＵ使用率上限を自身の記憶領域に対し、特にサービス別ＣＰＵ使用率上限が既にある場合はこれに替えて、記憶させる（Ｓ１１）。サービス別ＣＰＵ使用率上限記憶部１１１は、他のサービスのサービス別ＣＰＵ使用率上限も入力されたなら（Ｓ１３：ＹＥＳ）、それも取得し、記憶させる（Ｓ１１）。サービス別ＣＰＵ使用率上限記憶部１１１は、全てのサービスについて、ステップＳ１〜Ｓ３を実行したなら（Ｓ１３：ＮＯ）、処理を終える。
【００４２】
図８は、サービス別イベント情報取り出し数上限計算部１１２の動作を示すフローチャートである。
【００４３】
サービス別イベント情報取り出し数上限計算部１１２は、初期動作としては、サービス別ＣＰＵ使用率計算関数記憶部１０８において、全てのサービスについてサービス別ＣＰＵ使用率計算関数が記憶され、且つ、サービス別ＣＰＵ使用率上限記憶部１１１において、全てのサービスについてサービス別ＣＰＵ使用率上限が記憶されたら（Ｓ２１：ＹＥＳ）、または、その後の動作としては、いずれかのサービスについてサービス別ＣＰＵ使用率計算関数とサービス別ＣＰＵ使用率上限の少なくとも一方が変更されたら（Ｓ２１：ＹＥＳ）、該当のサービスについて、サービス別ＣＰＵ使用率計算関数記憶部１０８からサービス別ＣＰＵ使用率計算関数を取得する（Ｓ２３）。
【００４４】
次に、サービス別イベント情報取り出し数上限計算部１１２は、サービス別ＣＰＵ使用率計算関数の逆関数、つまり、サービス別ＣＰＵ使用率からサービス別イベント情報取り出し数を求めるための関数（以下、サービス別イベント情報取り出し数計算関数という）を求める（Ｓ２５）。サービス別ＣＰＵ使用率計算関数が比例係数である場合、サービス別イベント情報取り出し数計算関数は、比例係数の逆数である。
【００４５】
サービス別イベント情報取り出し数上限計算部１１２は、初期動作としては、これを全てのサービスについて行い、その後の動作としては、該当のサービスについて行う。
【００４６】
次に、サービス別イベント情報取り出し数上限計算部１１２は、サービス別ＣＰＵ使用率上限記憶部１１１からサービス別ＣＰＵ使用率上限を取得し、これにサービス別イベント情報取り出し数計算関数を適用し、例えば、上記逆数を乗じ、その計算結果つまり、サービス別イベント情報取り出し数の上限（サービス別イベント情報取り出し数上限）を計算する。そして、サービス別イベント情報取り出し数上限計算部１１２は、計算したサービス別イベント情報取り出し数上限をサービス別イベント情報取り出し数上限記憶部１１０に対し、特にサービス別イベント情報取り出し数上限が既にある場合はこれに替えて、記憶させる（Ｓ２７）。
【００４７】
サービス別イベント情報取り出し数上限計算部１１２は、初期動作としては、これを全てのサービスについて行い、その後の動作としては、該当のサービスについて行う。
【００４８】
その後、サービス別イベント情報取り出し数上限計算部１１２は、あるサービスについてサービス別ＣＰＵ使用率計算関数とサービス別ＣＰＵ使用率上限の少なくとも一方が変更されたら（Ｓ２１：ＹＥＳ）、ステップＳ２３〜Ｓ２７の処理を行う。
【００４９】
図９は、処理依頼部１０５の動作を示すフローチャートである。
【００５０】
処理依頼部１０５は、まず、処理実行部１０２に対し、処理の依頼が可能かを問い合わせ（Ｓ３１）、依頼不可能との回答を得たなら（Ｓ３１：ＮＯ）、処理を終える。
【００５１】
一方、処理依頼部１０５は、依頼可能との回答を得たなら（Ｓ３１：ＹＥＳ）、次に、履歴情報記憶部１０６から、現在時刻を含む時間帯についての履歴情報を検索し、履歴情報から、取り出そうとするイベント情報のサービスと同じサービスのサービス別イベント情報取り出し数を取得するとともに、サービス別イベント情報取り出し数上限記憶部１１０からそのサービスのサービス別イベント情報取り出し数上限を取得し、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限より多い否かを判定する（Ｓ３３）。
【００５２】
なお、取り出そうとするイベント情報の決定方法は、例えば、ラウンドロビン方式で決定したサービスのイベント情報を取り出すという方法が考えられる。
【００５３】
または、イベントキュー１０３にイベント情報が記憶されたら、そのイベント情報のサービスと同じサービスのイベント情報を取り出すという方法も考えられる。
【００５４】
また、このように決定したサービスのイベント情報の中で最も早くイベントキュー１０３に記憶されたイベント情報を取り出すという方法も考えられる。
【００５５】
処理依頼部１０５は、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限以下なら（Ｓ３３：ＮＯ）、イベントキュー１０３からイベント情報を取り出し、当該イベント情報に対応する処理を処理実行部１０２に依頼する（Ｓ３５）。
【００５６】
次に、処理依頼部１０５は、検索した履歴情報の、記憶されたイベント情報のサービスと同じサービスのサービス別イベント情報取り出し数に対し、１を加算し（Ｓ３７）、処理を終える。
【００５７】
一方、処理依頼部１０５は、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限より多いなら（Ｓ３３：ＹＥＳ）、別のサービスについてＳ３３〜Ｓ３７の処理を行う（Ｓ３４：ＹＥＳ、Ｓ３３：ＮＯ）。全てのサービスについて、サービス別イベント情報取り出し数がサービス別イベント情報取り出し数上限より多いなら、処理を終える。
【００５８】
図１０は、サービス別ＣＰＵ使用率計算関数計算部１０９の初期動作後の動作を示すフローチャートである。
【００５９】
サービス別ＣＰＵ使用率計算関数計算部１０９は、イベント駆動型処理実行装置１において、通常の動作、つまり、必要なら全てのサービスの処理が行える状況の中、ある時間帯が終了したなら、履歴情報記憶部１０６から、２以上の履歴情報を読み出す（Ｓ４１）。
【００６０】
次に、サービス別ＣＰＵ使用率計算関数計算部１０９は、履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、サービス別に、サービス別ＣＰＵ使用率計算関数を計算し、サービス別ＣＰＵ使用率計算関数記憶部１０８のサービス別ＣＰＵ使用率計算関数に替え、計算したサービス別ＣＰＵ使用率計算関数を記憶させ（Ｓ４３）、処理を終える。
【００６１】
具体的には、例えば、サービスＡ、Ｂのみの処理が行える状況の中では、サービス別ＣＰＵ使用率計算関数計算部１０９は、２つの履歴情報を読み出す（Ｓ４１）。
【００６２】
次に、サービス別ＣＰＵ使用率計算関数計算部１０９は、一方の履歴情報に、サービスＡのサービス別イベント情報取り出し数Ｅ＿Ａ１とサービスＢのサービス別イベント情報取り出し数Ｅ＿Ｂ１とＣＰＵ全使用率Ｒ＿１が含まれ、他方の履歴情報に、サービスＡのサービス別イベント情報取り出し数Ｅ＿Ａ２とサービスＢのサービス別イベント情報取り出し数Ｅ＿Ｂ２とＣＰＵ全使用率Ｒ＿２が含まれている場合は、以下の連立方程式（１）を解く。つまり、サービス別ＣＰＵ使用率計算関数計算部１０９は、サービスＡのサービス別ＣＰＵ使用率計算関数ｆ＿Ａと、サービスＢのサービス別ＣＰＵ使用率計算関数ｆ＿Ｂとを求め、サービス別ＣＰＵ使用率計算関数記憶部１０８に記憶されているサービスＡ、Ｂのサービス別ＣＰＵ使用率計算関数に替え、サービス別ＣＰＵ使用率計算関数ｆ＿Ａ、ｆ＿Ｂを記憶させる（Ｓ４３）。
【００６３】
ｆ＿Ａ×Ｅ＿Ａ１＋ｆ＿Ｂ×Ｅ＿Ｂ１＝Ｒ＿１
ｆ＿Ａ×Ｅ＿Ａ２＋ｆ＿Ｂ×Ｅ＿Ｂ２＝Ｒ＿２            （１）
また、例えば、サービス別ＣＰＵ使用率計算関数計算部１０９は、非線形最小二乗法を用いて、各サービス別ＣＰＵ使用率計算関数を求める（Ｓ４３）。
【００６４】
例えば、サービスＡについて、１つのイベント情報に対応するＣＰＵ使用率が従前と同じ場合においては、サービス別ＣＰＵ使用率計算関数記憶部１０８内のサービスＡのサービス別ＣＰＵ使用率計算関数は結果的には変更されないこととなる。
【００６５】
一方、例えば、サービスＢについて、１つのイベント情報に対応するＣＰＵ使用率が従前より例えば高くなった場合においては、サービス別ＣＰＵ使用率計算関数記憶部１０８内のサービスＢのサービス別ＣＰＵ使用率計算関数は結果的には変更されることとなる。
【００６６】
ここでは、１つのイベント情報に対応するＣＰＵ使用率が従前より高くなったので、サービス別ＣＰＵ使用率計算関数（比例係数）は、従前より大きくなる。
【００６７】
この場合、図８において、サービスＢについてサービス別ＣＰＵ使用率計算関数が変更された（Ｓ２１：ＹＥＳ）と判定されるので、その後のステップＳ２５では、サービスＢについての新たなサービス別イベント情報取り出し数計算関数が求められる。
【００６８】
ここでは、サービス別ＣＰＵ使用率計算関数（比例係数）が従前より大きいので、新たなサービス別イベント情報取り出し数計算関数（比例係数の逆数）は従前より小さくなる。
【００６９】
続くステップＳ２７では、サービスＢについての新たなサービス別イベント情報取り出し数上限が求められる。例えば、サービスＢのサービス別ＣＰＵ使用率上限が変更されていない場合は、サービス別イベント情報取り出し数計算関数（比例係数の逆数）は従前より小さくので、新たなサービス別イベント情報取り出し数上限は従前より低くなる。
【００７０】
図９において、処理依頼部１０５は、サービス別イベント情報取り出し数を、この従前より低い新たなサービス別イベント情報取り出し数上限以下に制御する（Ｓ３３）ので、サービスＢのサービス別ＣＰＵ使用率は従前の値を維持する。
【００７１】
つまり、サービスＢについて、１つのイベント情報に対応するＣＰＵ使用率が従前より高くなっても、サービスＢのサービス別ＣＰＵ使用率（例えば、サービスＢの同一時間帯での平均のＣＰＵ使用率）は変わらないので、例えば、他のサービスＡへの悪影響はなく、他のサービスＡについては、残りのＣＰＵ使用率の範囲で処理を行うことができる。
【００７２】
また、例えば、サービスＢの処理により多くのＣＰＵを使用させたい場合、入力装置２からは、サービスＡについての従前よりも低いサービス別ＣＰＵ使用率上限と、サービスＢについての従前よりも高いサービス別ＣＰＵ使用率上限とが入力される。
【００７３】
例えば、サービスＡ、Ｂについての従前のサービス別ＣＰＵ使用率上限がそれぞれ５０％だった場合、サービスＡ、Ｂの新たなサービス別ＣＰＵ使用率上限はそれぞれ３０％、７０％となる。
【００７４】
この場合、図８において、サービスＡ、Ｂについてサービス別ＣＰＵ使用率上限が変更された（Ｓ２１：ＹＥＳ）と判定されるので、その後のステップＳ２７では、サービスＡ、Ｂについての新たなサービス別イベント情報取り出し数上限が求められる。
【００７５】
サービスＡのサービス別ＣＰＵ使用率上限は従前よりも低いので、サービスＡについての新たなサービス別イベント情報取り出し数上限も従前より低くなる。
【００７６】
一方、サービスＢのサービス別ＣＰＵ使用率上限は従前よりも高いので、サービスＢについての新たなサービス別イベント情報取り出し数上限も従前より高くなる。
【００７７】
図９において、処理依頼部１０５は、サービスＡのサービス別イベント情報取り出し数を、この従前より低い新たなサービス別イベント情報取り出し数上限以下に制御する（Ｓ３３）ので、サービスＡについては、単位時間あたりの処理量が低下する。また、処理依頼部１０５は、サービスＢのサービス別イベント情報取り出し数を、従前より高い新たなサービス別イベント情報取り出し数上限以下に制御する（Ｓ３３）ので、サービスＢのサービス別イベント情報取り出し数が増え、多くの処理を行うことができる。
【００７８】
以上説明したように、本実施の形態に係るイベント駆動型処理実行装置１によれば、履歴情報内のサービス別イベント情報取り出し数とＣＰＵ全使用率とを用いて、サービス別に、サービス別ＣＰＵ使用率計算関数を計算するサービス別ＣＰＵ使用率計算関数計算部を設けたので、サービス別イベント情報取り出し数にこのサービス別ＣＰＵ使用率計算関数を適用することで、そのサービスのみによるＣＰＵの使用率を求めることができる。
【００７９】
つまり、ＯＳやミドルウェアなど複数のネットワークサービスで共有する部分を含めて、サービス別ＣＰＵ使用率を求めることができる。これにより、例えば、サービス別ＣＰＵ使用率が予め設定した閾値を超過した場合には、該当のサービスを中断することができる。また、上記のように、サービス別イベント情報取り出し数上限の変更することなどにより、サービス別ＣＰＵ使用率を制御できるようになる。例えば、呼処理サーバをイベント駆動型処理実行装置１のような構成とすれば、複数のネットワークサービスを自在に制御することができる。
【００８０】
なお、イベント駆動型処理実行装置１としてコンピュータを機能させるためのコンピュータプログラムは、半導体メモリ、磁気ディスク、光ディスク、光磁気ディスク、磁気テープなどのコンピュータ読み取り可能な記録媒体に記録でき、また、インターネットなどの通信網を介して伝送させて、広く流通させることができる。
【符号の説明】
【００８１】
１  イベント駆動型処理実行装置
２  入力装置
１０１  ＣＰＵ（中央演算装置）
１０２  処理実行部
１０３  イベントキュー
１０４  イベントキュー更新部
１０５  処理依頼部
１０６  履歴情報記憶部
１０７  ＣＰＵ全使用率取得部
１０８  サービス別ＣＰＵ使用率計算関数記憶部
１０９  サービス別ＣＰＵ使用率計算関数計算部
１１０  サービス別イベント情報取り出し数上限記憶部
１１１  サービス別ＣＰＵ使用率上限記憶部
１１２  サービス別イベント情報取り出し数上限計算部
【図１】
0005707348.tif 000002
【図２】
0005707348.tif 000003
【図３】
0005707348.tif 000004
【図４】
0005707348.tif 000005
【図５】
0005707348.tif 000006
【図６】
0005707348.tif 000007
【図７】
0005707348.tif 000008
【図８】
0005707348.tif 000009
【図９】
0005707348.tif 000010
【図１０】
0005707348.tif 000011