(57)【特許請求の範囲】
【請求項１】
複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部と、
前記複数の異なる実行間隔の各々について、当該実行間隔により最短の実行間隔を除した値と前記イベント格納部に格納されているデータブロックのうち当該実行間隔で実行すべきイベントのデータブロックの数とを乗じた数αと、当該実行間隔を前記最短の実行間隔で除した数から、前記イベント格納部に最後にデータブロックを格納した後に前記イベント格納部からデータブロックを取り出した回数を差し引いた数βとを用いて、（α＊β）の整数部分から（α＊（β−１））の整数部分を差し引いた数を算出し、
前記複数の異なる実行間隔の各々について算出された前記数の合計の数のデータブロックを前記イベント格納部から前記最短の実行間隔以下の所定の間隔で一括して取り出す取り出し部と、
前記取り出し部により取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する出力部と、
を有するイベント管理装置。
【請求項２】
前記イベントは、１又は複数のコンピュータのハードウェア情報を取得する処理であり、
前記所定の間隔は、前記最短の実行間隔を前記コンピュータの台数で除することで算出される間隔である
請求項１記載のイベント管理装置。
【請求項３】
複数の異なる実行間隔の各々について、当該実行間隔により最短の実行間隔を除した値と前記複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部に格納されているデータブロックのうち当該実行間隔で実行すべきイベントのデータブロックの数とを乗じた数αと、当該実行間隔を前記最短の実行間隔で除した数から、前記イベント格納部に最後にデータブロックを格納した後に前記イベント格納部からデータブロックを取り出した回数を差し引いた数βとを用いて、（α＊β）の整数部分から（α＊（β−１））の整数部分を差し引いた数を算出し、
前記イベント格納部から、前記複数の異なる実行間隔の各々について算出された前記数の合計の数のデータブロックを前記最短の実行間隔以下の所定の間隔で一括して取り出し、
取り出された前記データブロックを含む実行要求を、イベントを実行する実行部に対して出力する
処理をコンピュータに実行させるためのプログラム。
【請求項４】
複数の異なる実行間隔の各々について、当該実行間隔により最短の実行間隔を除した値と前記複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部に格納されているデータブロックのうち当該実行間隔で実行すべきイベントのデータブロックの数とを乗じた数αと、当該実行間隔を前記最短の実行間隔で除した数から、前記イベント格納部に最後にデータブロックを格納した後に前記イベント格納部からデータブロックを取り出した回数を差し引いた数βとを用いて、（α＊β）の整数部分から（α＊（β−１））の整数部分を差し引いた数を算出し、
前記イベント格納部から、前記複数の異なる実行間隔の各々について算出された前記数の合計の数のデータブロックを前記最短の実行間隔以下の所定の間隔で一括して取り出し、
取り出された前記データブロックを含む実行要求を、イベントを実行する実行部に対して出力する
処理をコンピュータが実行する情報処理方法。
【請求項５】
複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部と、
所定の間隔内に実行するイベントの数を前記複数の実行間隔の各々について算出し、算出された当該数の合計の数のデータブロックを前記イベント格納部から前記所定の間隔で一括して取り出す取り出し部と、
前記取り出し部により取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する出力部と、
を有し、
前記イベントは、
１又は複数のコンピュータのハードウェア情報を取得する処理であり、
前記所定の間隔は、
前記複数の異なる実行間隔のうち最短の実行間隔を前記コンピュータの台数で除することで算出される間隔である
イベント管理装置。
【請求項６】
所定の間隔内に実行するイベントの数を複数の実行間隔の各々について算出し、前記複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部から、算出された前記数の合計の数のデータブロックを前記所定の間隔で一括して取り出し、
取り出された前記データブロックを含む実行要求を、イベントを実行する実行部に対して出力する
処理をコンピュータに実行させ、
前記イベントは、
１又は複数のコンピュータのハードウェア情報を取得する処理であり、
前記所定の間隔は、
前記複数の異なる実行間隔のうち最短の実行間隔を前記コンピュータの台数で除することで算出される間隔である
プログラム。
【請求項７】
所定の間隔内に実行するイベントの数を複数の実行間隔の各々について算出し、前記複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部から、算出された前記数の合計の数のデータブロックを前記所定の間隔で一括して取り出し、
取り出された前記データブロックを含む実行要求を、イベントを実行する実行部に対して出力する
処理をコンピュータが実行し、
前記イベントは、
１又は複数のコンピュータのハードウェア情報を取得する処理であり、
前記所定の間隔は、
前記複数の異なる実行間隔のうち最短の実行間隔を前記コンピュータの台数で除することで算出される間隔である
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、イベント実行の管理技術に関する。
【背景技術】
【０００２】
装置の監視を行うシステムにおいては、監視対象の装置に含まれるハードウェアの情報を収集するというイベントを定期的に実行する。イベントの実行間隔は、取得するハードウェアの情報の種類によって異なり、実行間隔が短いイベントもあれば、実行間隔が長いイベントもある。【０００３】
ところで、このようなシステムにおいては、イベントの実行が特定のタイミングに集中すると、イベントの実行によって生じる負荷が一時的に極端に高くなってしまうことがある。例えば、実行間隔が１秒であるイベントが１個存在し、実行間隔が１０秒であるイベントが１０個存在し、実行間隔が１００秒であるイベントが１００個存在する場合を考える。このような場合、実行間隔が１０秒であるイベント及び実行間隔が１００秒であるイベントを実行しないタイミングでは、実行間隔が１秒であるイベント１個だけを実行すればよい。しかし、１０秒毎に１１個のイベントを実行することになり、また１００秒毎に１１１個のイベントを実行することになり、実行するイベントの数が極端に増加する。このように、特定のタイミングにイベントの実行が集中すると、一部のイベントの実行が遅延する等の問題が生じる。
【０００４】
従来、装置の監視を行うシステムに関して、以下のような技術が存在する。具体的には、ルールが多数存在する場合に、システム内のポーリングを所定の時間間隔にわたって分散させることにより、ハードウェア情報の収集が特定のタイミングに集中することを回避している。しかしながら、この技術では、個々のルール毎にシステム内のポーリングを行って、その都度ハードウェア情報を収集するため、処理の頻度が高くなり、システムが高負荷になるという問題があった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００７−５１９０７５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、本技術の目的は、一側面において、実行間隔が異なる複数のイベントを実行する場合において、イベントの実行による負荷の増加を抑制するための技術を提供することである。
【課題を解決するための手段】
【０００７】
本技術に係るイベント管理装置は、複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部と、最短の実行間隔以下の所定の間隔内に実行するイベントの数を複数の実行間隔の各々について算出し、算出された当該数の合計の数のデータブロックをイベント格納部から所定の間隔で一括して取り出す取り出し部と、取り出し部により取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する出力部とを有する。
【図面の簡単な説明】
【０００８】
【図１】図１は、従来技術の問題点を説明するための図である。
【図２】図２は、従来技術の問題点を説明するための図である。
【図３】図３は、本実施の形態のシステム概要を示す図である。
【図４】図４は、サーバテーブルに格納されているデータの一例を示す図である。
【図５】図５は、イベントテーブルに格納されているデータの一例を示す図である。
【図６】図６は、センサリストに格納されているデータの一例を示す図である。
【図７】図７は、内部ポーリング部が行う処理の処理フローを示す図である。
【図８】図８は、内部ポーリング処理の処理フローを示す図である。
【図９】図９は、管理部が行う処理の処理フローを示す図である。
【図１０】図１０は、イベント格納処理の処理フローを示す図である。
【図１１】図１１は、イベントデータ保持部が管理する管理データの一例を示す図である。
【図１２】図１２は、イベント取得処理の処理フローを示す図である。
【図１３】図１３は、実行間隔毎の監視対象数の一例を示す図である。
【図１４】図１４は、小数点以下を切り捨てる方法を用いた場合における監視対象数の推移を示す図である。
【図１５】図１５は、小数点以下を切り上げる方法を用いた場合における監視対象数の推移を示す図である。
【図１６】図１６は、本実施の形態の数式を用いた場合における監視対象数の推移を示す図である。
【図１７】図１７は、ハードウェアアクセス部が行う処理の処理フローを示す図である。
【図１８】図１８は、ＤＢに格納されているデータの一例を示す図である。
【図１９】図１９は、本実施の形態を適用しない場合における監視対象数の推移を示す図である。
【図２０】図２０は、本実施の形態を適用した場合における監視対象数の推移を示す図である。
【図２１】図２１は、本実施の形態におけるイベント実行方法を示す図である。
【図２２】図２２は、コンピュータの機能ブロック図である。
【発明を実施するための形態】
【０００９】
背景技術で述べたように、イベントの実行が特定のタイミングに集中すると、イベントの実行が遅延する等の問題が生じる。具体例を図１に示す。図１においては、実行間隔が１秒であるイベントと、実行間隔が５秒であるイベントとを実行するようになっている。丸はイベントの実行を表しており、軸は時間軸である。この例では、実行間隔が５秒であるイベントが５秒毎に多数実行される。その結果、実行間隔が５秒であるイベントの中には、本来実行すべきタイミングからかなり遅れたタイミングで実行されるイベントが生ずる。また、実行間隔が１秒であるイベントのうち、例えば矢印が付されたイベントは、実行間隔が５秒であるイベントの影響を受けるため、実行されるタイミングが数ミリ秒から数百ミリ秒程度遅れてしまうことになる。
【００１０】
そこで、図２に示すように、イベントを実行するタイミングをずらすことにより、イベントの実行が特定のタイミングに集中することを回避することが考えられる。図２に示したようにイベントを実行するには、以下のようにする。例えば、実行間隔が１秒であるイベントが複数存在する場合には、それぞれのイベントに対し、０ミリ秒から９９９ミリ秒までの異なるオフセット値を付与する。例えば実行間隔が１秒であるイベント１乃至３が存在する場合には、イベント１にオフセット値１００ミリ秒を付与し、イベント２にオフセット値５００ミリ秒を付与し、イベント３にオフセット値８００ミリ秒を付与する。そして、基準時刻から数ミリ秒毎にシステム内のポーリングを行い、システム内のポーリングを行った時点における基準時刻からの経過時間がオフセット値を超えた場合には、そのオフセット値が付与されているイベントを検出する。基準時刻からの経過時間が１０００ミリ秒に達したら、その時点を新たな基準時刻として、処理を繰り返す。このようにすれば、イベント１乃至３が実行されるタイミングをずらすことができる。また、実行間隔が５秒であるイベントについても同様に、０ミリ秒から４９９９ミリ秒までのオフセット値を付与することにより、イベントが実行されるタイミングをずらすことができる。
【００１１】
しかしながら、この方法では、頻繁にシステム内のポーリングを行わなければならず、プロセッサ等のリソースの消費量が多くなるという問題がある。また、イベントを１つ検出する度に、イベントを実行するスレッド等に対してリクエストを送信することになるため、通信量が増加するという問題もある。
【００１２】
そこで本実施の形態においては、以下のような方法により、このような問題を解決する。
【００１３】
図３に、本実施の形態のシステム概要を示す。管理装置１と１又は複数のサーバ３とが例えばＬＡＮ（Local Area Network）を介して接続されている。また、管理装置１と監視端末５とが例えばＬＡＮを介して接続されている。管理装置１は、サーバ３からハードウェアの情報を取得し、監視端末５に提供する。管理装置１は、例えばＩＰＭＩ（Intelligent Platform Management Interface）を介してサーバ３からハードウェアの情報を取得する。監視端末５は、サーバ３のハードウェアの情報を操作者に提示するためのソフトウェアを含む。
【００１４】
管理装置１は、内部ポーリング部１０１と、管理データ格納部１０２と、イベント管理部１０４、イベントデータ保持部１０５１乃至１０５４及びイベント格納部１０６１乃至１０６４を有する管理部１０３と、ハードウェアアクセス部１０７と、データベース（ＤＢ）１０８と、出力部１０９とを含む。本実施の形態においては、イベント管理部１０４の数は、サーバ３の数と同じである。なお、イベントデータ保持部及びイベント格納部は、各実行間隔について設けられている。例えば、実行間隔が１秒であるイベントのデータが管理データ格納部１０２に格納されている場合には、実行間隔が１秒であるイベントのためにイベントデータ保持部及びイベント格納部が１つずつ設けられる。また、例えば実行間隔が５秒であるイベントのデータが管理データ格納部１０２に格納されている場合には、実行間隔が５秒であるイベントのためにイベントデータ保持部及びイベント格納部が１つずつ設けられる。そのため、イベントデータ保持部及びイベント格納部の数は４であるとは限らない。
【００１５】
内部ポーリング部１０１は、所定時間毎に内部ポーリング処理を実施し、抽出されたイベントの実行データブロックを含む格納要求を管理部１０３に送信する。イベント管理部１０４は、内部ポーリング部１０１から受信したイベントの実行データブロックを、イベントの実行間隔に応じてイベントデータ保持部に振り分ける。イベントデータ保持部１０５１乃至１０５４は、実行すべきイベントの実行データブロックをイベント格納部１０６１乃至１０６４から取り出し、イベント管理部１０４に送信する。イベント管理部１０４は、実行すべきイベントの実行データブロックを内部ポーリング部１０１に送信する。内部ポーリング部１０１は、実行すべきイベントの実行データブロックを含む実行要求をハードウェアアクセス部１０７に送信する。ハードウェアアクセス部１０７は、実行要求に含まれる実行データブロックを用いてイベントを実行し、サーバ３からハードウェアの情報を取得し、ＤＢ１０８に格納する。出力部１０９は、監視端末５からの要求に応じ又は定期的に、ＤＢ１０８に格納されているハードウェアの情報を監視端末５に送信する。
【００１６】
サーバ３は、センサ３１乃至３３を含む。センサ３１乃至３３は、サーバのハードウェアの情報（例えば、電源ユニットからの供給電圧、冷却ファンの回転数など）を取得するセンサであり、例えばＢＭＣ（Baseboard Management Controller）によって制御される。
【００１７】
図４に、管理データ格納部１０２に格納されているサーバテーブルの一例を示す。サーバテーブルには、サーバの識別子と、状態を表すデータと、イベントテーブルの識別子とが格納されている。「ＯＮ」は監視対象のサーバであることを表しており、「ＯＦＦ」は監視対象ではないことを表している。イベントテーブルの識別子は、サーバに対して実行すべきイベントのデータが格納されているイベントテーブルの識別子である。
【００１８】
図５に、管理データ格納部１０２に格納されているイベントテーブルの一例を示す。イベントテーブルには、関数名と、カウンタと、実行間隔と、センサリストの識別子とが格納されている。センサリストの識別子は、イベントを実行することによって取得するハードウェアの情報の項目が格納されているセンサリストの識別子である。イベントテーブルは、図４に示したサーバテーブルにおけるイベントテーブルの識別子の数だけ用意されている。例えば図５に示した複数のイベントテーブルのうち１つ目のイベントテーブルは、識別子が「１」であるイベントテーブルを例示したものである。
【００１９】
図６に、管理データ格納部１０２に格納されているセンサリストの一例を示す。センサリストには、ハードウェアの情報の項目が格納されている。センサリストは、図５に示したイベントテーブルにおけるセンサリストの識別子の数だけ用意されている。例えば図６に示した複数のセンサリストのうち１つ目のセンサリストは、識別子が「２」であるセンサリストを例示したものである。
【００２０】
次に、図７乃至図２１を用いて、図３に示したシステムの動作について説明する。まず、図７を用いて、内部ポーリング部１０１が行う処理について説明する。
【００２１】
内部ポーリング部１０１は、前回の処理から所定時間経過したかを判断する（図７：ステップＳ１）。本実施の形態においては、管理データ格納部１０２に格納されているイベントの実行間隔のうち最短の実行間隔を、サーバ３の台数で除した値を所定時間とする。例えば、最短の実行間隔が１秒であり、サーバ３の台数が１台である場合には、内部ポーリング部１０１は１秒毎に処理を実行することになる。
【００２２】
前回の処理から所定時間経過していない場合（ステップＳ１：Ｎｏルート）、所定時間経過するまでステップＳ１を繰り返し実行する。一方、前回の処理から所定時間経過した場合（ステップＳ１：Ｙｅｓルート）、内部ポーリング部１０１は、内部ポーリング処理を実施する（ステップＳ３）。内部ポーリング処理については、図８を用いて説明する。
【００２３】
まず、内部ポーリング部１０１は、管理データ格納部１０２に格納されているサーバテーブル（図４）から、状態が「ＯＮ」であるサーバのうち未処理のサーバを１つ特定する（図８：ステップＳ２１）。ステップＳ２１においては、例えば、サーバテーブルの上から順に未処理のサーバを特定する。そして、内部ポーリング部１０１は、ステップＳ２１において特定されたサーバについてのイベントテーブル（図５）から、未処理のイベントを１つ特定する（ステップＳ２３）。
【００２４】
内部ポーリング部１０１は、イベントテーブル（図５）において、ステップＳ２３において特定されたイベントのカウンタの値を１減らす（ステップＳ２５）。そして、内部ポーリング部１０１は、カウンタの値が０になったか判断する（ステップＳ２７）。
【００２５】
カウンタの値が０になっていない場合（ステップＳ２７：Ｎｏルート）、イベントを実行すべきタイミングではないので、次のイベントについて処理するため、ステップＳ２３の処理に戻る。一方、カウンタの値が０になった場合（ステップＳ２７：Ｙｅｓルート）、内部ポーリング部１０１は、ステップＳ２３において特定されたイベントの実行データブロックと実行間隔とを管理データ格納部１０２から抽出する。実行データブロックは、サーバテーブル（図４）に格納されているサーバの識別子、イベントテーブル（図５）に格納されている関数名、及びセンサリスト（図６）に格納されているセンサの情報を含む。そして、内部ポーリング部１０１は、ステップＳ２３において特定されたイベントのカウンタの値をデフォルトの値に設定する（ステップＳ２９）。デフォルトの値は、イベントの実行間隔を最短の実行間隔で除した値である。
【００２６】
内部ポーリング部１０１は、ステップＳ２１において特定されたサーバについて未処理のイベントが有るか判断する（ステップＳ３１）。未処理のイベントが有る場合（ステップＳ３１：Ｙｅｓルート）、次のイベントについて処理するため、ステップＳ２３の処理に戻る。
【００２７】
一方、未処理のイベントが無い場合（ステップＳ３１：Ｎｏルート）、内部ポーリング部１０１は、未処理のサーバが有るか判断する（ステップＳ３３）。未処理のサーバが有る場合（ステップＳ３３：Ｙｅｓルート）、次のサーバについて処理するため、ステップＳ２１の処理に戻る。未処理のサーバが無い場合（ステップＳ３３：Ｎｏルート）、元の処理に戻る。
【００２８】
以上のような処理を実施することで、実行間隔が異なる複数のイベントが存在する場合においても、実行時機になったイベントを適切に検出することができるようになる。
【００２９】
図７の説明に戻り、内部ポーリング部１０１は、ステップＳ２７においてカウンタの値が０になったと判断されたイベントの実行データブロックと実行間隔とを含む格納要求を管理部１０３に送信する（ステップＳ５）。また、内部ポーリング部１０１は、イベント格納部１０６１乃至１０６４から実行すべきイベントの実行データブロックを取り出すことを要求する取得要求を管理部１０３に送信する（ステップＳ７）。
【００３０】
内部ポーリング部１０１は、ステップＳ７において送信した取得要求に応じて処理を行った管理部１０３から、実行すべきイベントの実行データブロックを受信する（ステップＳ９）。そして、内部ポーリング部１０１は、実行すべきイベントの実行データブロックを含む実行要求をハードウェアアクセス部１０７に送信する（ステップＳ１１）。
【００３１】
そして、内部ポーリング部１０１は、処理の終了を指示されていない場合には（ステップＳ１３：Ｎｏルート）、処理を続けるため、ステップＳ１の処理に戻る。一方、処理の終了を指示された場合には（ステップＳ１３：Ｙｅｓルート）、処理を終了する。
【００３２】
以上のように、最短の実行間隔に基づき決定された時間間隔で、実行すべきイベントを検出すると共に、ハードウェアアクセス部１０７に対して実行要求を送信する。これにより、個々のイベントを検出する度に処理するのと比較して、内部ポーリング処理の頻度が減り、またハードウェアアクセス部１０７への実行要求の送信数が減るので、処理負荷を削減できるようになる。
【００３３】
次に、図９を用いて、管理部１０３が行う処理について説明する。まず、イベント管理部１０４は、上で述べた格納要求又は取得要求を内部ポーリング部１０１から受信する（図９：ステップＳ４１）。そして、イベント管理部１０４は、ステップＳ４１において格納要求を受信したか判断する（ステップＳ４３）。
【００３４】
格納要求を受信した場合（ステップＳ４３：Ｙｅｓルート）、イベント管理部１０４及びイベントデータ保持部１０５１乃至１０５４はイベント格納処理を実施する（ステップＳ４５）。イベント格納処理については、図１０を用いて説明する。
【００３５】
まず、イベント管理部１０４は、格納要求に実行データブロックが含まれるイベントのうち未処理のイベントを１つ特定する（図１０：ステップＳ６１）。そして、イベント管理部１０４は、ステップＳ６１において特定されたイベントの実行データブロックを当該イベントの実行間隔に対応するイベントデータ保持部（ここでは、イベントデータ保持部１０５１とする）に送信する。そして、イベントデータ保持部１０５１は、受信した実行データブロックをイベント格納部１０６１に格納する（ステップＳ６３）。
【００３６】
イベントデータ保持部１０５１は、イベントデータ保持部１０５１が管理している管理データにおいて、「イベント数」を１増やす（ステップＳ６５）。図１１に、イベントデータ保持部１０５１が管理している管理データの一例を示す。イベントデータ保持部１０５１は、イベントの実行間隔と、イベント数と、取得回数とを管理している。イベント数は、イベント格納部１０６１に格納されている実行データブロックの数である。そして、イベントデータ保持部１０５１は、取得回数をデフォルトの値に設定する（ステップＳ６７）。デフォルトの値は、イベントの実行間隔を最短の実行間隔で除した値である。
【００３７】
そして、イベント管理部１０４は、未処理のイベントが有るか判断する（ステップＳ６９）。未処理のイベントが有る場合（ステップＳ６９：Ｙｅｓルート）、次のイベントについて処理するため、ステップＳ６１の処理に戻る。一方、未処理のイベントが無い場合（ステップＳ６９：Ｎｏルート）、元の処理に戻る。
【００３８】
以上のような処理を実施することにより、実行すべきイベントの実行データブロックを一旦蓄積しておくことができるようになる。
【００３９】
図９の説明に戻り、ステップＳ４３において格納要求を受信していないと判断された場合（ステップＳ４３：Ｎｏルート）、取得要求を受信したことになる。よって、イベント管理部１０４及びイベントデータ保持部１０５１乃至１０５４は、イベント取得処理を実施する（ステップＳ４７）。イベント取得処理については、図１２を用いて説明する。
【００４０】
まず、イベント管理部１０４は、管理部１０３において管理している実行間隔のうち未処理の実行間隔を１つ特定する（図１２：ステップＳ７１）。そして、イベント管理部１０４は、特定された実行間隔に対応するイベントデータ保持部（ここでは、イベントデータ保持部１０５１とする）に取得要求があったことを通知する。
【００４１】
イベントデータ保持部１０５１は、イベント格納部１０６１から取り出す実行データブロックの数を、Ｉｎｔ（（イベント数）＊（取得回数）／（実行間隔）＊（最短の実行間隔））−Ｉｎｔ（（イベント数）＊（取得回数−１）／（実行間隔）＊（最短の実行間隔））によって算出する（ステップＳ７３）。ここで、Ｉｎｔ（ｘ）はｘの整数部分を求めるための関数である。
【００４２】
ステップＳ７３で用いた数式において、（イベント数）／（実行間隔）＊（最短の実行間隔）は、イベント格納部に格納されている実行データブロックを１実行間隔で残らず取り出す場合において、１回に取り出すべき実行データブロックの数を表している。（イベント数）／（実行間隔）＊（最短の実行間隔）の整数部分に該当する数の実行データブロックを取り出すようにしても、イベントの実行数はある程度平準化される。しかし、ステップＳ７３で用いた数式を用いれば、実行するイベントの数のばらつきがさらに小さくなる。以下では、具体例を用いて説明する。
【００４３】
まず、実行間隔が５秒であるイベントが７つ存在し、最短の実行間隔が１秒であるケースを考える。このケースにおいては、（イベント数）／（実行間隔）＊（最短の実行間隔）＝７／５＊１＝１．４個の実行データブロックを１回で取り出せばよいことになる。
【００４４】
そこで、単純に１．４の小数点以下を切り捨てる方法（以下、方法１とする）を用いると、１秒毎に１つのイベントを実行することになるので、イベントの実行数は１、１、１、１、３となる。また、単純に１．４の小数点以下を切り上げる方法（以下、方法２とする）を用いると、１秒毎に２つのイベントを実行することになるので、イベントの実行数は２、２、２、１、０となる。いずれの方法においても、イベントの実行数の最大値と最小値との差が２になる。
【００４５】
これに対し、同じケースに対してステップＳ７３で用いた数式を適用すると、イベントの実行数は、２、１、２、１、１となる。ステップＳ７３で用いた数式を適用すると、イベントの実行数の最大値と最小値との差は１であり、上で説明した２つの方法よりも差が小さく、イベントの実行数のばらつきが小さくなるため、さらに好ましい。
【００４６】
また、図１３に示すような数の監視対象が存在するケースを考える。なお、監視対象とは、ハードウェアアクセス部１０７がハードウェア情報を取得する対象のことである。図１３のケースでは７３０２の監視対象が存在し、ハードウェア情報の取得を滞りなく行うためには、１秒あたり約８４０の監視対象からハードウェア情報を取得することになる。
【００４７】
図１４に、図１３に示したようなケースに対して方法１を適用した場合の監視対象数の推移を示す。図１４においては、縦軸が監視対象の数を表しており、横軸は所定の基準時刻からの経過時間を表している。図１４においては、ほとんどの時間帯において監視対象の数は８４０以下で安定的に推移しているが、経過時間が６０秒のときに監視対象の数が約８７０になっている。このように、方法１を用いると監視対象の数のばらつきが大きくなる。
【００４８】
図１５に、図１３に示したようなケースに対して方法２を適用した場合の監視対象数の推移を示す。図１５の図の構成は図１４と同様である。図１５においては、ほとんどの時間帯において監視対象の数は約８４０から約８４５の間で推移しているが、約２０秒毎に約８２０になり、経過時間が６０秒のときに約７９０となっている。このように、方法２を用いた場合も、監視対象の数のばらつきが大きくなる。
【００４９】
図１６に、図１３に示したようなケースに対して本実施の形態を適用した場合の監視対象数の推移を示す。図１６の図の構成は図１４及び図１５と同様である。図１６においては、監視対象の数は常に約８４０であり、監視対象の数のばらつきは方法１及び方法２と比較して小さくなっている。以上のようなことを考慮し、本実施の形態においては、上記の数式を採用している。
【００５０】
図１２の説明の戻り、イベントデータ保持部１０５１は、ステップＳ７３において算出した数の実行データブロックをイベント格納部１０６１から取り出す（ステップＳ７５）。なお、イベント格納部１０６１から実行データブロックを取り出す順序は、例えばファーストインファーストアウトにより決定する。そして、イベントデータ保持部１０５１は、イベントデータ保持部１０５１が管理している管理データにおける取得回数を１減らす（ステップＳ７７）。
【００５１】
イベント管理部１０４は、管理部１０３において管理している実行間隔のうち未処理の実行間隔が有るか判断する（ステップＳ７９）。未処理の実行間隔が有る場合（ステップＳ７９：Ｙｅｓルート）、ステップＳ７１の処理に戻る。一方、未処理の実行間隔が無い場合（ステップＳ７９：Ｎｏルート）、元の処理に戻る。
【００５２】
図９の説明に戻り、イベント管理部１０４は、ステップＳ７５においてイベント格納部から取り出された、実行すべきイベントの実行データブロックを内部ポーリング部１０１に送信する（ステップＳ４９）。そして、イベント管理部１０４は、処理の終了指示があったか判断する（ステップＳ５１）。処理の終了指示が無い場合には（ステップＳ５１：Ｎｏルート）、ステップＳ４１の処理に戻り、処理の終了指示があった場合には（ステップＳ５１：Ｙｅｓルート）、処理を終了する。
【００５３】
以上のような処理を実施することにより、実行間隔が異なる複数のイベントを実行する場合であっても、特定のタイミングにイベントの実行が集中することによって負荷が増加することを抑制できるようになる。
【００５４】
次に、図１７及び図１８を用いて、ハードウェアアクセス部１０７が行う処理について説明する。
【００５５】
まず、ハードウェアアクセス部１０７は、内部ポーリング部１０１から実行要求を受信する（図１７：ステップＳ９１）。そして、ハードウェアアクセス部１０７は、実行要求に実行データブロックが含まれるイベントのうち未処理のイベントを１つ特定する（ステップＳ９３）。
【００５６】
ハードウェアアクセス部１０７は、特定されたイベントの実行データブロックに含まれる関数名、サーバの識別子及びセンサの情報を用いてイベントを実行する（ステップＳ９５）。具体的には、ハードウェアアクセス部１０７は、ハードウェア情報の取得要求をサーバ３に対して送信する。これに対し、サーバ３におけるセンサ３１乃至３３はハードウェアアクセス部１０７からの取得要求に応じ、ハードウェア情報を管理装置１に送信する。
【００５７】
ハードウェアアクセス部１０７は、ハードウェア情報をサーバ３から取得すると、ＤＢ１０８に格納する（ステップＳ９７）。図１８に、ＤＢ１０８に格納されているデータの一例を示す。図１８の例では、サーバ毎に複数の項目のハードウェア情報が格納されるようになっている。
【００５８】
そして、ハードウェアアクセス部１０７は、未処理のイベントが有るか判断する（ステップＳ９９）。未処理のイベントが有る場合（ステップＳ９９：Ｙｅｓルート）、次のイベントについて処理するため、ステップＳ９３の処理に戻る。一方、未処理のイベントが無い場合（ステップＳ９９：Ｎｏルート）、処理を終了する。
【００５９】
以上のような処理を実施することにより、ハードウェア情報をＤＢ１０８に蓄積し、監視端末５の操作者に提示できるようになる。
【００６０】
例えば、図１３に示したようなケースに対して、本実施の形態を適用しない場合における監視対象の数の推移を図１９に示す。具体的には、上で述べた管理部１０３を設けず、内部ポーリング部１０１が１秒毎に内部ポーリング処理を行い、内部ポーリング処理によってイベントを検出する度にハードウェアアクセス部１０７に対して実行要求を送信するような場合における監視対象の数の推移である。図１９の図の構成は、図１４及び図１５と同様である。図１９において、監視対象の数は５秒毎に３０００以上になり、１０秒毎に４０００以上になり、２０秒毎に５０００以上になり、６０秒毎に７０００以上になっている。これは、これらのタイミングにおいて実行間隔が異なるイベントの実行が集中するからであり、その結果、監視対象の数が多いときと少ないときとの差が７０００以上になっている。
【００６１】
一方、図１３に示したようなケースに対して、本実施の形態を適用した場合の監視対象数の推移は、図２０のようになる。図２０の図の構成は、図１９と同様である。図２０においては、監視対象の数が常に約８４０程度で推移している。すなわち、イベントの実行数が平準化されているため、ハードウェアアクセス部１０７の負荷が安定しており、イベントの実行が遅延する等の問題が生じにくい。
【００６２】
また、本実施の形態におけるイベントの実行方法を図２１に示す。図２１の図の構成は図１及び図２と同様であり、実行するイベントの数等の条件も、図１及び図２と同じである。但し、最短の実行間隔は１秒であり、サーバの台数は１台であるため、処理の間隔は１秒であるとする。図１と比較すると、実行間隔が５秒であるイベントは１秒毎に少しずつ実行されるようになっており、イベントの実行が遅延してしまうことを抑制している。また、図２のように個々のイベントを検出する度にイベントを実行するわけではないため、システム内のポーリングの頻度を低くし、ハードウェアアクセス部１０７に送信する実行要求の数も減っている。これによって、管理装置１が高負荷になることを防いでいる。
【００６３】
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明した管理装置１の構成は必ずしも実際のプログラムモジュール構成に対応するものではない。
【００６４】
また、上で説明した処理フローは、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
【００６５】
なお、上で述べた例では、管理装置１とサーバ３とが別の装置である例を示したが、管理装置１が管理装置１内のハードウェアの情報を例えばＩ２Ｃ（Inter Integrated Circuit）によって取得するようなシステムであってもよい。
【００６６】
なお、上で述べた管理装置１、サーバ３及び監視端末５は、コンピュータ装置であって、図２２に示すように、メモリ２５０１とＣＰＵ（Central Processing Unit）２５０３とハードディスク・ドライブ（ＨＤＤ：Hard Disk Drive）２５０５と表示装置２５０９に接続される表示制御部２５０７とリムーバブル・ディスク２５１１用のドライブ装置２５１３と入力装置２５１５とネットワークに接続するための通信制御部２５１７とがバス２５１９で接続されている。オペレーティング・システム（ＯＳ：Operating System）及び本実施例における処理を実施するためのアプリケーション・プログラムは、ＨＤＤ２５０５に格納されており、ＣＰＵ２５０３により実行される際にはＨＤＤ２５０５からメモリ２５０１に読み出される。ＣＰＵ２５０３は、アプリケーション・プログラムの処理内容に応じて表示制御部２５０７、通信制御部２５１７、ドライブ装置２５１３を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ２５０１に格納されるが、ＨＤＤ２５０５に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク２５１１に格納されて頒布され、ドライブ装置２５１３からＨＤＤ２５０５にインストールされる。インターネットなどのネットワーク及び通信制御部２５１７を経由して、ＨＤＤ２５０５にインストールされる場合もある。このようなコンピュータ装置は、上で述べたＣＰＵ２５０３、メモリ２５０１などのハードウエアとＯＳ及びアプリケーション・プログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。
【００６７】
以上述べた本実施の形態をまとめると以下のようになる。
【００６８】
本実施の形態の第１の態様に係るイベント管理装置は、（Ａ）複数の異なる実行間隔を有する複数のイベントの各々について当該イベントの実行に用いるデータブロックを格納するイベント格納部と、（Ｂ）複数の異なる実行間隔のうち最短の実行間隔以下の間隔で、複数の異なる実行間隔の各々について上記間隔内で実行すべきイベントの数を絞り込み、絞り込まれた数のデータブロックをイベント格納部から一括して取り出す取り出し部と、（Ｃ）取り出し部により取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する出力部とを有する。
【００６９】
複数の異なる実行間隔を有する複数のイベントを実行する場合、実行すべきイベントを１つ検出する度に実行要求を出力するような方法だと、処理の頻度が高くなり、処理負荷が増加することがある。そこで上で述べたように、各実行間隔について取り出されたデータブロックを一括して処理することで、処理負荷の増加を抑制できるようになる。
【００７０】
本実施の形態の第２の態様に係るイベント管理装置は、（Ｄ）イベントの実行に用いるデータブロックを格納する複数のイベント格納部と、（Ｅ）実行すべきイベントのデータブロックと当該実行すべきイベントの実行間隔とを取得した場合に、当該実行すべきイベントのデータブロックを、複数のイベント格納部のうち、実行すべきイベントの実行間隔と同じ実行間隔となっているイベントのデータブロックを格納するイベント格納部に格納する格納処理部と、（Ｆ）複数のイベント格納部の各々について、イベントの実行間隔のうち最も短い実行間隔以下の間隔で、最も短い実行間隔を当該イベント格納部に格納されているデータブロックを用いて実行するイベントの実行間隔で除した値と当該イベント格納部に格納されているデータブロックの数とを乗じた値αを用いて、当該イベント格納部から取り出すデータブロックの数を算出し、当該数のデータブロックを当該イベント格納部から取り出す取り出し部と、（Ｇ）取り出し部により取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する出力部とを有する。
【００７１】
このようにすれば、実行間隔が異なる複数のイベントを実行する場合であっても、特定のタイミングにイベントの実行が集中することによって負荷が増加することを抑制できるようになる。また、１回の処理において、取り出し部により算出された数のイベントを処理できるので、個々のイベントを取得する度に処理するのと比較して処理の頻度を減らし、負荷を削減できるようになる。
【００７２】
また、本イベント管理装置が、（Ｈ）イベントの実行間隔と当該イベントの実行時機を管理するための管理データと当該イベントの実行に用いるデータブロックとをイベント毎に格納するデータ格納部をさらに有してもよい。そして、上で述べた出力部が、（ｇ１）データ格納部に格納されている管理データを用いて、実行すべきイベントを検出し、当該実行すべきイベントのデータブロックと当該実行すべきイベントの実行間隔とを格納処理部に出力するようにしてもよい。これにより、実行時機になったイベントについて処理を行うことができるようになる。
【００７３】
また、上で述べた取り出し部は、（ｆ１）イベント格納部に格納されているデータブロックを用いて実行するイベントの実行間隔を最も短い実行間隔で除した値から、当該イベント格納部に最後にデータブロックを格納した後に当該イベント格納部からデータブロックを取り出した回数を差し引いた値βを算出し、（α＊β）の整数部分から（α＊（β−１））の整数部分を差し引いた数のデータブロックを当該イベント格納部から取り出すようにしてもよい。これにより、実行するイベントの数のばらつきが少なくなり、イベントの実行により生じる負荷がより安定するようになる。
【００７４】
また、上で述べたイベントが、１又は複数のコンピュータのハードウェア情報を取得するというイベントであり、上で述べた取り出し部及び出力部が、（ｆ２、ｇ２）最も短い実行間隔をコンピュータの台数で除した間隔で処理を実行するようにしてもよい。コンピュータの数が増えると、イベントの数もそれに応じて増えると考えられる。そこで、コンピュータの数に応じて処理の間隔を決定することで、イベントの実行を適切に行うことができるようになる。
【００７５】
本実施の形態の第３の態様に係る情報処理方法は、（Ｉ）実行すべきイベントの実行に用いるデータブロックと当該実行すべきイベントの実行間隔とを取得した場合に、当該実行すべきイベントのデータブロックを、イベントの実行に用いるデータブロックを格納する複数のイベント格納部のうち、実行すべきイベントの実行間隔と同じ実行間隔となっているイベントのデータブロックを格納するイベント格納部に格納し、（Ｊ）複数のイベント格納部の各々について、イベントの実行間隔のうち最も短い実行間隔以下の間隔で、最も短い実行間隔を当該イベント格納部に格納されているデータブロックを用いて実行するイベントの実行間隔で除した値と当該イベント格納部に格納されているデータブロックの数とを乗じた値αを用いて、当該イベント格納部から取り出すデータブロックの数を算出し、当該数のデータブロックを当該イベント格納部から取り出し、（Ｋ）取り出されたデータブロックを含む実行要求を、イベントを実行する実行部に対して出力する処理を含む。
【００７６】
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【図１】
0005895946.tif 000002
【図２】
0005895946.tif 000003
【図３】
0005895946.tif 000004
【図４】
0005895946.tif 000005
【図５】
0005895946.tif 000006
【図６】
0005895946.tif 000007
【図７】
0005895946.tif 000008
【図８】
0005895946.tif 000009
【図９】
0005895946.tif 000010
【図１０】
0005895946.tif 000011
【図１１】
0005895946.tif 000012
【図１２】
0005895946.tif 000013
【図１３】
0005895946.tif 000014
【図１４】
0005895946.tif 000015
【図１５】
0005895946.tif 000016
【図１６】
0005895946.tif 000017
【図１７】
0005895946.tif 000018
【図１８】
0005895946.tif 000019
【図１９】
0005895946.tif 000020
【図２０】
0005895946.tif 000021
【図２１】
0005895946.tif 000022
【図２２】
0005895946.tif 000023