JP2016224883A - 異常検出方法、情報処理装置および異常検出プログラム - Google Patents

異常検出方法、情報処理装置および異常検出プログラム Download PDF

Info

Publication number
JP2016224883A
JP2016224883A JP2015113658A JP2015113658A JP2016224883A JP 2016224883 A JP2016224883 A JP 2016224883A JP 2015113658 A JP2015113658 A JP 2015113658A JP 2015113658 A JP2015113658 A JP 2015113658A JP 2016224883 A JP2016224883 A JP 2016224883A
Authority
JP
Japan
Prior art keywords
monitoring process
processor
timer
executed
priority monitoring
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015113658A
Other languages
English (en)
Inventor
大石 一昭
Kazuaki Oishi
一昭 大石
雄一 生井
Yuichi Ikui
雄一 生井
行彦 保土原
Yukihiko Hodohara
行彦 保土原
進 種岡
Susumu Taneoka
進 種岡
勝哉 北守
Katsuya Kitamori
勝哉 北守
小林 一彦
Kazuhiko Kobayashi
一彦 小林
直弘 若林
Naohiro Wakabayashi
直弘 若林
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015113658A priority Critical patent/JP2016224883A/ja
Priority to US15/149,366 priority patent/US20160357623A1/en
Publication of JP2016224883A publication Critical patent/JP2016224883A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3024Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

【課題】ウォッチドッグタイマがタイムアップするタイミングを適切に調整する。【解決手段】情報処理装置10は、プロセッサ11を用いて、タイマ12を初期化する監視プロセス13と、監視プロセス13より優先度の高い監視プロセス14とを起動する。情報処理装置10は、監視プロセス14により、監視プロセス13が実行されたか監視する。情報処理装置10は、監視プロセス13が実行されていない場合、監視プロセス14により、プロセッサ11の負荷状況15が所定の条件を満たすか判定し、負荷状況15が所定の条件を満たす場合は監視プロセス14によりタイマ12を初期化する。【選択図】図1

Description

