(57)【特許請求の範囲】
【請求項１】
複数のバッファそれぞれで非同期に受信するデータの数をカウントして単位時間毎に集計するステップと、
前記複数のバッファそれぞれについて過去の複数の単位時間で受信したデータ数を求め、当該データ数を合計してデータ数の総和を求めるステップと、
前記複数のバッファそれぞれについて、前記データ数の総和に対する過去の複数の単位時間で受信したデータ数の比率を求めるステップと、
前記比率に基づいて前記複数のバッファそれぞれに対する処理能率を振り分ける際に、前記比率が高いバッファほど、振り分ける処理能率を高くするステップと、
前記処理能率に従って前記複数のバッファそれぞれからデータを取得して処理するステップと、
を有することを特徴とする実行制御方法。
【請求項２】
データを非同期に受信する複数のバッファと、
前記バッファで受信するデータの数をカウントして単位時間毎に集計する複数のカウント手段と、
前記複数のカウント手段それぞれから過去の複数の単位時間で受信したデータ数を取得し、当該データ数を合計してデータ数の総和を求める集計手段と、
前記複数のバッファそれぞれについて、前記データ数の総和に対する過去の複数の単位時間で受信したデータ数の比率を求める比率算出手段と、
前記比率に基づいて前記複数のバッファそれぞれに対する処理能率を振り分ける際に、前記比率が高いバッファほど、振り分ける処理能率を高くする振分手段と、
前記処理能率に従って前記複数のバッファそれぞれからデータを取得して処理する刈取処理手段と、
を有することを特徴とする実行制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信したデータを一時蓄積した後、周期的に取得して処理する技術に関する。
【背景技術】
【０００２】
実行制御方式として、受信したデータを到着順に一時蓄積（バッファ）し、周期的に呼び出されるプログラムによりバッファされたデータを取得して処理する（刈り取る）方式が知られている（特許文献１，２参照）。
【０００３】
図８に、刈取処理を行う制御サーバを説明する模式図を示す。同図に示す制御サーバ５は、ネットワーク上に配置されたルータ２に接続され、ルータ２を利用してセッション制御を行うものである。
【０００４】
制御サーバ５は、ルータ制御部５１を備え、ルータ２とのやり取りはルータ制御部５１が行う。ルータ制御部５１は、刈取処理部５１０およびバッファ５３１，５３２を備え、その他機能部５２やルータ２から送信されたデータをバッファ５３１，５３２に一時蓄積し、刈取処理部５１０が周期的に刈り取り処理を行う。具体的には、制御サーバ５内のその他機能部５２がルータ２に対して要求を出す場合、プロセス間通信によりその要求をバッファ５３１に蓄積してルータ制御部５１に渡す。刈取処理部５１０が周期的にバッファ５３１から要求を取得し、所定の処理を施した後、Ｒｅｑｕｅｓｔ信号としてルータ２に送信する。ルータ２は、制御サーバ５から受信したＲｅｑｕｅｓｔ信号に対して所定の処理を施した後、Ｒｅｐｌｙ信号を制御サーバ５に送信する。ルータ２から送信されたＲｅｐｌｙ信号は、バッファ５３２に蓄積される。刈取処理部５１０が周期的にバッファ５３２からＲｅｐｌｙ信号を取得し、所定の処理を施した後、その他機能部５２に渡す。
【０００５】
次に、制御サーバ５とルータ２におけるソケット通信のモデルについて説明する。ここでは、制御サーバ５とルータ２との間の通信をソケット通信と呼び、制御サーバ５内のプロセス間通信と区別する。上記のように、制御サーバ５とルータ２間のソケット通信は、制御サーバ５からのＲｅｑｕｅｓｔ信号に対するルータ２からのＲｅｐｌｙ信号で構成されている。下りのソケット通信（Ｒｅｑｕｅｓｔ信号）と上りのソケット通信（Ｒｅｐｌｙ信号）は常に同等量（下りと上りの量的比率が静的であり一定である）としてモデル化できる。Ｒｅｑｕｅｓｔ信号はその他機能部５２からプロセス間通信を受信して送信されることから、ルータ制御部５１のバッファ５３１を通じて受け取るプロセス間通信量とバッファ５３２を通じて受け取るソケット通信量は量的比率が静的であり一定であるとモデル化できる（以下、「Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙモデル」と称する）。
【０００６】
ここで刈取処理部５１０の処理能率の割り振り、つまり、各バッファ５３１，５３２から刈り取るデータ量の割り振りを考える。上記Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙモデルを前提とすると、各バッファ５３１，５３２に蓄積されるデータは同数と見なせるので、刈取処理部５１０におけるプロセス間通信の刈り取り処理能率（バッファ５３１の刈り取り処理能率：μ１）とソケット通信の刈り取り処理能率（バッファ５３２の刈り取り処理能率：μ２）とを次式（１）のように、同等に振り分けてよい。
【０００７】
μ１  ＝  μ２  ・・・（１）
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開平１１−１８４７１５号公報
【特許文献２】特開平７−０８４８０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、図９に示すように、その他機能部５２が関係しない新たなソケット通信がルータ制御部５１に向かい、その他機能部５２を経由せずにルータ２とソケット通信を行うケースが生じた場合、上記Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙモデルを適用することができなくなる。この場合、ルータ制御部５１がバッファ５３２を通じて受け取るソケット通信量が増え、プロセス間通信量とソケット通信量の量的比率が一定でなくなる。このとき、刈取処理部５１０の刈り取り処理能率を同等に静的に振り分けると、バッファ５３２にデータが蓄積される一方、バッファ５３１では刈り取り処理能力に余力を残した状態となり、元来刈取処理部５１０が保持する刈り取り処理能力を最大限に生かせないという問題があった。例えば、新たなソケット通信が不特定多数のユーザから任意なタイミングで送られてくる場合、静的に刈取処理部５１０の刈り取り処理能率を振り分けると、刈取処理能率μ１はバッファ５３１に蓄積されるデータ量に対して余力を残した状態、すなわち刈取処理能力を活かしきれない状態で処理することとなるが、刈取処理能率μ２はバッファ５３２に蓄積されるデータ量に対し処理しきれない状態となり、元来性能として刈取処理部５１０が保持するμ１，μ２の合計刈取処理能力を十分に活かしきれないまま、刈取処理が実行されてしまう。
【００１０】
また、Ｒｅｑｕｅｓｔ信号がルータ２に向けて同時に送信されたが、ルータ２を経由してＲｅｐｌｙ信号としてルータ制御部５１に到着する過程で、何らかの原因、例えばネットワークの遅延やゆらぎ、ルータ２の処理時間のゆらぎ等により、到着時間に差が生じる場合も、刈取処理部５１０が刈り取り処理を行う際に、バッファ５３１，５３２に蓄積されたデータの量的比率が一定でない状態が生じる。
【００１１】
本発明は、上記に鑑みてなされたものであり、複数のバッファを有して刈り取り処理を行う際に、処理性能の有効活用を図るとともに、処理性能限界を超えたデータ量が到着する状態が一時的に発生した場合でも、そのデータを各バッファに蓄積分散させることを目的とする。
【課題を解決するための手段】
【００１２】
第１の本発明に係る実行制御方法は、複数のバッファそれぞれで非同期に受信するデータの数をカウントして単位時間毎に集計するステップと、前記複数のバッファそれぞれについて過去の複数の単位時間で受信したデータ数を求め、当該データ数を合計してデータ数の総和を求めるステップと、前記複数のバッファそれぞれについて、前記データ数の総和に対する過去の複数の単位時間で受信したデータ数の比率を求めるステップと、前記比率に基づいて前記複数のバッファそれぞれに対する処理能率を振り分ける際に、前記比率が高いバッファほど、振り分ける処理能率を高くするステップと、前記処理能率に従って前記複数のバッファそれぞれからデータを取得して処理するステップと、を有することを特徴とする。
【００１４】
第２の本発明に係る実行制御装置は、データを非同期に受信する複数のバッファと、前記バッファで受信するデータの数をカウントして単位時間毎に集計する複数のカウント手段と、前記複数のカウント手段それぞれから過去の複数の単位時間で受信したデータ数を取得し、当該データ数を合計してデータ数の総和を求める集計手段と、前記複数のバッファそれぞれについて、前記データ数の総和に対する過去の複数の単位時間で受信したデータ数の比率を求める比率算出手段と、前記比率に基づいて前記複数のバッファそれぞれに対する処理能率を振り分ける際に、前記比率が高いバッファほど、振り分ける処理能率を高くする振分手段と、前記処理能率に従って前記複数のバッファそれぞれからデータを取得して処理する刈取処理手段と、を有することを特徴とする。
【発明の効果】
【００１６】
本発明によれば、複数のバッファを有して刈り取り処理を行う際に、処理性能の有効活用を図るとともに、処理性能限界を超えたデータ量が到着する状態が一時的に発生した場合でも、そのデータを各バッファに蓄積分散させることができる。
【図面の簡単な説明】
【００１７】
【図１】本実施の形態における実行制御装置を組み込んだ制御サーバを配置したネットワークの全体構成を示す全体構成図である。
【図２】本発明の実行制御装置に相当するルータ制御部の構成を示す機能ブロック図である。
【図３】上記ルータ制御部が刈取処理能率を算出して刈り取り処理を行う動作の流れを示すフローチャートである。
【図４】各期間毎にバッファに到着したデータ数を示す図である。
【図５】所定期間に各バッファに到着したデータ数を示す図である。
【図６】所定期間に到着したデータの総和に対する各バッファに到着したデータ数の比率を示す図である。
【図７】所定期間における各バッファの刈り取り処理数を示す図である。
【図８】刈取処理を行う制御サーバを説明する模式図である。
【図９】図８に新たな通信が加わった場合の模式図である。
【発明を実施するための形態】
【００１８】
以下、本発明の実施の形態について図面を用いて説明する。
【００１９】
図１は、本実施の形態における実行制御装置を組み込んだ制御サーバを配置したネットワークの全体構成を示す全体構成図である。制御サーバ１は、ネットワーク１００上に配置されたルータ２に接続される。ルータ２は、ネットワーク１００を介してユーザ端末４Ａ，４Ｂや他のルータ（図示せず）に接続される。制御サーバ１は、ルータ２を利用し、例えばＳＩＰ（Ｓｅｓｓｉｏｎ  Ｉｎｉｔｉａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）を用いて通信の開始や切断などのセッション制御を行う。
【００２０】
制御サーバ１は、ルータ制御部１１とその他機能部１２を備える。ルータ制御部１１は、プロセス間通信によりその他機能部１２からデータを受け取り、Ｒｅｑｕｅｓｔ信号としてルータ２に送信するとともに、ソケット通信によりルータ２からＲｅｑｕｅｓｔ信号に対するＲｅｐｌｙ信号を受信してその他機能部１２へ渡すインタフェースの役割を果たす。また、ルータ制御部１１は、ルータ２を介してユーザ端末４Ａ，４Ｂからのソケット通信を受信する。ルータ制御部１１は、プロセス間通信あるいはソケット通信により受信したデータを到着順に蓄積し、蓄積されたデータを周期的に刈り取り（取得して）処理する。なお、その他機能部１２は、ルータ制御部１１を通じてルータ２を利用する機能の総称であり、実際には複数の様々な機能部に分かれている。
【００２１】
制御サーバ１が備える各部は、演算処理装置、記憶装置、メモリ等を備えたコンピュータにより構成して、各部の処理がプログラムによって実行されるものとしてもよい。このプログラムは制御サーバ１が備える記憶装置に記憶されており、磁気ディスク、光ディスク、半導体メモリ等の記録媒体に記録することも、ネットワークを通して提供することも可能である。以下、ルータ制御部１１の詳細について説明する。
【００２２】
図２は、ルータ制御部１１の構成を示す機能ブロック図である。ルータ制御部１１は、本発明の実行制御装置に相当する。同図に示すように、ルータ制御部１１は、刈取処理部１１０、計算処理部１２０、バッファ１３１，１３２、およびカウント部１３３，１３４を備える。
【００２３】
バッファ１３１は、その他機能部１２からプロセス間通信により送信されたデータを一時的に蓄積するメモリである。カウント部１３３は、バッファ１３１に到着したデータ数をカウントする。
【００２４】
バッファ１３２は、ルータ２からソケット通信により送信されたデータを一時的に蓄積するメモリである。カウント部１３４は、バッファ１３２に到着したデータ数をカウントする。
【００２５】
刈取処理部１１０は、周期的に、各バッファ１３１，１３２に対して振り分けられた刈取処理能率に応じた所定数のデータを各バッファ１３１，１３２から刈り取り、刈り取った各データに処理を行う。刈取処理能率は、例えば１秒間にデータを刈り取る個数で表される。刈取処理能率が大きければ、１秒間にバッファ１３１，１３２から刈り取られるデータ数が多くなり、逆に、刈取処理能率が小さければ刈り取られるデータ数が少なくなる。
【００２６】
計算処理部１２０は、集計部１２１、比率算出部１２２、および振分設定部１２３を備え、各バッファ１３１，１３２に到着したデータ数の比率を求めて刈取処理能率を算出する。集計部１２１は、所定期間内に各バッファ１３１，１３２に到着したデータ数を集計する。比率算出部１２２は、集計部１２１が集計したデータ数を用いて、各バッファ１３１，１３２間の所定期間におけるデータ数の量的比率を算出する。振分設定部１２３は、比率算出部１２２が算出した量的比率を用いて、各バッファ１３１，１３２に対して振り分ける刈取処理能率を算出する。
【００２７】
次に、ルータ制御部１１の処理の流れについて説明する。
【００２８】
バッファ１３１には、その他機能部１２から、プロセス間通信により、非同期でデータが到着する。カウント部１３３は、バッファ１３１に到着したデータの数をカウントする。一方、バッファ１３２には、ルータ２から、ソケット通信により、非同期でデータが到着する。カウント部１３４は、バッファ１３２に到着したデータの数をカウントする。
【００２９】
計算処理部１２０は、１秒毎に各カウント部１３３，１３４からデータ数を取得して、刈取処理能率を算出する。そして、刈取処理部１１０は、計算処理部１２０が算出した刈取処理能率に従って各バッファ１３１，１３２からデータを刈り取って、処理を行う。
【００３０】
図３は、計算処理部１２０が刈取処理能率を算出して刈取処理部１１０が刈り取り処理を行う動作の流れを示すフローチャートである。本実施の形態では、同図に示す動作を１秒毎に行う。
【００３１】
まず、集計部１２１が、各バッファ１３１，１３２に到着したデータ数をカウント部１３３，１３４から取得し、所定の時間内に到着したデータ数を集計する（ステップＳ１１）。具体的には、集計部１２１は、各カウント部１３３，１３４から過去４世代（４秒）分のデータ数を取得してそれぞれ和を求め、算出した時間に各データ数の和を関連付けて集計部１２１の備えるメモリに蓄積する。なお、本実施の形態では過去４世代分のデータ数の和を求めたがこれに限定するものではない。
【００３２】
図４は、カウント部１３３，１３４が備えるメモリ上に蓄積されるデータを示す図であり、図４（ａ）はカウント部１３３、図４（ｂ）はカウント部１３４が保持するデータを示す。カウント部１３３，１３４では、各バッファ１３１，１３２に到着したデータ数を１秒毎にまとめて、各秒間毎に到着したデータ数を関連付けて保持している。図４（ａ）に示す例では、時間Ｔ１までの１秒間にバッファ１３１に到着したデータ数はＮａ１である。カウント部１３３には、時間Ｔ１からＴ６までの６秒間分のデータ数Ｎａ１，Ｎａ２，・・・，Ｎａ６が保持されている。図４（ｂ）に示す例でも同様に、カウント部１３４には、時間Ｔ１からＴ６までの６秒間分のデータ数Ｎｂ１，Ｎｂ２，・・・，Ｎｂ６が保持されている。
【００３３】
図５は、集計部１２１がステップＳ１１において集計し、集計部１２１が備えるメモリ上に蓄積したデータを示す図である。図５に示す例では、時間Ｔ４に集計した、各バッファ１３１，１３２に到着したデータ数の和は、それぞれＮＡ１，ＮＢ１である。ＮＡ１，ＮＢ１は、時間Ｔ１からＴ４までの４秒間に各バッファ１３１，１３２に到着したデータ数の和であり、次式（２），（３）で表される。
【００３４】
ＮＡ１  ＝  Ｎａ１  ＋  Ｎａ２  ＋  Ｎａ３  ＋  Ｎａ４  ・・・（２）
ＮＢ１  ＝  Ｎｂ１  ＋  Ｎｂ２  ＋  Ｎｂ３  ＋  Ｎｂ４  ・・・（３）
なお、時間Ｔ５では、時間Ｔ２からＴ５までの４秒間のデータ数の和を求め、時間Ｔ６では、時間Ｔ３からＴ６までの４秒間のデータ数の和を求める。
【００３５】
続いて、比率算出部１２２が、各バッファ１３１，１３２に到着したデータ数の総和に対する各バッファ１３１，１３２に到着したデータ数の比率を求める（ステップＳ１２）。具体的には、比率算出部１２２は、所定の期間内に各バッファ１３１，１３２に到着したデータ数を集計部１２１から読み出して総和を求め、データ数の総和に対する各データ数の比率を算出する。所定の期間内にバッファ１３１，１３２に到着したデータ数をそれぞれＮＡ，ＮＢとすると、データ数の総和はＮＡ＋ＮＢで表されるので、各バッファ１３１，１３２のデータ数の比率βＡ，βＢは、次式（４），（５）で表される。
【００３６】
βＡ  ＝  ＮＡ  ／（ＮＡ＋ＮＢ）  ・・・（４）
βＢ  ＝  ＮＢ  ／（ＮＡ＋ＮＢ）  ・・・（５）
図６は、比率算出部１２２がステップＳ１２において算出し、比率算出部１２２が備えるメモリ上に蓄積したデータを示す図である。図６に示す例では、時間Ｔ４に算出した、時間Ｔ１からＴ４までの４秒間に到着したデータの総和（ＮＡ１＋ＮＢ１）に対する各バッファ１３１，１３２に到着したデータ数（ＮＡ１，ＮＢ１）の比率は、βＡ１，βＢ１である。
【００３７】
続いて、振分設定部１２３が、各バッファ１３１，１３２に対する刈取処理能率を求める（ステップＳ１３）。具体的には、振分設定部１２３は、各バッファ１３１，１３２に到着したデータ数の比率を比率算出部１２２から読み出して処理性能限界数αを乗算して刈り取り数（刈取処理能率）を求める。各バッファ１３１，１３２の刈り取り数ＫＡ，ＫＢは、次式（６），（７）で表される。
【００３８】
ＫＡ  ＝  βＡ  ×  α  ・・・（６）
ＫＢ  ＝  βＢ  ×  α  ・・・（７）
図７は、振分設定部１２３がステップＳ１３において算出し、振分設定部１２３が備えるメモリ上に蓄積したデータを示す図である。図７では、時間Ｔ４からＴ６における各バッファ１３１，１３２の刈り取り処理数を示している。なお、処理性能限界数αとして刈取処理部１１０の処理性能に対する一定の閾値を用いてもよい。
【００３９】
そして、刈取処理部１１０が、振分設定部１２３が算出した刈取処理能率に基づいて各バッファ１３１，１３２からデータを刈り取り、処理を行う（ステップＳ１４）。刈取処理部１１０は、振分設定部１２３が算出した刈り取り数ＫＡ，ＫＢ分のデータを各バッファ１３１，１３２から刈り取り、処理を行う。刈り取り数ＫＡ，ＫＢは、所定の時間（本実施の形態では４秒）に到着したデータ数に対応する値となるので、一方が多く、他方が少なくなることもある。なお、刈り取り数ＫＡ，ＫＢの合計は、刈取処理部１１０の処理性能限界数となる。
【００４０】
以上説明したように、本実施の形態によれば、刈取処理部１１０が刈り取り処理を行う際に、所定の時間に到着したデータ数を集計し、バッファ１３１，１３２間の到着データ数の量的比率を求め、その量的比率に基づいて各バッファ１３１，１３２の刈り取り数を動的に算出することにより、静的で一定な刈り取り処理比率に比べて、活かし切れていなかった限界性能まで性能を有効に活用でき、処理効率の向上を実現することが可能となる。
【００４１】
本実施の形態によれば、刈取処理部１１０が各バッファ１３１，１３２からデータを刈り取る刈取処理能率が動的に算出されるので、各バッファ１３１，１３２に到着するデータの量的比率が変化するような変更がシステムに生じた場合でも、刈取処理比率を静的に設定するための設計検討、設定作業が不要となるため、開発効率の向上が期待できる。
【００４２】
本実施の形態によれば、Ｒｅｑｕｅｓｔ／Ｒｅｐｌｙモデルでの通信以外の、その他機能部１２を経由しないようなユーザ端末４Ａ，４Ｂからの通信をおこなう場合で、刈取処理部１１０の限界性能を超えたデータが到着し続けた場合でも、刈取処理能率が動的に算出されるので、バッファ１３２のキュー長だけが極端に増大することがなくなり、バッファ１３１，１３２に分散してキュー長が増大することとなるため、バッファ１３１，１３２のデータ保持容量を超えるまでに要する時間を延伸することができるので、可用性の向上が期待できる。
【００４３】
なお、集計部１２１が過去のデータ数まで取得せずに前回の処理から到着したデータ数を収集するものでもよいが、上記の実施の形態のように過去のデータ数を含めて集計することにより、バッファ１３１，１３２に蓄積されたデータについても考慮することができる。
【符号の説明】
【００４４】
１…制御サーバ
１１…ルータ制御部
１１０…刈取処理部
１２０…計算処理部
１２１…集計部
１２２…比率算出部
１２３…振分設定部
１３１，１３２…バッファ
１３３，１３４…カウント部
１２…その他機能部
２…ルータ
４Ａ，４Ｂ…ユーザ端末
５…制御サーバ
５１…ルータ制御部
５１０…刈取処理部
５３１，５３２…バッファ
５２…その他機能部
１００…ネットワーク
【図１】
0005517294.tif 000002
【図２】
0005517294.tif 000003
【図３】
0005517294.tif 000004
【図４】
0005517294.tif 000005
【図５】
0005517294.tif 000006
【図６】
0005517294.tif 000007
【図７】
0005517294.tif 000008
【図８】
0005517294.tif 000009
【図９】
0005517294.tif 000010