(57)【要約】【課題】  主機能部の輻輳監視と共に従機能部も輻輳状態に陥った際に自身で輻輳回復処理を行う輻輳制御システム、輻輳制御方法および輻輳制御プログラムを提供する。【解決手段】輻輳制御システム１０は、情報処理実行部１１１、輻輳監視部１１２および従機能部１２〜１５を備え、輻輳監視部１１２は、輻輳状態か非輻輳状態かを判定する手段１１２ｈと、判定内容を情報処理実行部へ通知する手段１１２ｉとを有し、従機能部１２〜１５は、輻輳状態か非輻輳状態かを判定する手段１２ａと、判定した内容を情報処理実行部へ通知する手段１２ｆとを有し、情報処理実行部１１１は、輻輳監視部が故障した場合に自ら輻輳状態か非輻輳状態かを判定する手段１１１ｆと、輻輳監視部、従機能部および自らが判定した内容が輻輳状態を示す場合に処理を抑制する手段１１１ｅを有する。【選択図】      図１
2015185054.tif 000002
【特許請求の範囲】
【請求項１】
外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、前記情報処理実行部に併設され前記処理メッセージ数を監視する輻輳監視部と、前記情報処理実行部および前記輻輳監視部に接続された、前記処理メッセージに含まれるタスクを実行する従機能部
とを備えた輻輳制御システムであって、
前記輻輳監視部は、
前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
この判定した内容を前記情報処理実行部へ通知する手段
とを有し、前記従機能部は、
前記処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、前記未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
この判定した内容を前記情報処理実行部へ通知する手段
とを有し、前記情報処理実行部は、
前記輻輳監視部が故障した場合に、自ら、前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
前記輻輳監視部および前記従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に前記処理メッセージに対する処理を抑制する手段
とを有することを特徴とする輻輳制御システム。
【請求項２】
前記情報処理実行部は、前記輻輳監視部が故障した場合に前記閾値を低く設定し直す手段を更に有することを特徴とする請求項１に記載の輻輳制御システム。
【請求項３】
前記情報処理実行部及び前記輻輳監視部は、通信回線を介して接続され相互に通信可能
な異なる情報処理装置にそれぞれ別々に設けられた、
請求項１又は２に記載の輻輳制御システム。
【請求項４】
前記情報処理実行部は、前記輻輳監視部が故障した場合に、前記通信回線を介して接続され相互に通信可能な他の前記情報処理装置に、外部から送り込まれた前記処理メッセージに対する処理の一部を移行する手段
を更に有することを特徴とする請求項３記載の輻輳制御システム。
【請求項５】
前記情報処理実行部及び前記輻輳監視部は、同一の中央演算処理装置でプログラム制御により動作する機能部である、
請求項１又は２記載の輻輳制御システム。
【請求項６】
外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、前記情報処理実行部に併設され前記処理メッセージ数を監視する輻輳監視部と、前記情報処理実行部および前記輻輳監視部に接続された、前記処理メッセージに含まれるタスクを実行する従機能部を備えたシステムに用いられる輻輳制御方法であって、
前記輻輳監視部が、
前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
この判定した内容を前記情報処理実行部へ通知する工程
を有し、前記従機能部は、
前記処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、前記未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
この判定した内容を前記情報処理実行部へ通知する工程
とを有し、前記情報処理実行部は、
前記輻輳監視部が故障した場合に、自ら、前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
前記輻輳監視部および前記従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に前記処理メッセージに対する処理を抑制する工程
とを有することを特徴とする輻輳制御方法。
【請求項７】
前記情報処理実行部は、前記輻輳監視部が故障した場合に前記閾値を低く設定し直す工程を更に有することを特徴とする請求項６に記載の輻輳制御方法。
【請求項８】
前記従機能部の判定する工程は、前記処理未完了のタスクのうち、リアルタイム性に対する優先度は高くないが、他のタスクの稼動の影響を受けやすいタスクをカウントする
ことを特徴とする請求項６又は７に記載の輻輳制御方法。
【請求項９】
前記情報処理実行部及び前記輻輳監視部は、通信回線を介して接続され相互に通信可能な異なる情報処理装置にそれぞれ別々に設けられた
ことを特徴とする請求項８に記載の輻輳制御方法。
【請求項１０】
前記情報処理実行部は、前記輻輳監視部が故障した場合に、前記通信回線を介して接続され相互に通信可能な他の前記情報処理装置に、外部から送り込まれた前記処理メッセージに対する処理の一部を移行する工程
を更に有することを特徴とする請求項６又は７に記載の輻輳制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理対象の増大に伴い生じた輻輳を制御する輻輳制御システム及び輻輳制御方法に関する。
【背景技術】
【０００２】
情報処理装置を構成する各機能部は、通常の情報処理を行う他に、当該情報処理装置やプロセッサ（ＣＰＵ：Central Processing Unit）に生じ得る輻輳状況を監視して、輻輳発生を回避し、発生した場合には輻輳から回復する必要がある。例えば、イントラネットのパケット中継を行う装置は、輻輳を監視しつつ、パケットトラヒックの増大に伴い装置の処理能力を拡大することで、装置の処理能力を上回るトラヒックによって通信障害が発生するのを抑制し、輻輳発生の回避を行う。
【０００３】
しかしながら、通常処理を行う主機能部で、並行して輻輳監視や輻輳回避を実行すると、輻輳監視や輻輳回避そのものの処理負荷によって、情報処理装置自体の処理能力（パフォーマンス）が劣化する。また、通常処理を行うプロセッサ周辺に輻輳監視を行う専用のハードウェア機能部を設置して輻輳監視を行う場合には、上記機能部の設置に対するコストが増大する。
【０００４】
これに対し、主機能部の輻輳監視を主機能部の周辺に位置する機能部、例えば現用予備構成の機能部であれば待機系主機能部が、現用系機能部の輻輳状況を推定することにより、主機能部の処理能力を劣化させることなく輻輳監視を行える手法が開示されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−２１２８６２公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１の手法では、主機能部の輻輳監視については記載されているが、従機能部の輻輳状態の監視や、輻輳状態に陥った時にどう回復させるかについては開示していなかった。従機能部もプロセッサによるマルチタスク処理を行うため、主機能部と同様に輻輳状態に陥ることがある。よって、システム全体の輻輳を回避するためには、従機能部の輻輳監視および輻輳回復の処理も必要であった。
【０００７】
本発明は上記の課題に鑑みてなされたものであり、主機能部の輻輳監視と共に従機能部の輻輳監視を行い、従機能部が輻輳状態に陥った際に自身で輻輳回復処理を行う輻輳制御システムおよび輻輳制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の第１の特徴は、外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、情報処理実行部に併設され処理メッセージ数を監視する輻輳監視部と、情報処理実行部および輻輳監視部に接続された、処理メッセージに含まれるタスクを実行する従機能部とを備えた輻輳制御システムであって、輻輳監視部は、（ａ）処理メッセージに対する処理時間を推定し、この処理時間、処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、（ｂ）この判定した内容を情報処理実行部へ通知する手段とを有し、従機能部は、（ｃ）処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、（ｄ）この判定した内容を情報処理実行部へ通知する手段とを有し、情報処理実行部は、（ｅ）輻輳監視部が故障した場合に、自ら、処理メッセージに対する処理時間を推定し、この処理時間、処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、（ｆ）輻輳監視部および従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に処理メッセージに対する処理を抑制する手段とを有する輻輳制御システムであることを要旨とする。
【０００９】
本発明の第２の特徴は、外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、情報処理実行部に併設され処理メッセージ数を監視する輻輳監視部と、情報処理実行部および輻輳監視部に接続された、処理メッセージに含まれるタスクを実行する従機能部を備えたシステムに用いられる輻輳制御方法であって、輻輳監視部が、（ａ）処理メッセージに対する処理時間を推定し、この処理時間、処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、（ｂ）この判定した内容を情報処理実行部へ通知する工程を有し、従機能部は、（ｃ）処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、（ｄ）この判定した内容を情報処理実行部へ通知する工程とを有し、情報処理実行部は、（ｅ）輻輳監視部が故障した場合に、自ら、処理メッセージに対する処理時間を推定し、この処理時間、処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、（ｆ）輻輳監視部および従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に処理メッセージに対する処理を抑制する工程とを有する輻輳制御方法であることを要旨とする。
【発明の効果】
【００１０】
本発明の輻輳制御システムおよび輻輳制御方法によれば、主機能部の輻輳監視と共に、従機能部の輻輳監視を行い、輻輳状態に陥った際に輻輳回復処理を行う。これによりシステム全体の輻輳発生を回避し、システムの安定度を向上させることができる。
【図面の簡単な説明】
【００１１】
【図１】第一の実施形態の輻輳制御システムの実施形態を示す概略ブロック図である。
【図２】現用主機能部の内部構成を示す図である。
【図３】予備主機能部の内部構成を示す図である。
【図４】負荷判定記憶部の内部データを示す図である。
【図５】従機能部の内部構成を示す図である。
【図６】従機能部でのタスク処理の概略を示す図である。
【図７】従機能部でのタスク処理の概略を示す図である。
【図８】予備主機能部の動作を示すフロー図である。
【図９】現用主機能部の動作を示すフロー図である。
【図１０】従機能部の動作を示すフロー図である。
【図１１】第二の実施形態の輻輳制御システムの実施形態を示す概略ブロック図である。
【図１２】情報処理部の内部構成を示す図である。
【図１３】輻輳監視部の内部構成を示す図である。
【図１４】情報処理部の動作を示すフロー図である。
【図１５】輻輳監視部の動作を示すフロー図である。
【発明を実施するための形態】
【００１２】
次に図面を参照して、本発明の実施形態を説明する。以下の図面の記載において、同一又は類似の部分には同一又は類似の符号を付している。ただし、図面は模式的なものであることに留意すべきである。更に以下に記載される実施形態は一例であり、その本質を同一とする範囲において適宜変更可能であることに留意すべきである。
【００１３】
また、以下の実施形態の説明において、各装置の各構成要素は、ハードウェア単位の構成ではなく、機能単位のブロックを示している。各装置の各構成要素は、任意のコンピュータのＣＰＵ、メモリ、メモリにロードされたプログラム、そのプログラムを格納するハードディスクなどの記憶メディア、ネットワーク接続用インタフェースを中心にハードウェアとソフトウェアの任意の組合せによって実現される。そして、その実現方法、装置には様々な変形例がある。
＜第１の実施形態＞
（輻輳制御システム）
本発明の第１の実施形態に係る輻輳制御システム１０は、図１に示すように、主機能部１１と複数の従機能部１２、１３、１４、１５を備えている。主機能部１１は、現用予備構成となっており、現用主機能部１１１および予備主機能部１１２を備える。現用主機能部１１１は、所定の処理を要求するメッセージ(以下「処理メッセージ」と記載)を、主機能部１１に処理を依頼する外部の端末（以下単に「外部」と記載する）から受信し、この処理メッセージに対して所定の情報処理を行う情報処理実行部として機能する。予備主機能部１１２は、現用主機能部１１１での処理メッセージ数を監視する輻輳監視部として機能する。現用主機能部１１１および予備主機能部１１２は、同一のＣＰＵ（Central Processing Unit）で動作する。ＣＰＵを共有する為、現用主機能部の輻輳状態を、専用のハードウェアを設けることなく、予備主機能部が監視することができる。尚、処理メッセージの内、ある特定の処理に対しては、現用主機能部１１１は、システム内部の従機能部１２〜１５に対して処理を依頼する。
【００１４】
各従機能部１２〜１５は、現用主機能部１１１からのメッセージを受信すると所定処理を実行し、全ての処理結果を現用主機能部１１１および予備主機能部１１２の２箇所へ送信する。現用主機能部１１１および予備主機能部１１２と、各従機能部１２〜１５との間の通信線は全てワイヤードオアで接続されている。更に、従機能部１２〜１５は、自身の受信メッセージ数をカウントして輻輳を監視する。更に、輻輳が発生した場合、自装置保護のために、現用主機能部１１１へ輻輳の発生状態を通知したり、現用主機能部１１１からの受信メッセージを破棄したりする。
（現用主機能部）
現用主機能部１１１は、図２に示すように、外部処理要求受信部１１１ａ、内部処理要求送信部１１１ｂ、内部処理結果受信部１１１ｃ、外部処理結果送信部１１１ｄ、輻輳処理部１１１ｅ、臨時輻輳監視部１１１ｆ、臨時閾値設定部１１１ｇ、メッセージ判別処理部１１１ｈ、処理実行部１１１ｉ、臨時輻輳処理記憶部１１１ｊおよび重要度記憶部１１１ｋ等を備える。
【００１５】
外部処理要求受信部１１１ａは、外部より処理メッセージを受信する。内部処理要求送信部１１１ｂは、外部から受信する処理メッセージのうち、従機能部１２〜１５に依頼すべき処理メッセージを、従機能部１２〜１５に送信する。内部処理結果受信部１１１ｃは、従機能部１２〜１５より処理結果を受信する。処理実行部１１１ｉは、外部より受ける処理メッセージの内容を実行する。また処理実行部１１１ｉは、従機能部１２〜１５から受け取る処理結果を用いて、外部より受ける処理メッセージの内容を実行する。外部処理結果送信部１１１ｄは、処理メッセージに対する実行結果を、外部へ送信する。
【００１６】
臨時輻輳処理記憶部１１１ｊは、予備主機能部１１２が故障した場合に、自らの輻輳状態を監視するために使用する記憶部であり、図３の推定走行時間記憶部１１２ｊと負荷判定記憶部１１２ｋと同一のデータを格納する。尚、臨時閾値とは、予備主機能部１１２が故障した場合に自らで監視処理を行う場合の閾値であるが、この臨時閾値は予備主機能部１１２の閾値記憶部１１２ｃ内の閾値と比べて低めに設定される。これは現用主機能部１１１内で通常の情報処理と輻輳監視を同時に行う環境下で、ＣＰＵの処理能力が限界を超えないようにするためである。
【００１７】
重要度記憶部１１１ｋは、メッセージの種類毎にその重要度を判定するための重要度表を格納する。
【００１８】
臨時輻輳監視部１１１ｆは、予備主機能部１１２が故障した場合に、自らの輻輳状態を監視する。臨時輻輳監視部１１１ｆは、外部より依頼された処理メッセージに対する処理時間を推定し、推定処理時間、処理メッセージ数および臨時閾値記憶部１１１ｇに格納される閾値に基づき、輻輳状態か非輻輳状態かを判定する。具体的には、後述する予備主機能部１１２の受信カウンタ部１１２ａ、メッセージ種別判定部１１２ｂ、周期タイマ部１１２ｃ、走行時間算出部１１２ｄ、累計カウンタ部１１２ｅ、カウンタ比較部１１２ｆ、負荷状況算出部１１２ｇ、負荷判定部１１２ｈと同一機能を備える。なお、予備主機能部１１２の故障は、例えば予備主機能部１１２に対する定期的な通信が断絶することによって、現用主機能部１１１側で認識することができる。
【００１９】
輻輳処理部１１１ｅは、輻輳防止または解消の為、メッセージ処理を抑制する。具体的には、処理数を一時的に減らすために外部から新たな処理メッセージを受け付けないようにしたり、処理スピードを一時的に落としたりする。処理の抑制は、予備主機能部１１２から輻輳状態と判定されたとの結果を受けた場合、自らの臨時輻輳監視部１１１ｆが輻輳状態と判定した場合、および従機能部１２〜１５から輻輳状態であると通知された場合に行われる。更に輻輳処理部１１１ｅは、予備主機能部１１２から輻輳状態通知を受けているか、所定間隔毎にチェックする。所定間隔輻輳状態通知を受けていない場合は、予備主機能部１１２が停止していると判断し、自己の臨時輻輳監視部１１１ｆを起動させる。
【００２０】
臨時閾値設定部１１１ｇは、図３の閾値記憶部１１２ｃに格納される閾値を基に、輻輳状態を考慮した、閾値より低い値の臨時閾値を設定し、臨時閾値記憶部１１１ｈに格納する。
【００２１】
メッセージ判別処理部１１１ｈは、予備主機能部１１２から輻輳状態にあると通知された場合に、各従機能部１２〜１５から受け取る処理メッセージの種別およびその重要度を、重要度記憶部１１１ｋ内の重要度表を基に判別し、その重要度に応じて各メッセージの処理を行う。例えば、重要度の低い処理メッセージについては、現用主機能部１１１における実行処理にかかる負荷を軽減する為、破棄または異常終了とする処理（輻輳回避処理）を行う。重要度の低いメッセージとしては、例えば、新たな通信リンクの確立要求に属するもの等がある。重要度の高いメッセージと判定された処理メッセージに対しては、輻輳状態であっても通常の処理を行う。なお、重要度の高いメッセージとは、例えば、通信中の通信リンクの解放要求や保守監視要求に属するもの等がある。なお、輻輳状態を輻輳の度合いに応じて複数の状態に細分化し、メッセージ判別部１１１ｈが、これに対応して細分化された重要度表を基に、メッセージ重要度を判定してもよい。これにより、より柔軟な輻輳回避制御が可能となる。
【００２２】
尚、上述した各部は図示しないコンピュータのＣＰＵ（Central Processing Unit）等に格納されている。または図示しないＲＯＭ（Read Only Memory）やＲＡＭ(Random Access Memory)に格納されて、適宜ＣＰＵが演算処理を行うことでこれらの処理は実行される。
（予備主機能部）
予備主機能部１１２は、図３に示すように、受信カウンタ部１１２ａ、メッセージ種別特定部１１２ｂ、周期タイマ部１１２ｃ、走行時間算出部１１２ｄ、累計カウンタ部１１２ｅ、カウンタ比較部１１２ｆ、負荷量算出部１１２ｇ、負荷判定部１１２ｈ、判定結果通知部１１２ｉ、推定走行時間記憶部１１２ｊおよび負荷判定記憶部１１２ｋ等を備えている。
【００２３】
推定走行時間記憶部１１２ｊは、現用主機能部１１１の推定走行時間表と、推定走行時間の累積値を格納する。推定走行時間表とは、従機能部１２〜１５から受信する処理メッセージの種別と、現用主機能部１１１がこのメッセージ種別の実行処理にかかる時間の推定値（以下「ＣＰＵ走行時間」という）とを対応付けてリスト化した表である。推定走行時間の累積値とは、複数の処理メッセージが処理される場合の、各処理に要すると推定されるＣＰＵの走行時間を全て合算した値である。
【００２４】
負荷判定記憶部１１２ｋは、現用主機能部１１１の輻輳状態を判定するための負荷の閾値および負荷判定表を格納する。
【００２５】
受信カウンタ部１１２ａは、各従機能部１２〜１５から受信する処理メッセージの数をカウントする。
【００２６】
メッセージ種別判定部１１２ｂ、各従機能部１２〜１５から受信する処理メッセージのメッセージ種別を判定する。メッセージ種別判定部１１２ｂは、判定結果に基づいて、受信する処理メッセージのうち受信メッセージとしてカウントするメッセージと、カウントしないメッセージとを選別する機能を有していてもよい。
【００２７】
周期タイマ部１１２ｃは、主機能部１１が処理メッセージに対して行う処理の周期を、予め設定された測定周期に基づき計測する。
【００２８】
累計カウンタ部１１２ｅは、現用主機能部１１１にて実行された処理メッセージの総数をカウントする。
【００２９】
走行時間算出部１１２ｄは、各メッセージ種別に対応したＣＰＵ走行時間を、推定走行時間記憶部１１２ｊ内の推定走行時間表を参照して取得し、取得された推定走行時間を、これまで実行された走行時間の累積値である走行時間累積値に加算して、走行時間累計値を更新する。各メッセージとは、予め設定された測定周期内で実行された処理メッセージを指す。
【００３０】
カウンタ比較部１１２ｆは、取得された各推定走行時間を走行時間累計値に対して加算するごとに累計カウンタの数値を「１」増やし、累計カウンタと受信カウンタの数を比較する。ここで、受信カウンタの値と累計カウンタの値が等しいか否かを判定することにより、受信カウンタにカウントされた処理メッセージ全てについて走行時間が算出され、累計カウンタに加算されたか否かの判定を行う。
【００３１】
負荷量算出部１１２ｇは、更新された走行時間累積値に基づいて、測定周期内で現用主機能部１１１にかかると推定される負荷量（以下「テンポラリ負荷量」という）を算出する。テンポラリ負荷量を推測することで、予備主機能部１１２は、受信された各処理メッセージのメッセージ種別を迅速に判定することができ、更には、推定走行時間を迅速に算出することができる。
【００３２】
負荷判定部１１２ｈは、算出されたテンポラリ負荷量と、負荷判定記憶部１１２ｋ内の負荷の閾値を比較し、現用主機能部１１１における負荷レベルの状態を図４の負荷判定記憶部１１２ｋ内の負荷判定表に基づき判定する。負荷判定表には、現在算出されたテンポラリ負荷量が負荷判定表の低負荷、中負荷、又は高負荷のいずれに属するかを、現在より一つ前の測定周期の負荷状況に基づき判定可能に記載されている。ここでテンポラリ負荷量の判定結果の１つである中負荷は、低負荷、高負荷の間に設定され、非輻輳状態の負荷レベルであることを示す。
【００３３】
例えば、図４に示すように、現在の測定周期で現用主機能部１１１が非輻輳状態であった場合は、この後の測定周期で低負荷であれば非輻輳状態、中負荷であれば非輻輳状態と判定される。また、現用主機能部１１１が高負荷である場合には、予め設定された閾値以上の負荷がかかっている場合、輻輳状態と判定され、予め設定された閾値未満であれば、非輻輳状態と判定される。
【００３４】
一方、現在の測定周期で現用主機能部１１１が輻輳状態であった場合は、この後の周期で現用主機能部１１１が低負荷である場合、予め設定された閾値以上の負荷がかかっている場合は、輻輳状態と判定、負荷が閾値未満であれば、非輻輳状態と判定される。また、後の測定周期で中負荷または高負荷であると判定された場合は、いずれの場合も輻輳状態と判定される。
【００３５】
なお、上記のように、連続する測定周期で非輻輳状態と輻輳状態の間の状態遷移が行われる場合には、過度に状態遷移が発生するのを防ぐ為、所定時間間隔に、所定回数連続して輻輳状態が通知された場合に輻輳状態であると判断することが好ましい。また、所定時間間隔に、所定回数連続して非輻輳状態が通知された場合に非輻輳状態であると判断することが好ましい。これには、低負荷、中負荷および高負荷間の遷移、即ち輻輳状態の遷移に数階の負荷段数（以下「保護段数」と記載）を設け、所定回数の状態通知を受ける毎に保護段階を上げるように設定する。これにより輻輳状態及び非輻輳状態が頻繁に更新されるのを軽減することができる。
【００３６】
ただし、非輻輳から輻輳状態への状態遷移が遅くなると、その分高い負荷が長い時間継続し、現用主機能部１１１の安定動作に支障をきたす恐れがあるので、非輻輳から輻輳状態への遷移に用いる保護段数は小さく設定してもよい。
【００３７】
判定結果通知部１１２ｉは、輻輳状態又非輻輳状態と判定された場合に、その判定結果を現用主機能部１１１へ通知する。これにより、上記通知に応じて現用主機能部１１１が迅速に輻輳回避動作を実行するのを促す。
【００３８】
尚、上述した各部は図示しないコンピュータのＣＰＵ等に格納されている。または図示しないＲＯＭやＲＡＭに格納されて、適宜ＣＰＵが演算処理を行うことでこれらの処理は実行される。ここで、図２と図３に示す機能ブロック図は同一のＣＰＵ、ＲＯＭおよびＲＡＭ内に存在することに留意すべきである。
（従機能部）
従機能部は図５に示すように、輻輳監視部１２ａ、遅延カウンタ部１２ｂ、メッセージ受信部１２ｃ、メッセージ処理部１２ｄ、処理結果送信部１２ｅ、輻輳通知部１２ｆおよび閾値記憶部１２ｇを備える。
【００３９】
閾値記憶部１２ｇは、輻輳状態と判断する基準となる、遅延タスク数の閾値を格納する。
【００４０】
遅延カウンタ部１２ｂは、処理の遅延しているタスク数を遅延カウンタにてカウントする。具体的には、遅延カウンタ部１２ｂは、周期的に発生する高優先度のタスク処理（後述するタスクＤ）の１周期内に処理が完了していないタスクＤ以外のタスクの数をカウントする。尚、遅延カウント対象となるのは、リアルタイム性に対する優先度は高くないが、他のタスクの稼動の影響を受けやすいタスクである。また、１周期とは、後述するタスクＤの起動開始から次の起動開始前までの間を指す。
【００４１】
輻輳監視部１２ａは、自身の処理の遅延状態を監視する。具体的には、周期毎に処理中のタスク数の分、遅延カウントを増加させる。また、遅延カウンタ部１２ｂと閾値を比較することで、自身が輻輳状態か非輻輳状態かを判定する。尚、輻輳状態にあると判定されると、輻輳を回避するための処理を行う。又、輻輳監視部１２ａは、輻輳通知部１２ｆに対し、輻輳状態又は非輻輳状態を現用主機能部１１１に通知するよう促す。
【００４２】
メッセージ受信部１２ｃは、現用主機能部１１１より、処理メッセージを受信する。
【００４３】
メッセージ処理部１２ｄは、処理メッセージを実行し、処理結果を得る。
【００４４】
処理結果送信部１２ｅは、処理結果を現用主機能部１１１および予備主機能部１１２に送信する。
【００４５】
輻輳通知部１２ｆは、輻輳監視部１２ａの監視による輻輳状態の結果を、主機能部１１に対して通知する。
【００４６】
尚、上述した各部は図示しないコンピュータのＣＰＵ等に格納されている。または図示しないＲＯＭやＲＡＭに格納されて、適宜ＣＰＵが演算処理を行うことでこれらの処理は実行される。
【００４７】
次に、従機能部１２〜１５での処理遅延の発生のメカニズムについて説明する。従機能部１２〜１５においては現用主機能部１１１から受信するメッセージをマルチタスクにて処理するが、マルチタスク処理では、各１つの処理（以下「タスク」と記載）の内、リアルタイム性が重要でないタスクは、優先度の高いタスクによる割り込みを受ける。このため、負荷が大きくなると、リアルタイム性は高くないが、使用頻度の高いタスクには、遅れが生じる。
【００４８】
図６を用いてリアルタイム性に対するタスクの優先度があり且つメッセージの受信が少ない場合のプロセッサの稼働状態について説明する。図６中、横軸は実行されるタスクの種類、縦軸は時間経過、右端のプロセッサ稼働グラフはプロセッサがタスク毎の処理のため稼働している時間を示す。リアルタイム性に対するタスクの優先度は、タスクＤが最も高く、次にタスクＣ、タスクＢ、タスクＡの順に優先度が低い。タスクＢ、Ｃは処理の動作が異なるため、プロセッサ稼働時間も異なる。これに対して、タスクＤは、メッセージ受け付けとは関係なく、従機能部１２〜１５内部での周期的なタイマをトリガに発生する処理であり、他のタスクと同じくプロセッサを使用する。メッセージａはタスクＡとＢを実行し、メッセージｂはタスクＡとＣを実行する。タスク図６の区間（ａ）では、主機能部１１からのメッセージａを受け付けた時にタスクＡが発生し、タスクＡの処理完了後、所定機能処理を実行するためのタスクＢへ遷移し、処理結果を主機能部１１へメッセージで送出後、処理を完了する。同様に、図６の区間（ｂ）ではメッセージｂ受信後にタスクＡを実行し、タスクＣ実行完了後に処理結果を主機能部１１へ送出する。図６の区間（ｃ）は図６の区間（ａ）と同様にメッセージａの処理を行うが、メッセージａの受信時刻によって発生するタスクＤの処理発生時間が異なる。両図共にタスクＡおよびＢを処理するが、区間（ａ）はタスクＢ完了後間もなくタスクＤが発生しているのに対し、区間（ｃ）はタスクＢ完了後しばらくしてからタスクＤが発生している。図６の例では右端のプロセッサ稼働グラフから明らかなように、タスクの優先度に関係なく各タスクが順調に処理されている。
【００４９】
次にリアルタイム性に対するタスクの優先度があり且つ受信メッセージの数が多く各タスクで処理が競合する場合のプロセッサの稼働状態について図７を用いて説明する。タスクの優先度は図６と同じである。図７の区間（ａ）ではメッセージａ１受信後にタスクＡおよびＢを終了する。また、メッセージａ１のタスクＢの処理中に、別のメッセージｂ１を受信したため、メッセージａ１の処理完了直後に、メッセージｂ１のタスクＡを実行する。しかしタスクＡの処理中に優先度の高いタスクＤが起動したため、処理中のタスクＡは待機状態となり、タスクＤの完了を待ってタスクＡは待機状態から実行状態へ戻り、処理を完了させる。これに続きタスクＣを実行し、メッセージｂ１に対する処理が完了する。しかしこの時点でメッセージｂ１の全体の処理時間は遅延している。図７の区間（ｂ）では、メッセージａ２のタスクＢの処理中にメッセージｂ２を受け付ける。この場合、メッセージａ２のタスクＢ完了まで、メッセージｂ２のタスクＡは待機状態となり、待機時間の分、メッセージｂ２の処理完了は遅れる。さらにこの状態において、図７の区間（ｃ）にてメッセージｂ３とａ３を続けて受け付ける場合、メッセージｂ２のタスクＣの処理中にタスクＤが起動し、タスクＣの処理は待機状態となり更にタスクＣの処理完了時刻は遅延する。メッセージｂ２のタスクＣの完了後直ぐに、メッセージｂ３のタスクＡとタスクＣを完了させ、次にメッセージａ３のタスクＡとタスクＣを完了させるが、結果として、メッセージａ３の処理完了時刻は予定より大幅に遅れる。このように、図７の例ではタスクの優先度の為、他のタスク処理完了に遅延が生じる。
（輻輳制御システムの動作）
次に、輻輳制御システム１０の予備主機能部１１２における輻輳状態監視動作、現用主機能部１１１における輻輳回避動作および従機能部１２〜１５における輻輳回避動作について説明する。まず、予備主機能部１１２における輻輳状態の監視動作について図８のフロー図を用いて説明する。
（ａ）まず、ステップＳ１０１において、図３の予備主機能部１１２は、周期タイマ部１１２ｃを起動し、予め設定された測定周期にてＣＰＵ走行時間を計測できるようにする。またステップＳ１０２において、受信カウンタ部１１２ａ、累計カウンタ部１１２ｅおよび推定走行時間記憶部１１２ｊに格納される推定走行時間累積値の初期化を行う。
（ｂ）ステップＳ１０３において、メッセージ種別判定部１１２ｂは、受信する処理メッセージの数を受信カウンタ部１１２ａに登録するとともに、各処理メッセージを外部又は従機能部１２〜１５から受信し、メッセージ種別を特定する。
（ｃ）ステップＳ１０４において、走行時間算出部１１２ｄは、推定走行時間記憶部１１２ｊに格納される推定走行時間表に基づき、メッセージ種別が特定された処理メッセージの推定走行時間値を取得する。ステップＳ１０５において、走行時間算出部１１２ｄは、累積カウンタ部１１２ｅに保持される推定走行時間累計値に、取得した推定走行時間値を加算する。ステップＳ１０６において、走行時間算出部１１２ｄは、累計カウンタの値を「１」増やす。
（ｄ）ステップＳ１０７において、カウンタ比較部１１２ｆは、受信カウンタと累計カウンタの値が等しいか否かの判定を行い、等しい場合は、受信された処理メッセージ全ての推定走行時間値が設定されたと判定し、ステップＳ１０８へ進む。等しくない場合は、ステップＳ１０３へ戻り、受信された他の処理メッセージの推定走行時間値の設定を続ける。
０３へ）。
（ｅ）ステップＳ１０８において、負荷算出部１１２ｇは、推定走行時間累計値に基づきテンポラリ負荷量を算出する。負荷判定部１１２ｈは、テンポラリ負荷量が、低負荷、中負荷、または高負荷のいずれに該当するかを、負荷判定記憶部１１２ｋ内の負荷閾値を基に判定する。ステップＳ１０９において、負荷判定部１１２ｈは、この判定結果および負荷判定記憶部１１２ｋ内の負荷判定表に記載される現用主機能部１１１の前状態等に基づいて、現用主機能部１１１が輻輳状態にあるか、非輻輳状態にあるかの判定を行う。ステップＳ１１０において、現用主機能部１１１の状態が非輻輳状態から輻輳状態に状態遷移した場合や、前状態によらず輻輳状態と判定された場合、判定結果通知部１１２ｉは、現用主機能部１１１に輻輳状態であるという内容の輻輳状態通知を送信する。逆に、現用主機能部１１１の状態が輻輳状態から非輻輳状態に状態遷移した場合や、前状態によらず非輻輳状態と判定された場合、判定結果通知部１１２ｉは、現用主機能部１１１に非輻輳状態であるという内容の輻輳状態通知を送信する。
【００５０】
上述した動作により、現用主機能部１１１の輻輳回避動作を促すことができる。ここで、非輻輳から輻輳状態への遷移が遅くなると、その分高い負荷が長い時間継続し、主機能部１１１の安定動作に支障をきたす恐れがあるので、非輻輳状態から輻輳状態への遷移に用いる負荷閾値は小さくしておくことが望ましい。
【００５１】
次に、予備主機能部１１２から現用主機能部１１１に対して輻輳又は非輻輳状態であることが通知された場合の、現用主機能部１１１における輻輳回避動作について、図９のフロー図を参照して説明する。
（ａ）まずステップＳ２００において、図２の現用主機能部１１１の輻輳処理部１１１ｅは、所定の間隔毎に、予備主機能部１１２より輻輳状態通知を受信しているか判定する。輻輳状態通知を受信している場合はステップＳ２０１へ進み、輻輳状態通知を受信していない場合はステップＳ２０６へ進む。ステップＳ２０１において、処理実行部１１１ｉは外部や従機能部１２〜１５からの処理メッセージを受信し、受信した処理メッセージの処理を開始する。ステップＳ２０２において、輻輳処理部１１１ｅが、予備主機能部１１２から受信する輻輳状態通知に基づいて、現用主機能部１１１が輻輳状態にあるのか、非輻輳状態にあるのかを判断する。輻輳状態であればステップＳ２０３へ進み、輻輳状態でなければステップＳ２０５にて通常処理を行う。
（ｂ）ステップＳ２０３において、メッセージ判定部１１１ｈは、受信した処理メッセージについて、予め重要度記憶部１１１ｋに設定されたメッセージ種別の重要度に応じて重要度の高低を判定する。判定の結果重要度が低ければステップＳ２０４へ進み、重要度が低ければステップＳ２０５にて通常処理を行う。
（ｃ）ステップＳ２０４では、輻輳処理部１１１ｅが、重要度が低いと判断された処理メッセージに対しては、破棄処理又は異常終了処理（輻輳回避処理）を実行する。例えば、新たな通信リンクの確立要求等は破棄処理等される。
（ｄ）ステップＳ２０６においては、予備主機能部１１２が故障したと判断し、現用主機能部１１１の臨時輻輳監視部１１１ｆが、ステップＳ１０１〜Ｓ１０９までの処理を行う。この際、ステップＳ１０８において臨時閾値設定部１１１ｇは、図３の負荷判定記憶部１１２ｋに格納される閾値を基に、輻輳状態を考慮した、この閾値より低い値の臨時閾値を設定する。負荷判定部は、この臨時閾値を基準とした判定結果および負荷判定記憶部１１２ｋ内の負荷判定表に記載される現用主機能部１１１の前状態等に基づいて、現用主機能部１１１が輻輳状態にあるか、非輻輳状態にあるかの判定を行う。
【００５２】
次に、従機能部１２〜１５における輻輳回避動作について図１０のフロー図を参照して説明する。
（ａ）ステップＳ３０１において、図５の輻輳監視部１２ａは、遅延カウンタ部１２ｂを０に初期化する。ステップＳ３０２において、現用主機能部１１１より処理メッセージを受信すると、メッセージ処理部１２ｄが一周期分のタスク処理を行う。ステップＳ３０３において輻輳監視部１２ａは、前回のタスクＤから今回のタスクＤが起動するまでの間に、処理が完了していない未完了タスクがあるかを判定する。具体的には、タスクＤが周期的に起動して未完了タスクの数をカウントし、輻輳監視部１２ａはこのカウント結果を受けて未完了タスクの有無を判断する。
（ｂ）未完了タスクがある場合、ステップＳ３０４にて輻輳監視部１２ａは、このタスクが遅延の対象タスク、すなわちリアルタイム性に対する優先度は低いが他のタスク稼働の影響を受けやすいタスクかどうかを判定し、対象タスクならば、ステップＳ３０５において遅延カウンタ部１２ｂを対象タスクの数の分「＋１」インクリメントする。尚、対象タスクでない場合はステップＳ３０２へ戻る。ステップＳ３０６において輻輳監視部１２ａは、この遅延カウンタ部１２ｂの値を判定閾値記憶部１１２ｅに格納される閾値と比較する。比較の結果、遅延カウンタ部１２ｂの値が閾値より大きい場合には、ステップＳ３０７において輻輳監視部１２ａは、自身が輻輳状態にあると判断し、非輻輳状態から輻輳状態へと状態を遷移する。尚、輻輳状態の場合は、輻輳通知部１２ｆが、負荷を軽減するために主機能部１１へ輻輳状態を通知し、現用主機能部１１１からの新規の処理受付を抑制させる。更に、新規の処理を受付けた時点で破棄する。これらの処理により従機能部１２〜１５の輻輳の回避や解消を簡易に実現する。尚、ステップＳ３０６における比較の結果、遅延カウンタ部１２ｂの値が閾値より低いなら、輻輳監視部１２ａは非輻輳状態と判断し、そのままステップＳ３０２へ戻る。
（ｃ）ステップＳ３０３で、一周期内に全てのタスク処理が完了したなら、ステップＳ３０８において輻輳監視部１２ａは、これらのタスクが対象タスクかどうかを判定する。対象タスクなら、ステップＳ３０９において、遅延カウンタ部１２ｂは対象タスクの数の分遅延カウント値を「１」減少させる。対象タスクでないなら、そのままステップＳ３０２へ戻る。ステップＳ３１０において輻輳監視部１２ａは、遅延カウンタの値を判定閾値記憶部１１２ｅの閾値と比較する。閾値より小さい場合にはステップ３１１において、自身の状態を輻輳状態から非輻輳状態へと遷移させる。尚、非輻輳状態の場合は、輻輳通知部１２ｆが、主機能部１１へ非輻輳状態を通知し、現用主機能部１１１からの新規の処理受付を再開する。尚、ステップＳ３１０における比較の結果、閾値より大きい場合には、輻輳監視部１２ａは、まだ輻輳状態であると判断し、そのままステップ３０２へ戻る。
【００５３】
尚、タスクの稼働時間は、その種類や負荷の状況によっても変動するため、一時的な変動による誤判定を抑制する、保護段数判定処理を行ったほうが好ましい。
【００５４】
以上のように、本発明の第一の実施形態によると、現用主機能部１１１宛ての処理メッセージが全て予備主機能部１１２にも送信されることにより、予備主機能部１１２が、現用主機能部１１１の輻輳状態を推定することができる。このため、処理メッセージに対する実行処理を行う現用機能部１１１の処理能力を劣化させることなく、現用機能部１１１の処理状態の監視を行うことができる。
【００５５】
また、現用機能部１１１の輻輳状態を推定することにより、より迅速に輻輳状態を通知することができる。このため、現用機能部１１１は、高負荷のかかった輻輳状態を軽減する処理を迅速に行うことができるため、現用主機能部１１１は、安定動作を維持することができる。
【００５６】
従機能部１２〜１５においては、自身の輻輳監視を行うことで、輻輳状態に陥ることを防ぐことができる。又、処理遅延の原因となるタスクのみをカウント対象とすることで、処理遅延の判定を簡易にかつ的確に行うことができる。また、従機能部１２〜１５が自装置内にて輻輳監視を行い、輻輳状態に陥った際に輻輳回復処理を行うことで、システムの安定度をより向上させることができる。
【００５７】
更に、現用主機能部１１１の輻輳回避処理、予備主機能部１１２の輻輳監視処理、および従機能部１２〜１５の輻輳監視処理をソフトウェア制御によりで実現することで、情報処理装置の設置にかかるコストを軽減することができる。
【００５８】
尚、第一の実施形態における輻輳制御方法は、輻輳制御システム１０の各動作を方法の発明として捉えたものである。第一の実施形態の輻輳制御プログラムは、輻輳制御システム１０が有する各手段を、コンピュータに機能させるためのものである。
＜第二の実施形態＞
（輻輳制御システム）
第一の実施形態では主機能部１１の情報処理実行部と輻輳監視部が現行予備系の輻輳制御システム１０について説明したが、情報処理実行部と輻輳監視部は独立して存在しても構わない。よって第二の実施形態においては、主機能部の情報処理実行部と輻輳監視部が別々の情報処理装置に存在し、互いに通信可能に接続されている輻輳制御システム２０について図１１を参照して説明する。
【００５９】
輻輳制御システム２０は、主機能部２１として情報処理装置１、２、３を備え、情報処理装置１は情報処理実行部としてのインタフェース機能部１７を、情報処理装置２、３は輻輳監視部としてのインタフェース機能部２７、３７を備える。インタフェース機能部１７とインタフェース機能部２７、およびインタフェース機能部１７とインタフェース機能部３７は、通信回線を介して接続されている。インタフェース機能部１７は、インタフェース機能部２７が故障した場合に、別の情報処理装置３に、外部から送り込まれた処理メッセージに対する輻輳監視処理の少なくとも一部を移行する。この場合、情報処理装置３のインタフェース機能部３７が新たな輻輳監視部として機能する。
【００６０】
尚、図１１には図示しないが、図１と同じく複数の従機能部が情報処理装置１〜３と通信可能に接続されている。従機能部は第一の実施形態と同様の構成を備えている。説明は省略する。
【００６１】
インタフェース機能部１７は、図１２に示すように、処理時間記憶部１７ａ、処理メッセージ受信部１７ｂ、処理メッセージ実行処理部１７ｃ、メッセージ判別部１７ｄ、輻輳状態確認部１７ｅ、メッセージ処理実行部１７ｆ等を備える。
【００６２】
処理時間記憶部１７ａは、インタフェース機能部１７内で単一の受信メッセージの受信及び送信処理にかかるＣＰＵ処理時間を記憶する。
【００６３】
処理メッセージ受信部１７ｂは、外部又は従機能部から送り込まれた処理メッセージを受信する。
【００６４】
処理メッセージ実行処理部１７ｃは、処理メッセージの内容を実行処理する。
【００６５】
メッセージ判別部１７ｄは、受信した処理メッセージの種別、及びその重要度を判別する。判別された処理メッセージの重要度に応じて処理方法は決定される。
【００６６】
輻輳状態確認部１７ｅは、インタフェース機能部２７から受信する輻輳状態通知に基づいて、インタフェース機能部１７の輻輳状態を確認する。更に、輻輳状態確認部１７ｅは、インタフェース機能部２７から一定期間輻輳状態通知を受信しない場合、インタフェース機能部２７が故障したと判断して、予備のインタフェース機能部３７に輻輳状態の監視を依頼する。
【００６７】
メッセージ処理実行部１７ｆは、輻輳状態にあると通知された場合に、重要度に応じて異なる処理を行う。例えば、重要度の低い処理メッセージについては、破棄、又は異常終了とする処理（輻輳回避処理）を行う。これにより、輻輳状態にあるインタフェース機能部１７の実行処理にかかる負荷を軽減する。重要度の低いメッセージとしては、例えば、新たな通信リンクの確立要求に属するもの等を示す。重要度の高いメッセージについては、通常の処理を行う。重要度の高いメッセージとは、例えば、通信中の通信リンクの解放要求や保守監視要求に属するものを示す。
【００６８】
なお、通知された輻輳状態を、更に輻輳の度合いに応じて複数の状態に細分化し、かつメッセージの重要度もそれに応じて細分化し設定してもよい。これにより、より柔軟な輻輳回避制御ができる。
【００６９】
インタフェース機能部２７は図１３に示すように、メッセージ送受信カウンタ部２７ａ、送受信処理推定時間記憶部２７ｂ、周期タイマ部２７ｃ、走行時間値算出部２７ｄ、負荷量算出部２７ｅ、輻輳状態判定部２７ｆおよび輻輳状態通知部２７ｇ等を備える。
【００７０】
メッセージ送受信カウンタ部２７ａは、インタフェース機能部１７とインタフェース機能部２７又は３７の間で実行される処理メッセージの送信又は受信イベントを処理する毎に、その処理数をカウントする。
【００７１】
送受信処理推定時間記憶部２７ｂは、インタフェース機能部１７における処理メッセージ毎の送受信処理にかかる処理時間が予め設定された送受信処理推定時間表を格納する。送受信処理推定時間表により、インタフェース機能部２７は、インタフェース機能部１７における送受信イベントの処理時間を、迅速に読み出すことができる。
【００７２】
周期タイマ部２７ｃは、予め設定された測定周期を計測する。
【００７３】
走行時間値算出部２７ｄは、予め設定された測定周期内で実行された処理メッセージの送信イベント又は受信イベントの数と、上記送受信処理推定時間表から読み出された処理時間とを掛け合わせて、インタフェース機能部１７のＣＰＵにおける推定ＣＰＵ走行時間値を算出する。
【００７４】
負荷量算出部２７ｅは、算出された推定ＣＰＵ走行時間値に基づいて、周期内で、インタフェース機能部１７にかかると推定される負荷量（以下「テンポラリ負荷量」という）を算出する。
【００７５】
輻輳状態判定部２７ｆは、算出されたテンポラリ負荷量に基づいてインタフェース機能部２７又は３７の輻輳状態の判定が低負荷、中負荷、又は高負荷の何れであるかを判定する。ここで、テンポラリ負荷量の判定結果の１つである中負荷は、低負荷、高負荷の間に設定され、非輻輳状態の負荷レベルであることを示す。第一の実施形態と同様に、インタフェース機能部１７が輻輳状態か非輻輳状態かの判定は、図４に示すように、一つ前の測定周期の負荷状況に基づき行われる。ここでは、前の測定周期でインタフェース機能部１７が非輻輳状態であった場合は、後の測定周期で低負荷であれば非輻輳状態、中負荷であれば非輻輳状態と判定される。また、前の測定周期でインタフェース機能部１７が高負荷であった場合には、予め設定された閾値以上の負荷がかかっている場合、輻輳状態と判定、閾値未満であれば、非輻輳状態と判定される。
【００７６】
一方、前の測定周期でインタフェース機能部１７が輻輳状態であった場合は、後の周期でインタフェース機能部１７が低負荷である場合、予め設定された閾値以上の負荷がかかっている場合は、輻輳状態と判定、負荷が閾値未満であれば、非輻輳状態と判定される。また、後の測定周期で中負荷または高負荷であると判定された場合は、いずれの場合も輻輳状態と判定される。
【００７７】
なお、上記のように、連続する測定周期で非輻輳状態から輻輳状態への状態遷移が行われる場合には、状態遷移の保護段数を設けることで、輻輳状態及び非輻輳状態が頻繁に更新されるのを軽減することができる。ただし、非輻輳から輻輳状態への状態遷移が遅くなると、その分高い負荷が長い時間継続し、インタフェース機能部１７の安定動作に支障をきたす恐れがあるので、非輻輳から輻輳状態への遷移に用いる保護段数は小さく設定してもよい。
【００７８】
輻輳状態通知部２７ｇは、インタフェース機能部１７が輻輳状態であると判定された場合、あるいは、インタフェース機能部１７の状態が非輻輳状態から輻輳状態へ遷移したと判定された場合に、当該インタフェース機能部１７に対して輻輳状態にあることを通知する。これにより、インタフェース機能部１７が、上記通知に応じて輻輳回避動作を実行するのを促す。
【００７９】
尚、インタフェース機能部３７は、インタフェース機能部２７と同様の構成を有する。説明は省略する。
（輻輳制御システムの動作）
次に、輻輳制御システム２０の動作について説明する。輻輳制御システム２０の動作としては、情報処理装置２のインタフェース機能部２７の輻輳監視動作と、情報処理装置１のインタフェース機能部１７の輻輳回避動作がある。従機能部の輻輳回避動作については第一の実施形態と同様であるため説明を省略する。
【００８０】
最初に、情報処理装置２のインタフェース機能部２７の輻輳監視動作について、図１４のフロー図を参照して説明する。
（ａ）まず、ステップＳ４０１において、インタフェース機能部２７が、周期タイマ部２７ｃを起動し、予め設定された測定周期を計測する。ステップＳ４０２において、走行時間算出部２７ｄが、送受信処理推定時間記憶部２７ｂの送受信処理推定時間表からインタフェース機能部１７の送受信イベント処理時間を示す処理時間情報を読み出す。ステップＳ４０３において、走行時間値算出部２７ｄは、読み出された処理時間情報と、メッセージ送受信カウンタ部２７ａに予め記憶された処理メッセージの送信及び受信イベント数とを掛け合わせて、推定ＣＰＵ走行時間値を算出する。
（ｂ）ステップＳ４０４において、負荷量算出部２７ｅが、推定ＣＰＵ走行時間値からテンポラリ負荷量を算出し、算出されたテンポラリ負荷量が、低負荷、中負荷、又は高負荷のいずれに該当するかを判定する。
（ｃ）ステップＳ４０５においては、輻輳状態判定部２７ｆが、判定結果に基づいて、インタフェース機能部１７が輻輳状態にあるか、非輻輳状態にあるかの判定を行う。ステップＳ４０６において、輻輳状態通知部２７ｇが、インタフェース機能部１７の状態が非輻輳状態から輻輳状態に状態遷移した場合や、前状態によらず輻輳状態（高負荷状態）と判定された場合に、インタフェース機能部１７に輻輳状態であることを示す対向ノード輻輳状態通知を送信する。また、インタフェース機能部１７が非輻輳状態である場合は、非輻輳状態であることを通知する。
【００８１】
この通知により、インタフェース機能部１７の輻輳回避動作を促すことができる。ここで、非輻輳から輻輳状態への遷移が遅くなると、その分高い負荷が長い時間継続し、インタフェース機能部１７の安定動作に支障をきたす恐れがあるので、非輻輳状態から輻輳状態への遷移に用いる保護段数は小さくしておくことが望ましい。
【００８２】
なお、ここでは、インタフェース機能部２７が、インタフェース機能部１７に対して輻輳監視処理を行う場合について説明したが、インタフェース機能部３７も同様に輻輳監視処理を行うことができる。
【００８３】
次いで、インタフェース機能部２７からインタフェース機能部１７に対して輻輳状態であることが通知された場合の、インタフェース機能部１７の輻輳回避動作について、図１５のフローチャートに基づき説明する。
（ａ）ステップＳ５００において、図１２のインタフェース機能部１７の輻輳状態監視部１７ｅは、所定期間内にインタフェース機能部２７からの処理メッセージや輻輳状態通知を受信するか判断する。所定期間内に処理メッセージや輻輳状態通知を受信する場合は、ステップＳ５０１において処理を開始する。所定期間内に処理メッセージや輻輳状態通知を受信しない場合はステップＳ５０６へ進む。
（ｂ）ステップＳ５０２において、輻輳状態確認部１７ｅは、受信した輻輳状態通知を基に、インタフェース機能部１７自身が、輻輳状態にあるのか非輻輳状態にあるのかを判断する。非輻輳状態と判定されると、ステップＳ５０５にてメッセージ処理実行部１７ｆが通常処理を行う。輻輳状態と判定されるとステップＳ５０３へ進む。
（ｃ）ステップＳ５０３においてメッセージ判別部１７ｄは、予め設定重要度記憶部１７ｇの重要度表に記載されたメッセージ種別に応じて、受信された処理メッセージの重要度の高低を判定する。重要度が高いと判定されると、ステップＳ５０５にてメッセージ処理実行部１７ｆが通常処理を行う。重要度が低いと判定されるとステップＳ５０４へ進む。
（ｄ）ステップＳ５０４において、メッセージ処理実行部１７ｆは、重要度が低いと判断された処理メッセージを、破棄するまたは異常終了として処理する。更に処理メッセージの受信を抑制する。
（ｅ）所定期間インタフェース機能部２７から処理メッセージを受信しない場合、ステップＳ５０６にて輻輳状態確認部１７ｅは、インタフェース機能部２７が故障したと判断し、予備のインタフェース機能部３７に輻輳状態の監視を依頼する。依頼を受けたインタフェース機能部３７は、代わりにステップＳ４０１〜Ｓ４０６の輻輳監視処理を行う。
【００８４】
以上のように、第二の実施形態では、インタフェース機能部１７は、インタフェース機能部２７又は３７に輻輳状態を監視させる。これによりインタフェース機能部１７における実行処理能力を劣化させることなく、輻輳状態の監視を行うことができる。
【００８５】
また、インタフェース機能部１７の輻輳状態を推定することにより、より迅速に輻輳状態を通知することができる。このため、インタフェース機能部１７は、高負荷のかかった輻輳状態を軽減する処理を迅速に行うことができるため、安定動作を維持することができる。
【００８６】
第二の実施形態によれば、第一の実施形態の効果に加え、輻輳監視部としてのインタフェース機能部２７が故障した場合に、情報処理装置３に処理メッセージに対する処理の一部を移行することにより、情報処理実行部としてのインタフェース機能部１７の処理負担を軽減できる。
【００８７】
更に、上記インタフェース機能部１７の輻輳回避処理、及びインタフェース機能部２７又は３７の輻輳監視処理をソフトウェア制御により実現することで、情報処理装置の設置にかかるコストを軽減することができる。
【００８８】
尚、第二の実施形態における輻輳制御方法は、輻輳制御システム２０の各動作を方法の発明として捉えたものである。第二の実施形態の輻輳制御プログラムは、輻輳制御システム２０が有する各手段を、コンピュータに機能させるためのものである。
【００８９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
［付記１］
外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、前記情報処理実行部に併設され前記処理メッセージ数を監視する輻輳監視部と、前記情報処理実行部および前記輻輳監視部に接続された、前記処理メッセージに含まれるタスクを実行する従機能部
とを備えた輻輳制御システムであって、
前記輻輳監視部は、
前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
この判定した内容を前記情報処理実行部へ通知する手段
とを有し、前記従機能部は、
前記処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、前記未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
この判定した内容を前記情報処理実行部へ通知する手段
とを有し、前記情報処理実行部は、
前記輻輳監視部が故障した場合に、自ら、前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する手段と、
前記輻輳監視部および前記従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に前記処理メッセージに対する処理を抑制する手段
とを有することを特徴とする輻輳制御システム。
［付記２］
前記情報処理実行部は、前記輻輳監視部が故障した場合に前記閾値を低く設定し直す手段を更に有することを特徴とする付記１に記載の輻輳制御システム。
［付記３］
前記情報処理実行部及び前記輻輳監視部は、通信回線を介して接続され相互に通信可能
な異なる情報処理装置にそれぞれ別々に設けられた、
付記１又は２に記載の輻輳制御システム。
［付記４］
前記情報処理実行部は、前記輻輳監視部が故障した場合に、前記通信回線を介して接続され相互に通信可能な他の前記情報処理装置に、外部から送り込まれた前記処理メッセージに対する処理の一部を移行する手段
を更に有することを特徴とする付記３記載の輻輳制御システム。
［付記５］
前記情報処理実行部及び前記輻輳監視部は、同一の中央演算処理装置でプログラム制御により動作する機能部である、
付記１又は２記載の輻輳制御システム。
［付記６］
前記従機能部の判定する手段は、前記処理未完了のタスクのうち、リアルタイム性に対する優先度は高くないが、他のタスクの稼動の影響を受けやすいタスクをカウントする
ことを特徴とする付記１に記載の輻輳制御システム。
［付記７］
前記輻輳監視部の判定する手段および前記情報処理実行部の判定する手段の少なくとも片方は、所定間隔における所定回数以上前記輻輳状態又は前記非輻輳状態が通知された場合に状態を変化させることを特徴とする付記１に記載の輻輳制御システム。
［付記８］
外部から送り込まれた処理メッセージに対して処理を行う情報処理実行部と、前記情報処理実行部に併設され前記処理メッセージ数を監視する輻輳監視部と、前記情報処理実行部および前記輻輳監視部に接続された、前記処理メッセージに含まれるタスクを実行する従機能部を備えたシステムに用いられる輻輳制御方法であって、
前記輻輳監視部が、
前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
この判定した内容を前記情報処理実行部へ通知する工程
を有し、前記従機能部は、
前記処理メッセージに含まれる少なくとも１つ以上のタスクの、周期内における処理未完了数をカウントし、前記未完了数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
この判定した内容を前記情報処理実行部へ通知する工程
とを有し、前記情報処理実行部は、
前記輻輳監視部が故障した場合に、自ら、前記処理メッセージに対する処理時間を推定し、この処理時間、前記処理メッセージ数および閾値に基づき、輻輳状態か非輻輳状態かを判定する工程と、
前記輻輳監視部および前記従機能部から通知される内容、または自らが判定した内容が輻輳状態を示す場合に前記処理メッセージに対する処理を抑制する工程
とを有することを特徴とする輻輳制御方法。
［付記９］
前記情報処理実行部は、前記輻輳監視部が故障した場合に前記閾値を低く設定し直す工程を更に有することを特徴とする付記８に記載の輻輳制御方法。
［付記１０］
前記従機能部の判定する工程は、前記処理未完了のタスクのうち、リアルタイム性に対する優先度は高くないが、他のタスクの稼動の影響を受けやすいタスクをカウントする
ことを特徴とする付記８又は９に記載の輻輳制御方法。
［付記１１］
前記情報処理実行部及び前記輻輳監視部は、通信回線を介して接続され相互に通信可能な異なる情報処理装置にそれぞれ別々に設けられた
ことを特徴とする付記１０に記載の輻輳制御方法。
［付記１２］
前記情報処理実行部は、前記輻輳監視部が故障した場合に、前記通信回線を介して接続され相互に通信可能な他の前記情報処理装置に、外部から送り込まれた前記処理メッセージに対する処理の一部を移行する工程
を更に有することを特徴とする付記８又は９に記載の輻輳制御方法。
［付記１３］
前記情報処理実行部及び前記輻輳監視部は、同一の中央演算処理装置でプログラム制御により動作する機能部である、
付記８又は９に記載の輻輳制御方法。
［付記１４］
前記輻輳監視部の判定する工程および前記情報処理実行部の判定する工程の少なくとも片方は、所定間隔における所定回数以上前記輻輳状態又は前記非輻輳状態が通知された場合に状態を変化させることを特徴とする付記８に記載の輻輳制御方法。
【符号の説明】
【００９０】
１、２、３    情報処理装置
１０、２０    輻輳制御システム
１１    主機能部
１１１    現用主機能部
１１２    予備主機能部
１２、１３、１４、１５    従機能部
１７、２７、３７    インタフェース機能部
【図１】
2015185054.tif 000003
【図２】
2015185054.tif 000004
【図３】
2015185054.tif 000005
【図４】
2015185054.tif 000006
【図５】
2015185054.tif 000007
【図６】
2015185054.tif 000008
【図７】
2015185054.tif 000009
【図８】
2015185054.tif 000010
【図９】
2015185054.tif 000011
【図１０】
2015185054.tif 000012
【図１１】
2015185054.tif 000013
【図１２】
2015185054.tif 000014
【図１３】
2015185054.tif 000015
【図１４】
2015185054.tif 000016
【図１５】
2015185054.tif 000017