本発明は異常検出方法、情報処理装置および異常検出プログラムに関する。
コンピュータが有するプロセッサは、メモリに記憶されたプログラムを実行する。プログラムに不具合があると、プロセッサは無限ループを実行するなど、プログラムを終了できなくなり異常な不停止状態になる場合がある。異常な不停止状態になると、プロセッサは演算能力の多くを当該不具合のあるプログラムのために消費してしまい、プロセッサ自身によって異常を検知し正常な状態に戻すことが難しくなる場合がある。
そこで、コンピュータは、ウォッチドッグタイマと呼ばれるハードウェアを備えることがある。ウォッチドッグタイマは、時間の経過に応じてカウントアップまたはカウントダウンを行い、カウントが所定値になる(タイムアップする)とプロセッサにリセット信号を送信する。プロセッサは正常な状態である間は、ウォッチドッグタイマがタイムアップしないように、定期的にカウントを初期値に戻すプロセスを実行する。一方、異常な不停止状態になると、プロセッサはカウントを初期値に戻すプロセスを実行できなくなり、ウォッチドッグタイマがタイムアップする。タイムアップすると、プロセッサはウォッチドッグタイマからのリセット信号によってリセットされる。
ウォッチドッグタイマに関して、プロセッサがリセットされた原因の分析を容易にするため、リセット前のプロセッサの内部状態を保存できるようにした緊急動作制御方法が提案されている。提案の緊急動作制御方法では、ウォッチドッグタイマがリセット信号を発行すると、プロセッサの内部状態をメモリに保存する。内部状態の保存が完了するか、または、リセット信号が発行されてから一定時間経過すると、プロセッサを再起動する。
また、高階層の監視プログラムと低階層の監視プログラムの両方を用いて、低階層のプログラム暴走を検出できるようにした再起動制御方法が提案されている。提案の再起動制御方法では、高階層の監視プログラムを用いて、プロセッサが定期的にウォッチドッグタイマを初期化するようにする。また、ウォッチドッグタイマの初期化とは別に、低階層の監視プログラムを用いて、プロセッサが定期的に信号を出力するようにする。プロセッサからの信号の出力回数をカウントし、ウォッチドッグタイマを複数回初期化する間にカウントが変化しない場合、低階層のプログラム暴走と判定してプロセッサを再起動する。
また、ベースルーチンに対する割り込みが頻繁に発生しても、プログラム暴走を誤検出するリスクを低減できる異常検出装置が提案されている。提案の異常検出装置では、プロセッサが最高優先度で定期的に、ウォッチドッグタイマを初期化する定期割り込みルーチンを実行する。定期割り込みルーチンは、起動される毎に起動回数をカウントアップし、カウントが所定値を超えた場合はウォッチドッグタイマの初期化を行わない。ベースルーチンは、所定の処理が一巡する毎に定期割り込みルーチンのカウントを戻す。これにより、ベースルーチンの処理が遅延しても、すぐにはプログラム暴走と判定されない。
特開昭58−181160号公報 特開昭63−316145号公報 特開平6−195244号公報
上記の特許文献2,3に記載された技術では、定期的に実行されるべき低優先度のプロセスが所定回数連続して実行されなかった場合に、ウォッチドッグタイマの初期化が停止されてプロセッサがリセットされる。しかし、特許文献2,3に記載された技術では、低優先度のプロセスが実行されなくなってからウォッチドッグタイマの初期化が停止されるまでの許容時間が固定であり、許容時間の調整が難しいという問題がある。許容時間を短く設定すると、正常な高負荷状態を異常な不停止状態と誤判定してしまうリスクが高くなる。一方、許容時間を長く設定すると、プロセッサが異常な不停止状態になってからリセットされるまでの遅延が大きくなってしまう。
そこで、1つの側面では、本発明は、ウォッチドッグタイマがタイムアップするタイミングを適切に調整できる異常検出方法、情報処理装置および異常検出プログラムを提供することを目的とする。
また、上記の特許文献1に記載された技術では、ウォッチドッグタイマによってリセット信号が発行された場合に、プロセッサがすぐにはリセットされずにプロセッサがログ情報を保存するための時間が確保される。しかし、特許文献1に記載された技術では、ログ情報を保存するための特別のハードウェアを用意することになるという問題がある。
そこで、1つの側面では、本発明は、ログ情報の保存が容易になる異常検出方法を提供することを目的とする。
1つの態様では、プロセッサと、タイムアップした場合にプロセッサをリセットさせるタイマとを有するコンピュータが実行する異常検出方法が提供される。プロセッサを用いて、タイマを初期化する第1の監視プロセスと、第1の監視プロセスより優先度の高い第2の監視プロセスとを起動する。第2の監視プロセスにより、第1の監視プロセスが実行されたか監視する。第1の監視プロセスが実行されていない場合、第2の監視プロセスにより、プロセッサの負荷状況が所定の条件を満たすか判定し、負荷状況が所定の条件を満たす場合は第2の監視プロセスによりタイマを初期化する。
また、1つの態様では、プロセッサと、メモリと、タイムアップした場合にプロセッサをリセットさせるタイマとを有するコンピュータが実行する異常検出方法が提供される。プロセッサを用いて、タイマを初期化する第1の監視プロセスと、第1の監視プロセスより優先度の高い第2の監視プロセスとを起動する。第2の監視プロセスにより、第1の監視プロセスが実行されたか監視する。第1の監視プロセスが実行されていない場合、第2の監視プロセスにより、メモリから不揮発性の記憶装置にログ情報を退避する。
また、1つの態様では、プロセッサとタイマとを有する情報処理装置が提供される。また、1つの態様では、コンピュータに実行させる異常検出プログラムが提供される。
1つの側面では、ウォッチドッグタイマがタイムアップするタイミングを適切に調整できる。また、1つの側面では、ログ情報の保存が容易になる。
第1の実施の形態の情報処理装置の例を示す図である。 第2の実施の形態の情報処理装置の例を示す図である。 伝送装置のハードウェア例を示すブロック図である。 第3の実施の形態の伝送装置の機能例を示すブロック図である。 第3の実施の形態のプロセス優先度の例を示す図である。 CPU使用率テーブルの例を示す図である。 第3の実施の形態の最低優先監視の手順例を示すフローチャートである。 第3の実施の形態の最高優先監視の手順例を示すフローチャートである。 第4の実施の形態の伝送装置の機能例を示すブロック図である。 第4の実施の形態のプロセス優先度の例を示す図である。 フラグリストの例を示す図である。 第4の実施の形態の最低優先監視の手順例を示すフローチャートである。 第4の実施の形態の中間優先監視の手順例を示すフローチャートである。 第4の実施の形態の最高優先監視の手順例を示すフローチャートである。
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態の情報処理装置の例を示す図である。
第1の実施の形態の情報処理装置10は、プロセッサ11およびタイマ12を有する。
プロセッサ11は、CPU(Central Processing Unit)やCPUコアなどの演算装置である。プロセッサ11は、プログラムをメモリにロードし、メモリに記憶されたプログラムを実行する。プロセッサ11は、1または2以上のプログラムに基づいて起動された複数のプロセスを、その優先度に応じて時分割に実行することができる。優先度が高いプロセスに対して、処理時間(プロセッサリソース)が優先的に割り当てられる。
タイマ12は、時間の経過に応じてカウントアップまたはカウントダウンを行い、カウントが所定値に達した(タイムアップした)場合にプロセッサ11をリセットさせる。ただし、プロセッサ11によってタイマ12が初期化されることで、カウントが初期値に戻る。タイマ12は、ウォッチドッグタイマと呼ばれることがある。例えば、タイマ12は、プロセッサ11によって設定された初期値から始めてカウントダウンを行い、カウントがゼロになるとプロセッサ11に対してリセット信号を送信する。リセット信号は、例えば、プロセッサ11に対する割り込み信号として送信される。
リセット信号を受信すると、プロセッサ11は、レジスタの値などの内部状態をクリアして再起動する。例えば、プロセッサ11は、所定の初期プログラムをメモリにロードし直し、初期プログラムを最初から実行し直す。これにより、リセット前に実行されていたプロセスの全てが強制的に停止されて破棄されることになる。
ここで、プロセッサ11は、監視プロセス13(第1の監視プロセス)と監視プロセス14(第2の監視プロセス)を起動する。監視プロセス13,14を定義した異常検出プログラムは、例えば、プロセッサ11の起動後に実行される初期プログラムを介して呼び出される。監視プロセス13は、低い優先度(例えば、プロセッサ11によって実行され得るプロセスの中の最低優先度)で実行される。監視プロセス14は、監視プロセス13より高い優先度(例えば、プロセッサ11によって実行され得るプロセスの中の最高優先度)で実行される。監視プロセス13,14を含む複数のプロセスそれぞれの優先度は、例えば、OS(Operating System)によって管理される。
監視プロセス13は、継続的に(例えば、所定の周期で間欠的に)タイマ12を初期化する。例えば、監視プロセス13は、タイマ12が有するレジスタの値を初期値に書き換える。監視プロセス13が実行される時間間隔は、タイマ12が初期化されてからタイムアップするまでの時間より短いものとする。監視プロセス13が正常に実行されていれば、タイマ12がタイムアップする前にタイマ12が初期化される。これにより、タイマ12によってプロセッサ11がリセットされるのを回避できる。
これに対し、監視プロセス13よりも優先度の高いプロセスの負荷が高い場合、監視プロセス13に割り当てられるプロセッサリソースが減少し、予定されたタイミングに監視プロセス13が実行されないことがある。これにより、予定されたタイミングにタイマ12が初期化されなくなる。プロセスの負荷が高くなる場合には、当該プロセスが正常に実行されているものの一時的に負荷が高くなった場合(正常高負荷状態)がある。また、プロセスの負荷が高くなる場合には、プログラムの不具合によって、当該プロセスが無限ループを実行するなど意図せず停止できなくなった場合(異常不停止状態)がある。
異常不停止状態では、タイマ12によってプロセッサ11が迅速にリセットされることが好ましい。一方、正常高負荷状態では、プロセッサ11がリセットされないことが好ましい。そこで、監視プロセス14が以下の処理を実行する。
監視プロセス14は、予定されたタイミングに監視プロセス13が実行されたかを監視する。例えば、監視プロセス14は、タイマ12のカウントを確認し、前回からのカウントの変化量が閾値より大きい場合、監視プロセス13が実行されていないと判定する。また、例えば、監視プロセス13が実行毎にメモリまたはレジスタにフラグを書き込むようにする。監視プロセス14は、メモリまたはレジスタにフラグが書き込まれていない場合、監視プロセス13が実行されていないと判定する。監視プロセス14を実行する時間間隔は、監視プロセス13と同じか、監視プロセス13よりも若干長いことが好ましい。
監視プロセス13が実行されていない場合、監視プロセス14は、プロセッサ11の負荷状況15を確認し、負荷状況15が所定条件を満たすか判定する。負荷状況15には、例えば、プロセッサ11で実行されている各プロセスのプロセッサ使用率が含まれる。負荷状況15が所定条件を満たすか否かの判定には、例えば、負荷状況15と各プロセスの過去のプロセッサ使用率の履歴とを比較することが含まれる。各プロセスのプロセッサ使用率の履歴は、監視プロセス14によって収集するようにしてもよい。
所定条件には、例えば、プロセッサ11で実行中のプロセスの中に、現在のプロセッサ使用率が過去のプロセッサ使用率の最大値を超えるプロセスがないことが含まれる。また、所定条件には、例えば、プロセッサ11で実行中のプロセスのうち、現在のプロセッサ使用率が過去のプロセッサ使用率の平均値より大きいプロセスの数が、閾値以下であることが含まれる。負荷状況15が所定条件を満たす場合、監視プロセス14は、プロセッサ11が正常高負荷状態であると推定し、監視プロセス13に代わってタイマ12を初期化する。一方、負荷状況15が所定条件を満さない場合、監視プロセス14は、プロセッサ11が異常不停止状態であると推定し、タイマ12を初期化しない。
第1の実施の形態の情報処理装置10によれば、タイマ12を初期化する監視プロセス13と、監視プロセス13より優先度の高い監視プロセス14とが起動される。監視プロセス14により、監視プロセス13が実行されたか監視される。監視プロセス13が実行されていない場合、監視プロセス14により、プロセッサ11の負荷状況15が所定条件を満たすか判定される。負荷状況15が所定条件を満たす場合、監視プロセス13に代わって監視プロセス14によりタイマ12が初期化される。
これにより、監視プロセス13が実行されなくても、プロセッサ11が正常高負荷状態と判定されればタイマ12が初期化され、プロセッサ11がリセットされるのを回避できる。一方、プロセッサ11が異常不停止状態と判定されればタイマ12が初期化されず、プロセッサ11がリセットされる。また、監視プロセス13が実行されなくなってからタイマ12の初期化を停止するまでの許容時間を固定にする方法と比べて、プロセッサ11が正常高負荷状態であるにもかかわらずプロセッサ11がリセットされるリスクを低減できる。また、許容時間を固定にする方法と比べて、プロセッサ11が異常不停止状態になってからリセットされるまでの遅延を短縮できる。このように、タイマ12がタイムアップするタイミングを適切に調整することが可能となる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態の情報処理装置の例を示す図である。
第2の実施の形態の情報処理装置20は、プロセッサ21、タイマ22、メモリ23および記憶装置24を有する。プロセッサ21は、第1の実施の形態のプロセッサ11に対応する。タイマ22は、第1の実施の形態のタイマ12に対応する。
メモリ23は、RAM(Random Access Memory)などの揮発性の記憶装置である。メモリ23は、プロセッサ21が実行するプログラムやプロセッサ21が使用するデータを一時的に記憶する。メモリ23上にはログ情報27が生成される。ログ情報27は、プロセッサ21によるプロセスの実況状況を示す情報である。ログ情報27には、例えば、OSが生成するエラーメッセージ、プロセス間通信の情報、通信履歴、ハードウェアの設定情報などが含まれる。プロセッサ21がリセットされると、メモリ23上のログ情報27は破棄される。記憶装置24は、フラッシュメモリ、SSD(Solid State Drive)、HDD(Hard Disk Drive)などの不揮発性の記憶装置である。ただし、記憶装置24が情報処理装置20の外部に存在していてもよい。
プロセッサ21は、監視プロセス25(第1の監視プロセス)と監視プロセス26(第2の監視プロセス)を起動する。監視プロセス25は、第1の実施の形態の監視プロセス13に対応する。監視プロセス26は、第1の実施の形態の監視プロセス14に対応する。監視プロセス25は、低い優先度(例えば、最低優先度)で実行される。監視プロセス26は、監視プロセス25より高い優先度(例えば、最高優先度)で実行される。
監視プロセス25は、継続的に(例えば、所定の周期で間欠的に)タイマ22を初期化する。監視プロセス26は、予定されたタイミングに監視プロセス25が実行されたかを監視する。監視プロセス25が実行されていない場合、監視プロセス26は、プロセッサ21がリセットされる可能性があると判断する。
プロセッサ21がリセットされる可能性がある場合、監視プロセス25は、プロセッサ21がリセットされる前に、メモリ23から記憶装置24にログ情報27を退避する。すなわち、監視プロセス26は、メモリ23に記憶されたログ情報27を記憶装置24に保存する。ログ情報27は、監視プロセス25の不実行が検出されてから監視プロセス26によって生成されてもよい。また、ログ情報27は、監視プロセス25の不実行が検出される前に、OSなどによって生成されたものであってもよい。
第2の実施の形態の情報処理装置20によれば、タイマ22を初期化する監視プロセス25と、監視プロセス25より優先度の高い監視プロセス26とが起動される。監視プロセス26により、監視プロセス25が実行されたか監視される。監視プロセス25が実行されていない場合、監視プロセス26により、プロセッサ21がリセットされる前にメモリ23から記憶装置24にログ情報27が退避される。
これにより、プロセッサ21がリセットされても、不揮発性の記憶装置である記憶装置24にログ情報27を残すことができる。よって、プロセッサ21がリセットされた原因を分析することが容易となる。また、プロセッサ21やタイマ22に特別なハードウェアを設けなくてもよく、ログ情報27を保存することが容易となる。
なお、第2の実施の形態は、前述の第1の実施の形態と組み合わせることが可能である。例えば、監視プロセス25が実行されていない場合、監視プロセス26がログ情報27を記憶装置24に退避すると共に、プロセッサ21の負荷状況を確認する。第1の実施の形態で説明したように、負荷状況が所定条件を満たす場合、監視プロセス26が監視プロセス25に代わってタイマ22を初期化するようにしてもよい。
[第3の実施の形態]
次に、第3の実施の形態を説明する。
図3は、伝送装置のハードウェア例を示すブロック図である。
第3の実施の形態の伝送装置100は、ルータやスイッチなど、通信を中継する通信装置である。伝送装置100は、プログラムによって制御される点で、情報処理装置またはコンピュータと呼ぶこともできる。伝送装置100は、第1の実施の形態の情報処理装置10や第2の実施の形態の情報処理装置20に対応する。
伝送装置100は、CPU101、ウォッチドッグタイマ102、RAM104、不揮発性メモリ105、ブートメモリ106、管理インタフェース107および通信インタフェース108を有する。上記のユニットは、バス109に接続されている。また、CPU101とウォッチドッグタイマ102とは、リセット信号線103で接続されている。
CPU101は、第1の実施の形態のプロセッサ11や第2の実施の形態のプロセッサ21に対応する。ウォッチドッグタイマ102は、第1の実施の形態のタイマ12や第2の実施の形態のタイマ22に対応する。RAM104は、第2の実施の形態のメモリ23に対応する。不揮発性メモリ105は、第2の実施の形態の記憶装置24に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、ブートメモリ106に記憶されたプログラムをRAM104にロードし、プログラムを実行する。CPU101は、プログラムに基づいて起動された複数のプロセスを時分割に実行することができる。複数のプロセスそれぞれに対しては、OSによって優先度が付与され、優先度に応じて処理時間(CPUリソース)が割り当てられる。なお、CPU101は複数のCPUコアを備えてもよく、伝送装置100は複数のCPUを備えてもよい。複数のCPUの集合(マルチプロセッサ)を「プロセッサ」と呼んでもよい。
ウォッチドッグタイマ102は、タイムアップした場合に、リセット信号線103を介してCPU101にリセット信号を送信するタイマである。リセット信号は、CPU101に対する割り込み信号として送信される。CPU101は、ウォッチドッグタイマ102からリセット信号を受信すると、レジスタの値などの内部状態を破棄して再起動する。CPU101が再起動されると、ブートメモリ106からRAM104に再びプログラムがロードされてプログラムの最初から実行される。すなわち、リセット信号が発行されると、リセット前にCPU101で実行されていたプロセスは強制的に停止されることになる。なお、ウォッチドッグタイマ102は、リセット信号線103を使用する代わりに、バス109を介してCPU101にリセット信号を送信するようにしてもよい。
ウォッチドッグタイマ102は、揮発性の記憶装置であるクリアレジスタ102aを有する。CPU101は、バス109を介してクリアレジスタ102aにカウントの初期値(正の整数)を書き込む。ウォッチドッグタイマ102は、時間の経過に応じて、クリアレジスタ102aに記憶されたカウントを1ずつ減少させる(カウントダウンする)。クリアレジスタ102aに記憶されたカウントがゼロになる(タイムアップする)と、ウォッチドッグタイマ102はCPU101にリセット信号を送信する。
RAM104は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。CPU101がリセットされると、RAM104に記憶されたデータは破棄されることになる。なお、伝送装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
不揮発性メモリ105は、伝送装置100の稼働状況を示すログや伝送装置100の制御に用いられる制御情報などの各種データを記憶する不揮発性の記憶装置である。不揮発性メモリ105に記憶されるデータには、OSのログメッセージ、プロセス間通信の情報、温度・ファン回転数・通信インタフェース108の使用履歴などの稼働情報、ハードウェアの設定情報などが含まれ得る。不揮発性メモリ105として、例えば、フラッシュメモリやSSDなどを用いることができる。ただし、伝送装置100は、HDDなどの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
ブートメモリ106は、CPU101によって実行される各種プログラムを記憶する不揮発性の記憶装置である。ブートメモリ106に記憶されるプログラムには、BIOS(Basic Input Output System)プログラム、BIOSから呼び出される初期化プログラム、OSプログラム、伝送装置100を制御する制御プログラムなどが含まれ得る。制御プログラムには、ウォッチドッグタイマ102を用いてCPU101の異常を検出するための異常検出プログラムが含まれる。ブートメモリ106として、例えば、ROM(Read Only Memory)やフラッシュメモリなどを用いることができる。
管理インタフェース107は、ユーザが操作する端末装置30と接続する。端末装置30は、ディスプレイ31、入力デバイス32および媒体リーダ33を有する。なお、端末装置30は、CPU、RAM、不揮発性の記憶装置、通信インタフェースなどを更に有していてもよい。また、ディスプレイ31や入力デバイス32は、端末装置30の外部に存在していてもよい。その場合、端末装置30は、ディスプレイ31を接続する画像信号インタフェースや、入力デバイス32を接続する入力信号インタフェースを有する。
ディスプレイ31は、画像を表示する。ディスプレイ31としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ(PDP:Plasma Display Panel)、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなどを用いることができる。
入力デバイス32は、ユーザからの入力操作を受け付ける。入力デバイス32としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。端末装置30は、複数の種類の入力デバイスを有していてもよい。
媒体リーダ33は、記録媒体34に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体34として、例えば、フレキシブルディスク(FD:Flexible Disk)やHDDなどの磁気ディスク、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。記録媒体34から読み取られたプログラムやデータは、不揮発性メモリ105やブートメモリ106に転送されてもよい。
通信インタフェース108は、情報処理装置や他の伝送装置と接続する。通信インタフェース108は、複数の通信ポートを有していてもよい。CPU101によって、各通信ポートの使用方法が制御され、各通信ポートの使用状況が監視される。
図4は、第3の実施の形態の伝送装置の機能例を示すブロック図である。
伝送装置100は、プロセス起動部111、CPU使用率記憶部112、フラグ記憶部113、最低優先監視プロセス121および最高優先監視プロセス122を有する。CPU使用率記憶部112およびフラグ記憶部113は、RAM104に確保した記憶領域を用いて実現できる。プロセス起動部111、最低優先監視プロセス121および最高優先監視プロセス122は、CPU101が実行するプログラムを用いて実現できる。
プロセス起動部111は、BIOSプログラムから呼び出される初期化プログラムに基づいて起動される。プロセス起動部111は、CPU101が起動すると、初期段階で最低優先監視プロセス121と最高優先監視プロセス122を起動させる。
CPU使用率記憶部112は、CPU101で実行される複数のプロセスそれぞれのCPU使用率に関する履歴を記憶する。CPU使用率の履歴は、最高優先監視プロセス122によって収集される。CPU使用率の履歴の詳細は後述する。フラグ記憶部113は、最低優先監視プロセス121が実行されたか否かを示すフラグを記憶する。最低優先監視プロセス121が実行されると、フラグがON(1)に更新される。最高優先監視プロセス122によってフラグが確認されると、フラグがOFF(0)に更新される。ただし、後述するように、最低優先監視プロセス121が実行されたか否かを別の方法で確認することができる場合、伝送装置100はフラグ記憶部113を有しなくてもよい。
最低優先監視プロセス121は、CPU101で実行され得るプロセスの中の最低優先度で実行されるプロセスである。最低優先監視プロセス121は、定期的に、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む(すなわち、定期的にウォッチドッグタイマ102を初期化する)。最低優先監視プロセス121が実行される周期は、ウォッチドッグタイマ102のカウントが初期値からゼロまで減少する時間よりも短いものとし、例えば、10秒程度とする。
最低優先監視プロセス121が正常に実行されていれば、ウォッチドッグタイマ102によるリセット信号の発行を回避することができる。ただし、CPU101の負荷が高い場合、OSによって最低優先監視プロセス121に割り当てられるCPUリソースが減少し、予定したタイミングに最低優先監視プロセス121が実行されない可能性がある。最低優先監視プロセス121は、ウォッチドッグタイマ102を初期化するとき、フラグ記憶部113に記憶されているフラグをONに更新する。
最高優先監視プロセス122は、CPU101で実行され得るプロセスの中の最高優先度で実行されるプロセスである。最高優先監視プロセス122は、定期的に、CPU101で実行されている複数のプロセスそれぞれのCPU使用率の情報をOSから取得し、CPU使用率記憶部112に記憶された履歴を更新する。また、最高優先監視プロセス122は、定期的にフラグ記憶部113に記憶されたフラグを参照して、最低優先監視プロセス121が正常に実行されているか確認する。または、最高優先監視プロセス122は、定期的にクリアレジスタ102aを参照して、ウォッチドッグタイマ102が正常に初期化されているか確認する。最高優先監視プロセス122が実行される周期は、最低優先監視プロセス121と同じか若干長いものとし、例えば、10〜20秒程度とする。
最低優先監視プロセス121が正常に実行されていない場合、最高優先監視プロセス122は、RAM104からログを収集する。ログには、例えば、OSのエラーメッセージ、プロセス間通信の情報、通信インタフェース108の使用履歴、温度・ファン回転数などの環境情報、ハードウェアの設定情報などが含まれる。ログは、CPU101がリセットされた場合にリセット原因を分析するのに有用な情報である。最高優先監視プロセス122は、収集したログを不揮発性メモリ105に保存する。
また、最低優先監視プロセス121が正常に実行されていない場合、最高優先監視プロセス122は、複数のプロセスそれぞれの現在のCPU使用率を確認する。最高優先監視プロセス122は、現在のCPU使用率とCPU使用率記憶部112に記憶された履歴とを比較し、CPU101が正常高負荷状態か異常不停止状態かを判定する。
正常高負荷状態は、プロセスが正常に実行されているものの一時的に負荷が高くなっている状態である。異常不停止状態は、プログラムの不具合によって、無限ループを実行するなどプロセスが意図せず停止できなくなった状態である。正常高負荷状態と推定した場合、最高優先監視プロセス122は、最低優先監視プロセス121に代わってウォッチドッグタイマ102を初期化する。一方、異常不停止状態と推定した場合、最高優先監視プロセス122は、ウォッチドッグタイマ102を初期化せずリセット信号が発行されるのを期待する。正常高負荷状態と異常不停止状態の判定方法の詳細は後述する。
図5は、第3の実施の形態のプロセス優先度の例を示す図である。
CPU101において時分割に実行される複数のプロセスは、OSによって管理される。OSは、複数のプロセスそれぞれに対して優先度を付与し、優先度に応じてCPU101の処理時間を割り当てる。優先度が高いプロセスに対して、優先度が低いプロセスよりも優先的にCPU101の処理時間が割り当てられる。
前述のように、最低優先監視プロセス121は、OSが付与し得る複数の優先度のうちの最低優先度で実行される。最高優先監視プロセス122は、OSが付与し得る複数の優先度のうちの最高優先度で実行される。他のプロセスは原則として、最低優先監視プロセス121よりも高く、最高優先監視プロセス122よりも低い優先度で実行される。例えば、アプリケーションプログラムに基づいて起動されるアプリケーションプロセス123a,123bには、最高優先度と最低優先度の間の優先度が付与される。
ここで、例えば、アプリケーションプロセス123aが暴走した、すなわち、アプリケーションプログラムの不具合によってアプリケーションプロセス123aが意図せず停止できなくなったとする。この場合でも、最高優先監視プロセス122には優先的にCPUリソースが割り当てられる。よって、最高優先監視プロセス122は、予定されたタイミングで実行される可能性が高い。一方、アプリケーションプロセス123aが多くのCPUリソースを消費することにより、最低優先監視プロセス121にはCPUリソースがほとんど割り当てられなくなると考えられる。よって、最低優先監視プロセス121は、予定されたタイミングで実行できない可能性が高い。
図6は、CPU使用率テーブルの例を示す図である。
CPU使用率テーブル114は、CPU使用率記憶部112に記憶される。CPU使用率テーブル114は、プロセスID、平均、最大、最小およびリストの項目を有する。
プロセスIDは、CPU101で実行されるプロセスを識別する識別情報である。CPU使用率テーブル114に登録されるプロセスには、最低優先監視プロセス121や最高優先監視プロセス122が含まれてもよいし含まれなくてもよい。
平均の項目は、プロセスIDが示すプロセスの過去のCPU使用率の平均値を示す。最大の項目は、プロセスIDが示すプロセスの過去のCPU使用率の最大値を示す。最小の項目は、プロセスIDが示すプロセスの過去のCPU使用率の最小値を示す。リストの項目には、定期的にOSから取得するCPU使用率がプロセス毎に列挙される。リストに列挙されるCPU使用率は、直近のCPU101の起動以降に取得されたものである。ただし、所定時間以上経過した古いCPU使用率をリストから削除してもよい。上記の平均値、最大値および最小値は、リストに基づいて算出される。
次に、最低優先監視プロセス121と最高優先監視プロセス122の処理を説明する。
図7は、第3の実施の形態の最低優先監視の手順例を示すフローチャートである。
最低優先監視プロセス121は、図7の処理を繰り返し実行する。
(S10)最低優先監視プロセス121は、タイマを開始する。使用するタイマは、OSが有するソフトウェアタイマでもよいし、伝送装置100が有するウォッチドッグタイマ102以外のハードウェアタイマでもよい。このタイマのタイマ時間は、ウォッチドッグタイマ102よりも短いものとし、例えば、10秒程度とする。
(S11)最低優先監視プロセス121は、ステップS10で開始したタイマが終了するのを待つ。タイマが終了した場合はステップS12に処理が進み、タイマが終了していない場合はステップS11の処理を繰り返す。なお、最低優先監視プロセス121は、タイマが終了するまでスリープしていてもよい。その場合、OSまたはハードウェアタイマからの割り込みによってスリープ状態が解除される。
(S12)最低優先監視プロセス121は、フラグ記憶部113に記憶されたフラグをON(1)に更新する。ただし、後述するように、最高優先監視プロセス122がフラグを参照しない場合、最低優先監視プロセス121はフラグを更新しなくてもよい。
(S13)最低優先監視プロセス121は、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む。カウントの初期値は、正の整数であり、リセットまでの最大待ち時間を考慮して伝送装置100の設計時に決定される。そして、最低優先監視プロセス121は、ステップS10に戻って処理を繰り返す。
図8は、第3の実施の形態の最高優先監視の手順例を示すフローチャートである。
最高優先監視プロセス122は、図8の処理を繰り返し実行する。
(S20)最高優先監視プロセス122は、タイマを開始する。使用するタイマは、OSが有するソフトウェアタイマでもよいし、伝送装置100が有するウォッチドッグタイマ102以外のハードウェアタイマでもよい。このタイマのタイマ時間は、最低優先監視プロセス121と同じか若干長いものとし、例えば、10〜20秒程度とする。
(S21)最高優先監視プロセス122は、ステップS20で開始したタイマが終了するのを待つ。タイマが終了した場合はステップS22に処理が進み、タイマが終了していない場合はステップS21の処理を繰り返す。なお、最高優先監視プロセス122は、タイマが終了するまでスリープしていてもよい。その場合、OSまたはハードウェアタイマからの割り込みによってスリープ状態が解除される。
(S22)最高優先監視プロセス122は、CPU101で実行されているプロセスそれぞれの現在のCPU使用率を示す情報をOSから取得する。
(S23)最高優先監視プロセス122は、最低優先監視プロセス121が動作したか否か確認する。例えば、最高優先監視プロセス122は、フラグ記憶部113に記憶されているフラグを参照する。フラグ=ON(1)は、最低優先監視プロセス121が動作したことを示す。フラグ=OFF(0)は、最低優先監視プロセス121が動作しなかったことを示す。最高優先監視プロセス122は、参照後にフラグをOFFに戻す。
また、例えば、最高優先監視プロセス122は、ウォッチドッグタイマ102のクリアレジスタ102aに記憶されているカウントを参照する。今回のカウントと前回のカウントとの差が閾値以下である場合、最高優先監視プロセス122は、カウントが初期化された、すなわち、最低優先監視プロセス121が動作したと判断する。今回のカウントと前回のカウントとの差が閾値を超える場合、最高優先監視プロセス122は、カウントが初期化されなかった、すなわち、最低優先監視プロセス121が動作しなかったと判断する。
(S24)上記のステップS23で最低優先監視プロセス121が動作したと判断された場合、ステップS25に処理が進む。上記のステップS23で最低優先監視プロセス121が動作しなかったと判断された場合、ステップS26に処理が進む。
(S25)最高優先監視プロセス122は、ステップS22で取得したCPU使用率に基づいて、CPU使用率記憶部112に記憶されたCPU使用率テーブル114を更新する。具体的には、最高優先監視プロセス122は、各プロセスについて、最新のCPU使用率をリストに追加する。また、最高優先監視プロセス122は、更新したリストに基づいてCPU使用率の平均値を更新する。また、最高優先監視プロセス122は、最新のCPU使用率が過去のCPU使用率の最大値を超える場合は最大値を更新し、最新のCPU使用率が過去のCPU使用率の最小値未満である場合は最小値を更新する。そして、最高優先監視プロセス122は、ステップS20に戻って処理を繰り返す。
(S26)最高優先監視プロセス122は、RAM104からログを収集する。ログには、例えば、OSのエラーメッセージ、プロセス間通信の情報、通信インタフェース108の使用履歴、温度・ファン回転数などの環境情報、ハードウェアの設定情報などが含まれる。最高優先監視プロセス122は、ログを不揮発性メモリ105に退避する。
(S27)最高優先監視プロセス122は、各プロセスについて、最新のCPU使用率とCPU使用率テーブル114に登録された最大値とを比較する。最高優先監視プロセス122は、CPU101で実行されているプロセスの中に、最新のCPU使用率が過去の最大値を超えるプロセスが存在するか判断する。該当するプロセスが存在する場合、最高優先監視プロセス122は、CPU101が異常不停止状態であると推定する。そして、最高優先監視プロセス122は、ステップS20に戻って処理を繰り返す。該当するプロセスが存在しない場合、ステップS28に処理が進む。
(S28)最高優先監視プロセス122は、最新のCPU使用率とCPU使用率テーブル114とに基づいて負荷ポイントを算出する。最高優先監視プロセス122は、相対的負荷基準を満たすプロセス1つにつき負荷ポイントを1つ加算し、また、絶対的負荷基準を満たすプロセス1つにつき負荷ポイントを1つ加算する。
相対的負荷基準を満たすプロセスは、他のプロセスと比べたCPU使用率の相対的な大きさが、通常時は高くないが現在は高いプロセスである。例えば、最高優先監視プロセス122は、プロセスをCPU使用率の平均値が高い順にソートして通常時の順位を算出し、プロセスを最新のCPU使用率が高い順にソートして現在の順位を算出する。通常時には所定順位以内(例えば、10位以内)に入っておらず、現在は所定順位以内に入っているプロセスを、相対的負荷基準を満たすプロセスとする。絶対的負荷基準を満たすプロセスは、CPU使用率が平均値よりも大きく、過去の最大値よりも小さいプロセスである。
(S29)最高優先監視プロセス122は、ステップS28で算出した負荷ポイントが閾値を超えるか判断する。閾値は、伝送装置100の設計時に決定される。負荷ポイントが閾値を超える場合、最高優先監視プロセス122は、CPU101が異常不停止状態であると推定する。そして、最高優先監視プロセス122は、ステップS20に戻って処理を繰り返す。負荷ポイントが閾値以下である場合、最高優先監視プロセス122は、CPU101が正常高負荷状態であると推定する。そして、ステップS30に処理が進む。
(S30)最高優先監視プロセス122は、最低優先監視プロセス121に代わって、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む。そして、最高優先監視プロセス122は、ステップS20に戻って処理を繰り返す。
第3の実施の形態の伝送装置100によれば、最高優先監視プロセス122により、ウォッチドッグタイマ102を初期化する最低優先監視プロセス121が動作しているか監視される。最低優先監視プロセス121が動作していない場合、最高優先監視プロセス122により、RAM104から不揮発性メモリ105にログが退避される。また、最高優先監視プロセス122により、各プロセスのCPU使用率が収集される。CPU使用率が過去と比べて顕著に高いとは言えない場合、最高優先監視プロセス122により、最低優先監視プロセス121に代わってウォッチドッグタイマ102が初期化される。
これにより、CPU101が正常高負荷状態と推定される場合には、ウォッチドッグタイマ102が初期化され、CPU101が誤ってリセットされることを抑制できる。また、CPU101が異常不停止状態と推定される場合には、ウォッチドッグタイマ102が初期化されず、CPU101を迅速にリセットできる。このように、最低優先監視プロセス121が動作しなくなった際のCPU101の負荷状況に応じて、ウォッチドッグタイマ102がリセット信号を送信するタイミングを適切に調整できる。また、CPU101がリセットされる前にログが保存されるため、リセット原因の分析が容易になる。
[第4の実施の形態]
次に、第4の実施の形態を説明する。
第3の実施の形態との違いを中心に説明し、第3の実施の形態と同様の事項については説明を省略することがある。第4の実施の形態の伝送装置200は、図3に示した第3の実施の形態の伝送装置100と同様のハードウェア構成によって実現できる。
図9は、第4の実施の形態の伝送装置の機能例を示すブロック図である。
伝送装置200は、プロセス起動部211、判定回数記憶部212、フラグ記憶部213、最低優先監視プロセス221、最高優先監視プロセス222および中間優先監視プロセス223を有する。判定回数記憶部212は、RAM104に確保した記憶領域を用いて実現できる。フラグ記憶部213は、CPU101が有するレジスタまたはRAM104に確保した記憶領域を用いて実現できる。プロセス起動部211、最低優先監視プロセス221、最高優先監視プロセス222および中間優先監視プロセス223は、CPU101が実行するプログラムを用いて実現できる。
プロセス起動部211、最低優先監視プロセス221および最高優先監視プロセス222は、図4に示した第3の実施の形態のプロセス起動部111、最低優先監視プロセス121および最高優先監視プロセス122に対応する。
プロセス起動部211は、CPU101が起動すると、最低優先監視プロセス221と最高優先監視プロセス222と中間優先監視プロセス223を起動させる。
判定回数記憶部212は、判定回数カウンタを記憶する。判定回数カウンタは、最低優先監視プロセス221、最高優先監視プロセス222および中間優先監視プロセス223のうちの少なくとも1つが実行されなかったことが連続して検出された回数を示す。判定回数カウンタは、最高優先監視プロセス222によって更新される。
フラグ記憶部213は、最低優先監視プロセス221、最高優先監視プロセス222および中間優先監視プロセス223が実行されたか否かを示すフラグの集合を記憶する。最低優先監視プロセス221が実行されると、それに対応するフラグがON(1)に更新される。最高優先監視プロセス222が実行されると、それに対応するフラグがONに更新される。中間優先監視プロセス223が実行されると、それに対応するフラグがONに更新される。最高優先監視プロセス222によってフラグが確認されると、フラグ記憶部213に記憶された全てのフラグがOFF(0)に更新される。なお、CPU101内のレジスタを用いる場合、異なるフラグを異なるレジスタに格納してもよいし、異なるフラグを同じレジスタの異なるビットに格納してもよい。
最低優先監視プロセス221は、CPU101で実行され得るプロセスの中の最低優先度で実行されるプロセスである。最低優先監視プロセス221は、定期的に、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む(すなわち、定期的にウォッチドッグタイマ102を初期化する)。最低優先監視プロセス221は、ウォッチドッグタイマ102を初期化するとき、フラグ記憶部213に記憶されたフラグのうち最低優先監視プロセス221に対応するフラグをONに更新する。
最高優先監視プロセス222は、CPU101で実行され得るプロセスの中の最高優先度で実行されるプロセスである。最高優先監視プロセス222は、定期的に、フラグ記憶部213に記憶されたフラグの集合を参照して、全ての監視プロセス(最低優先監視プロセス221、最高優先監視プロセス222および中間優先監視プロセス223)が正常に実行されているか確認する。少なくとも1つの監視プロセスが正常に実行されていない場合、最高優先監視プロセス222は、RAM104からログを収集する。ログには、第3の実施の形態で説明したものに加えて、フラグ記憶部213に記憶されたフラグの集合が含まれる。最高優先監視プロセス222は、ログを不揮発性メモリ105に保存する。
また、少なくとも1つの監視プロセスが正常に実行されていない場合、最高優先監視プロセス222は、判定回数記憶部212に記憶された判定回数カウンタに1加算する。判定回数カウンタが閾値(例えば、6)以下である場合、最高優先監視プロセス222は、最低優先監視プロセス221に代わってウォッチドッグタイマ102を初期化する。一方、判定回数カウンタが閾値を超えた場合、最高優先監視プロセス222は、ウォッチドッグタイマ102の初期化を停止してリセット信号が発行されるのを期待する。なお、全ての監視プロセスが正常に実行された場合、最高優先監視プロセス222は、判定回数記憶部212に記憶された判定回数カウンタをゼロに初期化する。
中間優先監視プロセス223は、最高優先度と最低優先度の間の所定の優先度で実行されるプロセスである。この優先度は予め設定される。中間優先監視プロセス223は、定期的に、フラグ記憶部213に記憶されたフラグのうち中間優先監視プロセス223に対応するフラグをONに更新する。中間優先監視プロセス223が実行される周期は、最低優先監視プロセス221と同じとし、例えば、10秒程度とする。
図10は、第4の実施の形態のプロセス優先度の例を示す図である。
上記のように、最低優先監視プロセス221は、OSが付与し得る複数の優先度のうちの最低優先度で実行される。最高優先監視プロセス222は、OSが付与し得る複数の優先度のうちの最高優先度で実行される。中間優先監視プロセス223は、OSが付与し得る複数の優先度のうち、最高優先度と最低優先度の間の所定の優先度で実行される。
例えば、アプリケーションプロセス224aに、最高優先監視プロセス222と中間優先監視プロセス223の間の優先度が付与されたとする。また、アプリケーションプロセス224bに、中間優先監視プロセス223と最低優先監視プロセス221の間の優先度が付与されたとする。アプリケーションプロセス224aが暴走した場合、最高優先監視プロセス222は正常に実行される一方、中間優先監視プロセス223と最低優先監視プロセス221は実行されない可能性が高い。また、アプリケーションプロセス224bが暴走した場合、最高優先監視プロセス222と中間優先監視プロセス223は正常に実行される一方、最低優先監視プロセス221は実行されない可能性が高い。
このように、複数の監視プロセスを起動しておき、それら監視プロセスのフラグをログに含めて保存することで、リセット原因となったプロセスを特定することが容易となる。図9,10では、伝送装置200は1つの中間優先監視プロセスを起動しているが、優先度の異なる複数の中間優先監視プロセスを起動するようにしてもよい。なお、1以上の監視プロセスが実行されていない場合、通常、少なくとも最低優先監視プロセス221は実行されていない。また、通常、最高優先監視プロセス222は正常に実行される。
図11は、フラグリストの例を示す図である。
フラグリスト214は、フラグ記憶部213に記憶される。フラグリスト214は、最低優先度フラグ、中間優先度フラグおよび最高優先度フラグを含む。最低優先度フラグは、最低優先監視プロセス221が実行されたか否かを示す。中間優先度フラグは、中間優先監視プロセス223が実行されたか否かを示す。最高優先度フラグは、最高優先監視プロセス222が実行されたか否かを示す。なお、伝送装置200が複数の中間優先監視プロセスを起動した場合、フラグリスト214は複数の中間優先度フラグを含む。
図12は、第4の実施の形態の最低優先監視の手順例を示すフローチャートである。
最低優先監視プロセス221は、図12の処理を繰り返し実行する。
(S40)最低優先監視プロセス221は、タイマを開始する。
(S41)最低優先監視プロセス221は、ステップS40で開始したタイマが終了するのを待つ。タイマが終了した場合はステップS42に処理が進み、タイマが終了していない場合はステップS41の処理を繰り返す。
(S42)最低優先監視プロセス221は、フラグ記憶部213に記憶されたフラグリスト214の中の最低優先度フラグをON(1)に更新する。
(S43)最低優先監視プロセス221は、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む。そして、最低優先監視プロセス221は、ステップS40に戻って処理を繰り返す。
図13は、第4の実施の形態の中間優先監視の手順例を示すフローチャートである。
中間優先監視プロセス223は、図13の処理を繰り返し実行する。
(S50)中間優先監視プロセス223は、タイマを開始する。使用するタイマは、OSが有するソフトウェアタイマでもよいし、伝送装置200が有するウォッチドッグタイマ102以外のハードウェアタイマでもよい。このタイマのタイマ時間は、最低優先監視プロセス221と同じとし、例えば、10秒程度とする。
(S51)中間優先監視プロセス223は、ステップS50で開始したタイマが終了するのを待つ。タイマが終了した場合はステップS52に処理が進み、タイマが終了していない場合はステップS51の処理を繰り返す。なお、中間優先監視プロセス223は、タイマが終了するまでスリープしていてもよい。その場合、OSまたはハードウェアタイマからの割り込みによってスリープ状態が解除される。
(S52)中間優先監視プロセス223は、フラグ記憶部213に記憶されたフラグリスト214の中の中間優先度フラグをON(1)に更新する。そして、中間優先監視プロセス223は、ステップS50に戻って処理を繰り返す。
図14は、第4の実施の形態の最高優先監視の手順例を示すフローチャートである。
最高優先監視プロセス222は、図14の処理を繰り返し実行する。
(S60)最高優先監視プロセス222は、タイマを開始する。
(S61)最高優先監視プロセス222は、ステップS60で開始したタイマが終了するのを待つ。タイマが終了した場合はステップS62に処理が進み、タイマが終了していない場合はステップS61の処理を繰り返す。
(S62)最高優先監視プロセス222は、フラグ記憶部213に記憶されたフラグリスト214の中の最高優先度フラグをON(1)に更新する。
(S63)最高優先監視プロセス222は、フラグリスト214に含まれる最低優先度フラグ、中間優先度フラグおよび最高優先度フラグを確認する。
(S64)最高優先監視プロセス222は、フラグリスト214に含まれる最低優先度フラグ、中間優先度フラグおよび最高優先度フラグをOFF(0)に初期化する。
(S65)最高優先監視プロセス222は、ステップS63で確認したフラグ全てがONであったか判断する。全てのフラグがONであった場合はステップS66に処理が進み、少なくとも1つのフラグがOFFであった場合はステップS67に処理が進む。
(S66)最高優先監視プロセス222は、判定回数記憶部212に記憶された判定回数カウンタをゼロに初期化する。そして、最高優先監視プロセス222は、ステップS60に戻って処理を繰り返す。
(S67)最高優先監視プロセス222は、判定回数カウンタに1を加算する。
(S68)最高優先監視プロセス222は、RAM104からログを収集する。ログには、例えば、OSのエラーメッセージ、プロセス間通信の情報、通信インタフェース108の使用履歴、温度・ファン回転数などの環境情報、ハードウェアの設定情報などが含まれる。また、ログには、ステップS63で確認したフラグの集合(初期化前のもの)が含まれる。最高優先監視プロセス222は、ログを不揮発性メモリ105に退避する。
(S69)最高優先監視プロセス222は、判定回数カウンタの値が閾値(例えば、6)より大きいか判断する。判定回数カウンタの値が閾値より大きい場合、最高優先監視プロセス222は、CPU101が異常不停止状態であると推定する。そして、最高優先監視プロセス222は、ステップS60に戻って処理を繰り返す。判定回数カウンタの値が閾値以下である場合、最高優先監視プロセス222は、CPU101が正常高負荷状態である可能性があると判断する。そして、ステップS70に処理が進む。
(S70)最高優先監視プロセス222は、最低優先監視プロセス221に代わって、ウォッチドッグタイマ102のクリアレジスタ102aにカウントの初期値を書き込む。そして、最高優先監視プロセス222は、ステップS60に戻って処理を繰り返す。
第4の実施の形態の伝送装置200によれば、最高優先監視プロセス222により、全ての監視プロセスが動作しているか監視される。1以上の監視プロセスが動作していない場合、最高優先監視プロセス222により、RAM104から不揮発性メモリ105にログが退避される。1以上の監視プロセスが動作していないことの検出回数が少ないうちは、最高優先監視プロセス222により、最低優先監視プロセス221に代わってウォッチドッグタイマ102が初期化される。一方、1以上の監視プロセスが動作していないことの検出回数が多くなると、ウォッチドッグタイマ102の初期化が停止される。
これにより、CPU101の負荷が一時的に増大しても、ウォッチドッグタイマ102が初期化され、CPU101が誤ってリセットされることを抑制できる。また、CPU101がリセットされる前にログが保存されるため、リセット原因の分析が容易になる。また、中間優先監視プロセス223が動作したか否かを示すフラグがログに含めて保存されるため、リセット原因のプロセスを特定することが容易になる。
なお、前述のように、第1の実施の形態の情報処理は、情報処理装置10にプログラムを実行させることで実現できる。第2の実施の形態の情報処理は、情報処理装置20にプログラムを実行させることで実現できる。第3の実施の形態の情報処理は、伝送装置100にプログラムを実行させることで実現できる。第4の実施の形態の情報処理は、伝送装置200にプログラムを実行させることで実現できる。
プログラムは、コンピュータ読み取り可能な記録媒体(例えば、記録媒体34)に記録しておくことができる。記録媒体として、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、FDおよびHDDが含まれる。光ディスクには、CD、CD−R(Recordable)/RW(Rewritable)、DVDおよびDVD−R/RWが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体から他の記録媒体(例えば、不揮発性メモリ105)にプログラムをコピーして実行してもよい。
10,20 情報処理装置
11,21 プロセッサ
12,22 タイマ
13,14,25,26 監視プロセス
15 負荷状況
23 メモリ
24 記憶装置
27 ログ情報

