(57)【要約】【課題】一旦入出力キューに滞留した要求の優先度を、要求元の計算機の状態の変化に応じて変更可能とする。【解決手段】計算機１０において、入出力キューから要求を取り出す際、要求中に付加された優先度情報だけでなく、要求元優先度管理部１１で管理している優先度情報も参照して優先度を決定する。この要求元優先度管理部１１では、その優先度情報は、ネットワークを介してそれぞれの計算機２０，３０の優先度管理部２２，３２から優先度情報の値を直接受信して管理する。【選択図】        図１
2004220083.tif 000002
【特許請求の範囲】
【請求項１】
入出力キューに滞留している複数の要求を、各々の要求に予め要求元が付加した優先度情報に基づき順次に取り出すメッセージキューイングシステムのメッセージキューイング方法であって、
上記入出力キューに滞留している要求の要求元から通知される優先度変更情報を記憶装置に記憶する第１のステップと、
上記入出力キューから要求を取り出す際、各々の要求に予め付加された上記優先度情報と上記記憶装置に記憶した上記優先度変更情報とに基づき、優先的に取り出す要求を特定する第２のステップとを有し、上記優先度情報と上記優先度変更情報とに基づく順序で要求を入出力キューから取り出すことを特徴とするメッセージキューイング方法。
【請求項２】
入出力キューに滞留しているネットワーク上の複数の計算機からの各要求を、各々の要求に予め要求元の計算機が付加した優先度情報に基づき順次に取り出すメッセージキューイングシステムのメッセージキューイング方法であって、
上記入出力キューに滞留している要求の要求元の計算機からネットワークを介して通知される優先度変更情報を記憶装置に記憶する第１のステップと、
上記入出力キューから要求を取り出す際、各々の要求に予め付加された上記優先度情報と上記記憶装置に記憶した上記優先度変更情報とに基づき、優先的に取り出す要求を特定する第２のステップとを有し、
上記優先度情報と上記優先度変更情報とに基づく順序で要求を入出力キューから取り出すことを特徴とするメッセージキューイング方法。
【請求項３】
請求項１、もしくは、請求項２のいずれかに記載のメッセージキューイング方法であって、
上記優先度情報と上記優先度変更情報は優先度を表す数値からなり、
上記第１のステップでは、上記優先度変更情報の数値を要求元単位で上記記憶装置に記憶し、
上記第２のステップでは、上記要求元単位で上記記憶装置に記憶された上記優先度変更情報の数値と各要求に予め付加された上記優先度情報の数値とを加減算した結果に基づき、優先的に取り出す要求を特定することを特徴とするメッセージキューイング方法。
【請求項４】
ネットワーク上の複数のクライアント計算機からの要求を、サーバ計算機において入出力キューに複数滞留し、該サーバ計算機において入出力キューから各要求を取り出す際、各々の要求に予め要求元のクライアント計算機が付加した優先度情報に基づき順次に取り出すメッセージキューイング方法であって、
上記クライアント計算機からネットワークを介して上記サーバ計算機に、自クライアント計算機からの要求に対する優先度を変更する優先度変更情報を送信するステップと、
上記サーバ計算機において上記クライアント計算機から送信されてきた優先度変更情報を記憶装置に記憶するステップと、
上記サーバ計算機において上記入出力キューから要求を取り出す際、各々の要求に予め付加された上記優先度情報と上記記憶装置に記憶した上記優先度の変更情報とに基づき、優先的に取り出す要求を特定するステップとを有し、
上記サーバ計算機において上記優先度情報と上記優先度変更情報とに基づく順序で要求を上記入出力キューから取り出すことを特徴とするメッセージキューイング方法。
【請求項５】
入出力キューに滞留している複数の要求を、各々の要求に予め要求元が付加した優先度情報に基づき順次に取り出すメッセージキューイングシステムであって、
上記入出力キューに滞留している要求の要求元から通知される優先度変更情報を登録する優先度管理手段と、
上記入出力キューから要求を取り出す際、各々の要求に予め付加された上記優先度情報と上記優先度管理手段で登録した上記優先度変更情報とに基づき、優先的に取り出す要求を特定する特定手段と
を有し、上記優先度情報と上記優先度変更情報とに基づく順序で要求を入出力キューから取り出すことを特徴とするメッセージキューイングシステム。
【請求項６】
入出力キューに滞留しているネットワーク上の複数の計算機からの各要求を、各々の要求に予め要求元の計算機が付加した優先度情報に基づき順次に取り出すメッセージキューイングシステムであって、
上記入出力キューに滞留している要求の要求元の計算機からネットワークを介して通知される優先度変更情報を登録する優先度管理手段と、
上記入出力キューから要求を取り出す際、各々の要求に予め付加された上記優先度情報と上記優先度管理手段で登録した上記優先度変更情報とに基づき、優先的に取り出す要求を特定する特定手段と
を有し、上記優先度情報と上記優先度変更情報とに基づく順序で要求を入出力キューから取り出すことを特徴とするメッセージキューイングシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、メッセージキューの制御技術に係わり、特に、複数の計算機間でネットワークを経由してデータのやり取りを行いながらプログラムを実行する分散処理環境において、他計算機からの要求、及び応答を効率的に管理するのに好適なメッセージキュー管理技術に関するものである。
【０００２】
【従来の技術】
従来から、メッセージキューを用いてディスクへの書込み制御を行う技術が例えば特許文献１に記載され、また、メッセージキューを用いてコンピュータ装置内のタスク間またはコンピュータ装置間での送信異常の発生の有無及び状況の検知を行う技術が例えば特許文献２に記載されている。
【０００３】
さらに、複数のコンピュータからなる分散処理環境においては、メッセージキューに基づく処理順序の管理が行われている。以下、図６に基づき、従来の、他計算機からの要求および他計算機への応答のやり取りを入出力キューを介して行うときの優先度管理技術について説明する。
【０００４】
図６は、従来のメッセージキュー管理技術を用いた分散処理システムの構成例を示すブロック図である。
【０００５】
図６において、１０ａ，２０ａ，３０ａは計算機であり、各計算機１０ａ，２０ａ，３０ａは、各ネットワーク４０ａを介して接続されており、ネットワーク４０ａを経由してデータのやり取りを行いながらプログラムを実行する分散処理環境を構築している。
【０００６】
計算機２０ａ，３０ａにおけるクライアントプログラム２１ａ，３１ａは、他の計算機１０ａに対して要求を行うプログラムであり、計算機１０ａのサーバプログラム１２ａは、クライアントプログラム２１ａ，３１ａからの要求を受け付けて処理を行い、応答を返すプログラムである。
【０００７】
このような構成において、分散処理システムでは、例えば、計算機２０ａ上のクライアントプログラム２１ａからの要求は、ネットワーク４０ａを経由して計算機１０ａに伝えられる。
【０００８】
計算機１０ａでは、クライアントプログラム２１ａからの要求を直接サーバプログラム１２ａに渡すか、入力キュー管理部１３ａを経由してサーバプログラム１２ａに渡す。また、サーバプログラム１２ａが要求を処理した結果の応答は、直接クライアントプログラム２１ａに返すか、または出力キュー管理部１４ａを経由して返す。
【０００９】
キューを経由してやり取りを行う場合、それぞれの要求に優先度を付けてキューに登録することが可能である。複数のクライアントプログラム（２１ａ，３１ａ）からの要求が同時に計算機１０ａ上に到達し、入力キュー管理部１３ａに滞留した場合、優先度の高い要求は優先度の低い要求よりも先に処理される仕組みになっている。
【００１０】
すなわち、入力キュー管理部１３ａにおいては、要求をキューから取り出すときにそれぞれの要求に付加されている優先度が検査され、最も優先度の高い要求が一番初めにキューから取り出される。
【００１１】
このような技術はＵＮＩＸ（登録商標）のメッセージキューシステムコールにも採用されており、例えば、非特許文献１等で述べられている。
【００１２】
しかし、この従来技術では、メッセージキューの優先度の設定は要求をキューに投入する前に行われ、要求が一旦キューに滞留した後は要求元の状態が変化しても優先度の変更を行うことができない。
【００１３】
すなわち、クライアントプログラム２１ａの要求が入力キュー管理部１３ａに滞留した直後に状態が急に変化して緊急性を必要としなくなった場合にも、入力キュー管理部１３ａ上に滞留した要求の優先度を下げることはできない。
【００１４】
そのため、すでに緊急性を必要としなくなった要求がサーバ上で先に処理されてしまうという問題が存在した。
【００１５】
【特許文献１】
特開２００２−２４５７１４号公報
【特許文献２】
特開２００２−１８９６０５号公報
【非特許文献１】
Ｗ．リチャード・スティーヴンス著、篠田陽一訳、「ＵＮＩＸ（登録商標）ネットワークプログラミング  ３．９メッセージキュー」（株式会社トッパン発行）
【００１６】
【発明が解決しようとする課題】
解決しようとする問題点は、従来の技術では、要求が一旦入出力キューに滞留した後は、要求元の計算機の状態が変化しても優先度を変更することができない点である。
【００１７】
本発明の目的は、これら従来技術の課題を解決し、例えば、要求を依頼した側の状態が変化して緊急性を必要としなくなった場合には、入出力キュー上に滞留している要求の優先度を動的に下げることによって、他の要求のレスポンスタイムを向上させ、システム全体で効率良く要求を処理することを可能とすることである。
【００１８】
【課題を解決するための手段】
上記目的を達成するため、本発明では、計算機（１０）において、入出力キュー（１６）から要求を取り出す際、要求中に付加された従来の優先度情報だけでなく、新たに付与された要求元優先度管理部（１１）で管理する優先度情報（優先度変更情報）も参照して優先度を決定する。この要求元優先度管理部（１１）では、ネットワーク（４０）を介して要求元の計算機（２０，３０）から送られてきた優先度を変更する情報を直接受信して管理する。
【００１９】
【発明の実施の形態】
以下、本発明の実施の形態を、図面により詳細に説明する。
【００２０】
図１は、本発明に係わるメッセージキュー管理システムを設けた分散処理装置の構成例を示すブロック図であり、図２は、本発明に係わるメッセージキュー管理システムの第１の動作例を示す説明図、図３は、本発明に係わるメッセージキュー管理システムの第２の動作例を示す説明図、図４は、本発明に係わるメッセージキュー管理システムの第３の動作例を示す説明図、図５は、本発明に係わるメッセージキュー管理システムの第４の動作例を示す説明図である。
【００２１】
本発明に係わるメッセージキュー管理システムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や主メモリ、表示装置、入力装置、外部記憶装置からなるコンピュータ構成で実現され、例えば光ディスク駆動装置等を介してＣＤ−ＲＯＭ等の光ディスクに記録されたプログラムやデータを外部記憶装置内にインストールした後、この外部記憶装置から主メモリに読み込みＣＰＵで処理することにより、図１に示す各計算機１０，２０，３０内に各処理部が構築される。
【００２２】
図１においては、ネットワーク４０で接続された計算機１０と計算機２０，３０で分散処理環境が構成されており、計算機１０には、サーバプログラム１２、入力キュー管理部１３、出力キュー管理部１４、要求元優先度管理部１１が設けられている。
【００２３】
また、計算機２０には、クライアントプログラム２１、優先度管理部２２が設けられており、同様に、計算機３０には、クライアントプログラム３１、優先度管理部３２が設けられている。
【００２４】
このように、本例のメッセージキュー管理システムでは、図６で示した従来のメッセージキュー管理システムに対し、計算機１０における要求元優先度管理部１１と、計算機２０，３０における優先度管理部２２，３２を設けた構成となっている。
【００２５】
以下、図２を用いて、計算機２０，３０のクライアントプログラム２１，３１からの要求が、計算機１０における入力キュー管理部１３でどのように処理されるかを説明する。
【００２６】
本図２において、５０〜５２に示すように、計算機１０の入力キュー管理部１３において滞留・管理している各計算機２０，３０それぞれの要求ａ〜ｃには、優先度の情報（優先度：１，３）と計算機の識別情報（計算機：計算機２０，３０）が付加されている。
【００２７】
この優先度の情報（優先度：１，３）とは、その要求の優先度を表わすものである。ここでは例として「１」〜「５」までの整数値を優先度として用いている。さらに優先度の数値は、大きい数値よりも小さい数値の方が高い優先度を示すものとする。
【００２８】
また、計算機の識別情報（計算機：計算機２０，３０）とは、要求元の計算機を特定するための情報である。この計算機識別情報（計算機：計算機２０，３０）は、計算機１０のサーバプログラム１２が要求を処理した後にどの計算機に応答を返すかを決定するときに使用する。
【００２９】
計算機１０の要求元優先度管理部１１は、要求元優先度管理テーブル１５を具備しており、この要求元優先度管理テーブル１５を用いて要求元の計算機（２０，３０）毎に優先度を管理している。
【００３０】
尚、要求元優先度管理テーブル１５で管理する優先度の個数は１つの計算機（２０，３０）に対して１個、すなわち、各計算機２０，３０単位で優先度を管理しても良いし、各計算機（２０，３０）の各要求毎に複数個存在させても良い。図２に示す例では、１つの計算機（２０，３０）に対して１個の優先度を設定している。
【００３１】
また、要求元優先度管理テーブル１５で管理する優先度の値は、要求中に付加されている優先度情報との相対値にしても良いし、また計算機（２０，３０）毎に固定の値としても良い。図２に示す例では、要求中に付加されている優先度情報との相対値を設定しており、計算機２０、計算機３０からの要求に対する相対的な優先度を±０としている。
【００３２】
計算機１０の入力キュー管理部１３では、３個の要求（要求ａ、要求ｂ、要求ｃ）が入力キュー１６の中に滞留している状態となっている。また、入力キュー１６には、それぞれの要求が▲１▼要求ａ（５０）、▲２▼要求ｂ（５１）、▲３▼要求ｃ（５２）の順番で到着していることを示している。
【００３３】
要求ａ（５０）は計算機２０からの要求で、優先度３の値を持っている。また要求ｂ（５１）は計算機３０からの要求で、優先度１の値を持っている。そして、要求ｃ（５２）は計算機２０からの要求で、優先度３の値を持っている。これら３つの要求ａ５０〜ｃ５２が、サーバプログラム１２で処理されるのを待ち合わせている状態である。
【００３４】
入力キュー管理部１３は、入力キュー１６から要求（ａ５０〜ｃ５２）を取り出してサーバプログラム１２に渡す場合、まず、入力キュー１６に登録されている全ての要求（ａ５０〜ｃ５２）の優先度情報を検査する。
【００３５】
この際、入力キュー管理部１３は、要求（ａ５０〜ｃ５２）の中の優先度情報の値に、要求元優先度管理テーブル１５に登録されている要求元計算機に対応した優先度の値を加えたものを最終的な優先度の値として使用する。
【００３６】
この最終的な優先度の値が最も小さいもの、すなわち最も優先度が高いものを一番初めにキューから取り出すことにする。同値の場合は、先に登録された要求を優先する。このアルゴリズムに従うと、図２に示す３個の要求（ａ５０〜ｃ５２）は、要求ｂ５１、要求ａ５０、要求ｃ５２の順番で入力キュー１６から取り出されることになる。
【００３７】
次に、図３を用いて、計算機１０における要求元優先度管理部１１の管理制御技術について説明する。図３においては、サーバ側の計算機１０における要求元優先度管理部１１と、クライアント側の計算機２０，３０のそれぞれにある優先度管理部２２，３２との関係を示している。
【００３８】
ここでは、計算機３０からの要求に対する優先度を下げたい場合を考える。計算機３０では、優先度の管理は優先度管理部３２で行っている。計算機３０は、操作者等からの指示に基づき、優先度管理テーブル３３にある優先度の値を「±０」から「＋３」に変更すると、その後、この値をネットワーク４０を経由して計算機１０の要求元優先度管理部１１に通知する。
【００３９】
通知を受けた計算機１０の要求元優先度管理部１１では、要求元優先度管理テーブル１５における計算機３０に対応する欄の優先度の値を「±０」から「＋３」に変更・設定する。これにより、計算機３０からの要求は、入力キュー１６から取り出される時点で優先度が３段階下げられて処理されることになる。
【００４０】
このように、計算機３０の優先度を「±０」から「＋３」に変更した後の計算機１０における管理状態を、図４において示している。
【００４１】
図４に示すように、この場合、サーバプログラム１２上で実行されるであろう要求ａ５０〜ｃ５２の順番は、▲１▼要求ａ５０、▲２▼要求ｃ５２、▲３▼要求ｂ５１となる。
【００４２】
このように、図２に示した計算機１０の入力キュー管理部１３における入力キュー１６に滞留した時点では最も優先度の高かった要求ｂ５１の優先度は、図３に示す計算機３０における優先度管理３２での操作に基づき要求元優先度管理部テーブル１５の情報を変更することによって、最も低い値に変更されたことがわかる。
【００４３】
尚、この要求元優先度管理部テーブル１５の変更タイミングは、それぞれの計算機２０，３０上で変更があった時点でその優先度管理部２２，３２から通知を受けるのではなく、計算機１０の要求元優先度管理部１１から、一定時間毎に全ての計算機（２０，３０，…）上の優先度管理部２２，３２，…に対して問い合わせを行なっても良い。
【００４４】
図５には、このように計算機１０の要求元優先度管理部１１から、一定時間毎に全ての計算機（２０，３０，…）上の優先度管理部２２，３２，…に対して問い合わせを行なうことで、要求元優先度管理部テーブル１５の変更を行う際の動作を示している。
【００４５】
例えば、忙しく動作している計算機２０からの要求は優先度を低く設定し、空いている（処理を行っていない）計算機３０からの要求に対しては優先度を高く設定したい場合を考える。
【００４６】
要求元優先度管理部１１が一定時間毎に各計算機２０，３０上の優先度管理部２２，３２に対して問い合わせを行ない、それぞれの優先度管理部２２，３２がその時点の計算機２０，３０のＣＰＵ利用率を取得して優先度に変換する。
【００４７】
この優先度を、計算機１０の要求元優先度管理部１１に応答することで、要求元優先度管理部１１の要求元優先度管理管理テーブル１５には常に新しい優先度情報が設定される。これにより入力キュー１３に滞留している要求（ａ〜ｃ）を、最新の状態を反映した優先度で取り出すことができるようになる。
【００４８】
以上は、入力キュー管理部１３に対する管理・制御処理動作を説明したが、図１における出力キュー管理部１４についても、入力キュー管理部１３と全く同様にして、その管理・制御を行うことができる。
【００４９】
例えば、出力キュー管理部１４において、出力キューから要求を取り出すときに、要求元優先度管理部１１の優先度情報を参照することによって、それぞれの計算機２０，３０に応答を返す順番を動的に変更することが可能になる。
【００５０】
以上、図１〜図５を用いて説明したように、本例では、サーバ側の計算機１０は、各クライアント側の計算機２０，３０からネットワーク４０を介して送信されてきた優先度情報を直接受信して、要求元優先度管理部１１において要求元優先度管理テーブル１５で管理し、入出力キューから要求を取り出す際、入力キュー管理部１３および出力キュー管理部１４において、要求元優先度管理部１１が要求元優先度管理テーブル１５で管理している優先度情報を参照し、各要求（ａ５０〜ｃ５２）中に付加された従来の優先度情報だけでなく、新たに要求元優先度管理部１１の優先度情報も参照して優先度を決定する。
【００５１】
このことにより、計算機２０のクライアントプログラム２１からの要求が、サーバ側の計算機１０の入力キュー管理部１３に滞留した直後に例えば計算機２０の状態が急に変化して緊急性を必要としなくなった場合には、入力キュー管理部１３上に滞留した当該要求の優先度を下げることができ、すでに緊急性を必要としなくなった要求がサーバ上で先に処理されてしまうという問題は発生しない。
【００５２】
尚、本発明は、図１〜図５を用いて説明した例に限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能である。例えば、本例では、ネットワーク４０を介して接続されたサーバ側の計算機１０とクライアント側の計算機２０，３０からの分散処理システム構成としたが、複数のＣＰＵがバス接続された構成のシステムにも適用可能である。
【００５３】
また、計算機２０，３０をインターネットで接続された各ＩＳＰ（Ｉｎｔｅｒｎｅｔ  Ｓｅｒｖｉｃｅｓ  Ｐｒｏｖｉｄｅｒ）におけるＷｅｂサーバ装置とし、計算機１０を、各Ｗｅｂサーバ装置の例えばアプリケーションサーバプログラムあるいはＣＧＩ（Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ）プログラムからの要求に応じてデータ処理するデータベースとする構成としても良い。
【００５４】
また、本例のシステムを実現するコンピュータ構成例としては、キーボードや光ディスクの駆動装置の無いコンピュータ構成としても良い。また、本例では、光ディスクを記録媒体として用いているが、ＦＤ（Ｆｌｅｘｉｂｌｅ  Ｄｉｓｋ）等を記録媒体として用いることでも良い。また、プログラムのインストールに関しても、通信装置を介してネットワーク経由でプログラムをダウンロードしてインストールすることでも良い。
【００５５】
【発明の効果】
本発明によれば、要求が計算機上の入出力キューに一旦滞留した後でも、その要求（キュー）の優先度の変更を行うことができ、例えば、要求を依頼した計算機の状態が変化して緊急性を必要としなくなった場合には、入出力キュー上に滞留している当該要求の優先度を動的に下げることによって、他の要求のレスポンスタイムを向上させることが可能となる。この結果、システム全体で効率良く要求を処理することが可能となり、特に、サーバプログラムの処理時間が長く、入出力キュー上に要求が長時間滞留するようなシステムで高い効果を発揮する。
【図面の簡単な説明】
【図１】本発明に係わるメッセージキュー管理システムを設けた分散処理装置の構成例を示すブロック図である。
【図２】本発明に係わるメッセージキュー管理システムの第１の動作例を示す説明図である。
【図３】本発明に係わるメッセージキュー管理システムの第２の動作例を示す説明図である。
【図４】本発明に係わるメッセージキュー管理システムの第３の動作例を示す説明図である。
【図５】本発明に係わるメッセージキュー管理システムの第４の動作例を示す説明図である。
【図６】従来のメッセージキュー管理技術を用いた分散処理システムの構成例を示すブロック図である。
【符号の説明】
１０：計算機（サーバ）、１１：要求元優先度管理部、１２：サーバプログラム、１３：入力キュー管理部、１４：出力キュー管理部、１５：要求元優先度管理テーブル、１６：入力キュー、２０，３０：計算機（クライアント）、２１，３１：クライアントプログラム、２２，３２：優先度管理部、２３，３３：優先度管理テーブル、４０：ネットワーク、５０：要求ａ、５１：要求ｂ、５２：要求ｃ、１０ａ：計算機（サーバ）、１２ａ：サーバプログラム、１３ａ：入力キュー管理部、１４ａ：出力キュー管理部、２０ａ，３０ａ：計算機（クライアント）、２１ａ，３１ａ：クライアントプログラム、４０ａ：ネットワーク。
【図１】
2004220083.tif 000003
【図２】
2004220083.tif 000004
【図３】
2004220083.tif 000005
【図４】
2004220083.tif 000006
【図５】
2004220083.tif 000007
【図６】
2004220083.tif 000008