Claims (7)

  1. プロセッサと、タイムアップした場合に前記プロセッサをリセットさせるタイマとを有するコンピュータが実行する異常検出方法であって、
    前記プロセッサを用いて、前記タイマを初期化する第1の監視プロセスと、前記第1の監視プロセスより優先度の高い第2の監視プロセスとを起動し、
    前記第2の監視プロセスにより、前記第1の監視プロセスが実行されたか監視し、
    前記第1の監視プロセスが実行されていない場合、前記第2の監視プロセスにより、前記プロセッサの負荷状況が所定の条件を満たすか判定し、前記負荷状況が前記所定の条件を満たす場合は前記第2の監視プロセスにより前記タイマを初期化する、
    異常検出方法。
  2. 前記第2の監視プロセスにより、前記第1および第2の監視プロセス以外の他のプロセスによって使用された前記プロセッサのリソース量を示す履歴を保存し、
    前記負荷状況が前記所定の条件を満たすか否かの判定は、前記他のプロセスによって使用されている現在のリソース量と前記履歴とを比較することを含む、
    請求項1記載の異常検出方法。
  3. 前記第1の監視プロセスが実行されていない場合、前記第2の監視プロセスにより、前記コンピュータが有するメモリから不揮発性の記憶装置にログ情報を退避する、
    請求項1または2記載の異常検出方法。
  4. 前記プロセッサを用いて、前記第1の監視プロセスより優先度が高く前記第2の監視プロセスより優先度が低い第3の監視プロセスを更に起動し、
    前記ログ情報は、前記第3の監視プロセスが実行されたか否かを示す情報を含む、
    請求項3記載の異常検出方法。
  5. プロセッサと、メモリと、タイムアップした場合に前記プロセッサをリセットさせるタイマとを有するコンピュータが実行する異常検出方法であって、
    前記プロセッサを用いて、前記タイマを初期化する第1の監視プロセスと、前記第1の監視プロセスより優先度の高い第2の監視プロセスとを起動し、
    前記第2の監視プロセスにより、前記第1の監視プロセスが実行されたか監視し、
    前記第1の監視プロセスが実行されていない場合、前記第2の監視プロセスにより、前記メモリから不揮発性の記憶装置にログ情報を退避する、
    異常検出方法。
  6. プロセッサと、
    タイムアップした場合に前記プロセッサをリセットさせるタイマとを有し、
    前記プロセッサは、前記タイマを初期化する第1の監視プロセスと、前記第1の監視プロセスより優先度の高い第2の監視プロセスとを起動し、
    前記第2の監視プロセスは、前記第1の監視プロセスが実行されたか監視し、前記第1の監視プロセスが実行されていない場合、前記プロセッサの負荷状況が所定の条件を満たすか判定し、前記負荷状況が前記所定の条件を満たす場合は前記タイマを初期化する、
    情報処理装置。
  7. タイムアップした場合にプロセッサをリセットさせるタイマを有するコンピュータに、
    前記タイマを初期化する第1の監視プロセスと、前記第1の監視プロセスより優先度の高い第2の監視プロセスとを起動し、
    前記第2の監視プロセスにより、前記第1の監視プロセスが実行されたか監視し、
    前記第1の監視プロセスが実行されていない場合、前記第2の監視プロセスにより、前記プロセッサの負荷状況が所定の条件を満たすか判定し、前記負荷状況が前記所定の条件を満たす場合は前記第2の監視プロセスにより前記タイマを初期化する、
    処理を実行させる異常検出プログラム。
JP2015113658A 2015-06-04 2015-06-04 異常検出方法、情報処理装置および異常検出プログラム Pending JP2016224883A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015113658A JP2016224883A (ja) 2015-06-04 2015-06-04 異常検出方法、情報処理装置および異常検出プログラム
US15/149,366 US20160357623A1 (en) 2015-06-04 2016-05-09 Abnormality detection method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015113658A JP2016224883A (ja) 2015-06-04 2015-06-04 異常検出方法、情報処理装置および異常検出プログラム

Publications (1)

Publication Number Publication Date
JP2016224883A true JP2016224883A (ja) 2016-12-28

Family

ID=57451778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015113658A Pending JP2016224883A (ja) 2015-06-04 2015-06-04 異常検出方法、情報処理装置および異常検出プログラム

Country Status (2)

Country Link
US (1) US20160357623A1 (ja)
JP (1) JP2016224883A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021044476A1 (ja) * 2019-09-02 2021-03-11 三菱電機株式会社 マルチタスク装置およびマルチタスク方法

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10419303B2 (en) * 2016-04-29 2019-09-17 Cisco Technology, Inc. Real-time ranking of monitored entities
US10606702B2 (en) * 2016-11-17 2020-03-31 Ricoh Company, Ltd. System, information processing apparatus, and method for rebooting a part corresponding to a cause identified
JP2019061467A (ja) * 2017-09-26 2019-04-18 オムロン株式会社 サポート装置およびサポートプログラム
JP7027974B2 (ja) * 2018-03-12 2022-03-02 京セラドキュメントソリューションズ株式会社 画像形成装置
CN111061590A (zh) * 2019-12-20 2020-04-24 威创集团股份有限公司 一种看门狗电路的控制方法及***

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7689875B2 (en) * 2002-04-25 2010-03-30 Microsoft Corporation Watchdog timer using a high precision event timer
US20050188274A1 (en) * 2004-01-29 2005-08-25 Embedded Wireless Labs Watchdog system and method for monitoring functionality of a processor

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021044476A1 (ja) * 2019-09-02 2021-03-11 三菱電機株式会社 マルチタスク装置およびマルチタスク方法
JPWO2021044476A1 (ja) * 2019-09-02 2021-11-04 三菱電機株式会社 マルチタスク装置およびマルチタスク方法
JP6991404B2 (ja) 2019-09-02 2022-01-12 三菱電機株式会社 マルチタスク装置およびマルチタスク方法

Also Published As

Publication number Publication date
US20160357623A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
JP2016224883A (ja) 異常検出方法、情報処理装置および異常検出プログラム
US9081676B2 (en) Operating computer memory
US9389937B2 (en) Managing faulty memory pages in a computing system
CN107122321B (zh) 硬件修复方法、硬件修复***以及计算机可读取存储装置
US9372717B2 (en) Interruption of chip component managing tasks
US20180113764A1 (en) Hypervisor Based Watchdog Timer
JP5579650B2 (ja) 監視対象プロセスを実行する装置及び方法
US11526411B2 (en) System and method for improving detection and capture of a host system catastrophic failure
US10705901B2 (en) System and method to control memory failure handling on double-data rate dual in-line memory modules via suspension of the collection of correctable read errors
JP2010086364A (ja) 情報処理装置、動作状態監視装置および方法
US8230446B2 (en) Providing a computing system with real-time capabilities
US10761919B2 (en) System and method to control memory failure handling on double-data rate dual in-line memory modules
JP6148129B2 (ja) 情報処理装置、ファームウェア更新方法およびファームウェア更新プログラム
US9411666B2 (en) Anticipatory protection of critical jobs in a computing system
JP2006227962A (ja) アプリケーションタスク監視システムおよび方法
US20130318310A1 (en) Processor processing method and processor system
JP2010009258A (ja) ソフトウエアの異常検出装置
US20170111224A1 (en) Managing component changes for improved node performance
US9075902B2 (en) Tracking errors in a computing system
JP2012108848A (ja) 動作ログ収集システム及びプログラム
JP6024742B2 (ja) 情報処理装置、情報処理方法、情報処理プログラム、及び記録媒体
JP2005293164A (ja) タスク監視方式
KR102615017B1 (ko) 프로그램 동적 실행 장치 및 방법
JP6268731B2 (ja) ジョブ管理装置、ジョブ管理方法、及びプログラム
JP2009217760A (ja) 電子計算機装置