JP2008102778A - 情報処理装置、情報処理装置の制御方法及びプログラム - Google Patents
情報処理装置、情報処理装置の制御方法及びプログラム Download PDFInfo
- Publication number
- JP2008102778A JP2008102778A JP2006285343A JP2006285343A JP2008102778A JP 2008102778 A JP2008102778 A JP 2008102778A JP 2006285343 A JP2006285343 A JP 2006285343A JP 2006285343 A JP2006285343 A JP 2006285343A JP 2008102778 A JP2008102778 A JP 2008102778A
- Authority
- JP
- Japan
- Prior art keywords
- task
- function
- high load
- state
- continuation
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3409—Recording 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
- G06F11/3433—Recording 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 for load management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3452—Performance evaluation by statistical analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording 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/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/81—Threshold
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/86—Event-based monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/88—Monitoring involving counting
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Life Sciences & Earth Sciences (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】マルチタスクオペレーティングシステムにおいて障害タスクを精度良く検出し得る構成を提供することを目的とする。
【解決手段】CPUの高負荷状態を検出する高負荷継続検出手段と、タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、前記高負荷継続検出手段によってCPUの高負荷状態が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とよりなる。
【選択図】図5
【解決手段】CPUの高負荷状態を検出する高負荷継続検出手段と、タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、前記高負荷継続検出手段によってCPUの高負荷状態が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とよりなる。
【選択図】図5
Description
本発明は情報処理装置、情報処理装置の制御方法及びプログラムに係り、特にマルチタスクオペレーティングシステムを有する情報処理装置、当該情報処理装置の制御方法及び同情報処理装置の制御方法をコンピュータに実行させるためのプログラムに関する。
例えば優先度付きマルチタスクオペレーティングシステム(以下、オペレーティングシステムを単にOSと称する)を搭載したコンピュータシステムにおいて、CPUの負荷が100%の状態がある一定時間継続する状態を異常状態として検出するための手法として以下の方法が考えられる。すなわち、異常監視タスク(最高優先度)と異常検出タスク(最低優先度)とで構成されたプログラムにおいて、同異常検出タスクが一定時間動作していないことを異常監視タスクが検出することで判定する方法である(特許文献1参照)
又CPU負荷が100%の状態がある一定時間継続して発生した際、その原因として、あるタスク上で動作するプログラムが無限ループ動作を行っている場合が考えられるが、その原因となっているタスクを検出するための手法として以下の方法が考えられる。すなわち異常監視タスク(最高優先度)が異常を検出した際、異常検出タスク(最低優先度)だけでなく全てのタスクに対し、それらが動作しているかどうかについての検査を行うことにより当該異常の原因となったタスクを特定する方法である(特許文献2参照)。
又CPU負荷が100%の状態がある一定時間継続して発生した際、その原因として、あるタスク上で動作するプログラムが無限ループ動作を行っている場合が考えられるが、その原因となっているタスクを検出するための手法として以下の方法が考えられる。すなわち異常監視タスク(最高優先度)が異常を検出した際、異常検出タスク(最低優先度)だけでなく全てのタスクに対し、それらが動作しているかどうかについての検査を行うことにより当該異常の原因となったタスクを特定する方法である(特許文献2参照)。
上記特許文献1に開示された方法では、上記の如く、CPUの負荷が100%の状態がある一定時間継続する状態を異常状態として検出するが、実際には無限ループ動作状態に陥っていなくとも負荷の高い処理により一時的にCPU負荷が100%状態になるような場合も想定される。同方法によればそのような場合であっても異常状態として誤検出されてしまう。ここで異常状態が検出されると自動的に何らかのリカバリー処理が実行されるようにプログラムされていた場合には不要なリカバリー処理を行うこととなってしまう。
又高優先度のタスクが高負荷になった場合、それより低優先度のタスクは動作できなくなる場合が想定される。そのような場合特許文献2の開示技術による手法では被疑タスクを特定することができなくなってしまう。又複数のタスク間でメッセージのやり取りが無限に行われる現象(いわゆる「ピンポン現象」)が発生すると当該複数のタスクが高負荷状態となるため、一の被疑タスクを特定することはできなくなる。
ここで上記ピンポン現象については後述する。
特開2000−181755号公報
特開平10−11327号公報
特開2000−267895号公報
特開2003−345629号公報
特開2005−063295号公報
特開2006−011686号公報
本発明は上記問題点に鑑み、マルチタスクオペレーティングシステムにおいて障害タスクを精度良く検出し得る構成を提供することを目的とする。
本発明ではCPUの高負荷状態の継続を検出する高負荷継続検出手段と、タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、前記高負荷継続検出手段によってCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とを設けた。
このように高負荷継続検出手段によってCPUの高負荷状態の継続が検出された場合にタスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出するようにしたため、異常タスクの候補を効果的に絞り込むことが可能となる。このようにして異常タスクの候補を絞り込むことにより、それら異常タスクの候補に対してのみ以後集中して継続監視を行うことが可能となる。したがって効率的に確実な異常タスクの検出が可能となる。
本発明によれば上記の如く効果的に異常タスクの候補を絞り込むことが可能であり、その後それら異常タスクの候補に対してのみ集中して継続監視を行うことにより、効率的に確実な異常タスクの検出を行い得る。
本発明の一実施例としての障害タスク検出プログラムは、優先度付きの複数タスクを持つ機能を有するOS上で動作するアプリケーションプログラムが何らかの原因で無限ループ動作状態に陥ったような場合に、それを検出する機能を提供する。
すなわち本発明の実施例によれば、マルチタスクOSの動作中、CPU負荷が100%の状態が継続して発生した場合に、その原因がプログラムの不正処理(無限ループ動作等)によるものであるのか、或いは単に負荷の高い処理による一時的な高負荷状態の継続であるのかを判別し、プログラムの不正処理によるものであると判別された場合にはその原因と見られるタスク(以下「被疑タスク」と称する)を特定する機能を提供する。
またプログラムの不正処理によるものと判別された場合、異常状態として外部に通知する機能を提供する。
またプログラムの不正処理によるものと判別された場合、当該障害に対する対応処理を選択して設定する機能を提供する。
また高負荷状態の継続が検出された場合に、その原因たるタスクの情報を履歴として取得し、後ほどその履歴情報を参照するための機能を提供する。
また高負荷状態の継続が検出された場合に、それが負荷の高い処理による一時的な事象では無く、複数タスク間でデータのやり取りが無限に行われる事象、すなわちピンポン現象であった場合に、それを検出する機能を提供する。
ここで本実施例では、OSが以下の4つの機能i),ii)、iii)、iv)を有することを前提とする。
i)タスク優先度に従って各タスクを実行する機能(図1参照:すなわちタスクスケジューラ機能)
ii)実行されるタスクの切替(いわゆる「タスクスイッチ」)が発生した場合、該当するタスクを判別する機能(図2中の機能2)
iii)タスクの現実行状態(図3参照)を取得する機能
iv)タスク間のメッセージ送受信状態(図4参照)を取得する機能
上記機能i)は、図1で示されるように、予め各タスクに優先度が与えられた場合、各タスク(すなわちアプリケーションタスク)をその優先度に従って動作させる機能である。
i)タスク優先度に従って各タスクを実行する機能(図1参照:すなわちタスクスケジューラ機能)
ii)実行されるタスクの切替(いわゆる「タスクスイッチ」)が発生した場合、該当するタスクを判別する機能(図2中の機能2)
iii)タスクの現実行状態(図3参照)を取得する機能
iv)タスク間のメッセージ送受信状態(図4参照)を取得する機能
上記機能i)は、図1で示されるように、予め各タスクに優先度が与えられた場合、各タスク(すなわちアプリケーションタスク)をその優先度に従って動作させる機能である。
上記機能ii)は図2中の機能2に相当する機能であり、タスクスイッチが発生した際にあらかじめ登録された対応するハンドラ処理を実行する機能(機能2の説明として後述する)である。
上記機能iii)は、各タスクの現実行状態が図3で示される3種の実行状態、すなわち実行中の状態(Running)、実行可能な状態(Ready)及び実行待ち状態(Waiting)のうちのどの状態にあるのかを取得する機能である。
尚図3中、各用語の意味は以下の通りである。
Dispatch:実行権を与えることにより他のタスクを実行中の状態に移行させ自己が実行可能な状態に移行する動作
Preemption:実行権を受けて実行中の状態に移行する動作
Receive:実行中の状態にあるタスクがメッセージの受信を待つために実行待ち状態に移行する動作
Send,Start:実行待ち状態にあるタスクが所定のメッセージを送信し実行可能な状態或いは実行中の状態に移行する動作
Stop:所定の条件により実行可能な状態から実行待ち状態に移行する動作
又、各タスク状態の定義を以下に示す。
Preemption:実行権を受けて実行中の状態に移行する動作
Receive:実行中の状態にあるタスクがメッセージの受信を待つために実行待ち状態に移行する動作
Send,Start:実行待ち状態にあるタスクが所定のメッセージを送信し実行可能な状態或いは実行中の状態に移行する動作
Stop:所定の条件により実行可能な状態から実行待ち状態に移行する動作
又、各タスク状態の定義を以下に示す。
実行中の状態(Running):
・ある与えられた時間において、Running状態になることができるタスクは、1プロセッサにつき1つのみである。
・Running状態のタスクは、プログラム中の命令を実行する。
・タスクスケジューラは、現在実行中のタスクよりも優先度の高いReady状態のタスクが一つも無くなるまでは、そのタスクを待たせる。
・タスクスケジューラは、優先度がより高い他のタスクがReady状態になると、即座にコンテキストスイッチ(すなわちタスクスイッチ)を行い、その優先度の高いタスクを先行して実行させる。
・現在実行中のタスクがシステムコール等でブロッキングされると、そのプロセス状態はWaitingに遷移する。その時、スケジューラは次に優先度の高いタスクを選択して、Ready状態に遷移させると共に、そのタスクを実行させる。
・ある与えられた時間において、Running状態になることができるタスクは、1プロセッサにつき1つのみである。
・Running状態のタスクは、プログラム中の命令を実行する。
・タスクスケジューラは、現在実行中のタスクよりも優先度の高いReady状態のタスクが一つも無くなるまでは、そのタスクを待たせる。
・タスクスケジューラは、優先度がより高い他のタスクがReady状態になると、即座にコンテキストスイッチ(すなわちタスクスイッチ)を行い、その優先度の高いタスクを先行して実行させる。
・現在実行中のタスクがシステムコール等でブロッキングされると、そのプロセス状態はWaitingに遷移する。その時、スケジューラは次に優先度の高いタスクを選択して、Ready状態に遷移させると共に、そのタスクを実行させる。
実行可能な状態(Ready):
・そのタスクは実行可能状態にある。自分よりも優先度の高い全てのタスクの処理が終了するとすぐに実行される。
・そのタスクは実行可能状態にある。自分よりも優先度の高い全てのタスクの処理が終了するとすぐに実行される。
実行待ち状態(Waiting):
・そのタスクは、ある特定のイベントが起こるのを待っているか、又は既にそのタスクは停止(stop)状態にあるかのどちらかとされる。
・Waiting状態にあるタスクは、この段階でCPUを必要としない。
・タスクをWaiting状態にするシステムコールは、ブロッキングシステムコールと呼ばれる。
・タスクは以下の理由でWaiting状態になり得る。
1)信号メッセージが到着するのを待っている。
2)所定の遅延(delay)時間が終了するのを待っている。
3)セマフォ待ち状態にある。
4)高速セマフォ待ち状態にある。
5)システムコールが完了するまで待っている。
6)システムコール(suspend等)で、明示的に停止(stop)とされた場合。
7)ブレイクポイント(breakpoint)に到達した場合。
・そのタスクは、ある特定のイベントが起こるのを待っているか、又は既にそのタスクは停止(stop)状態にあるかのどちらかとされる。
・Waiting状態にあるタスクは、この段階でCPUを必要としない。
・タスクをWaiting状態にするシステムコールは、ブロッキングシステムコールと呼ばれる。
・タスクは以下の理由でWaiting状態になり得る。
1)信号メッセージが到着するのを待っている。
2)所定の遅延(delay)時間が終了するのを待っている。
3)セマフォ待ち状態にある。
4)高速セマフォ待ち状態にある。
5)システムコールが完了するまで待っている。
6)システムコール(suspend等)で、明示的に停止(stop)とされた場合。
7)ブレイクポイント(breakpoint)に到達した場合。
又以下に、それぞれの場合においてタスク状態が遷移する例を挙げる。
●Runningを起点にした時の遷移:
Running⇒Ready(dispatchの矢印):
・現在実行中の自タスクよりも高優先度のタスクが実行された場合に、その実行権をdispatchする。
●Runningを起点にした時の遷移:
Running⇒Ready(dispatchの矢印):
・現在実行中の自タスクよりも高優先度のタスクが実行された場合に、その実行権をdispatchする。
Running⇒Waiting(receiveの矢印):
・現在実行中のタスクが、信号メッセージの受信待ち、遅延(delay)時間の経過待ち、セマフォ待ちなどになった場合。
●Readyを起点にした時の遷移:
Ready⇒Running(preemptionの矢印):
・現在実行中の自タスクよりも高優先度かつRunning/Ready状態のタスクが無くなった場合に、実行権をpreemptionする。
・現在実行中のタスクが、信号メッセージの受信待ち、遅延(delay)時間の経過待ち、セマフォ待ちなどになった場合。
●Readyを起点にした時の遷移:
Ready⇒Running(preemptionの矢印):
・現在実行中の自タスクよりも高優先度かつRunning/Ready状態のタスクが無くなった場合に、実行権をpreemptionする。
Ready⇒Waiting(stopの矢印):
・Ready状態のタスクを、システムコールを用いて強制的にサスペンド(suspend)した場合にWaiting状態に遷移する。
(suspendしたタスクは、resumeする事で元の状態に戻る)
●Waitingを起点にした時の遷移:
Waiting⇒Running(send,startの矢印):
・自タスクがメッセージ待ち状態で、現在実行中(Running状態)のプロセスより高優先度の場合に、他のタスクよりメッセージが送信(send)されてメッセージを受信するもしくは、タスク自体をクリエート&スタート(create&start)されるとRunning状態に遷移する。
・Ready状態のタスクを、システムコールを用いて強制的にサスペンド(suspend)した場合にWaiting状態に遷移する。
(suspendしたタスクは、resumeする事で元の状態に戻る)
●Waitingを起点にした時の遷移:
Waiting⇒Running(send,startの矢印):
・自タスクがメッセージ待ち状態で、現在実行中(Running状態)のプロセスより高優先度の場合に、他のタスクよりメッセージが送信(send)されてメッセージを受信するもしくは、タスク自体をクリエート&スタート(create&start)されるとRunning状態に遷移する。
Waiting⇒Ready(send,startの矢印):
・自タスクがメッセージ待ち状態で、現在実行中(Running状態)のタスクより低優先度又は同一優先度の場合に、他のプロセスよりメッセージが送信(send)されて、メッセージを受信するか、もしくは、タスク自体をクリエート&スタート(create&start)されるとReady状態に遷移する。
・自タスクがメッセージ待ち状態で、現在実行中(Running状態)のタスクより低優先度又は同一優先度の場合に、他のプロセスよりメッセージが送信(send)されて、メッセージを受信するか、もしくは、タスク自体をクリエート&スタート(create&start)されるとReady状態に遷移する。
上記機能iv)は、図4に示されるようなタスク間のメッセージ送受信において、メッセージの宛先などの情報 (メッセージキューなど)を取得する機能である。
ここで本実施例による障害タスク検出プログラムは、図2に示される以下の機能1(F1)、機能2(F2),機能3(F3),機能4(F4)をコンピュータに実行させるための命令を有する構成とされる。又図5はこれら各機能間の関係を示す。
機能1:CPU負荷監視機能
機能2:タスクスイッチ履歴取得機能
機能3:異常被疑タスク抽出機能
機能4:異常被疑タスク監視機能
以下にこれら各機能につき詳述する。
機能1:CPU負荷監視機能
機能2:タスクスイッチ履歴取得機能
機能3:異常被疑タスク抽出機能
機能4:異常被疑タスク監視機能
以下にこれら各機能につき詳述する。
機能1は、CPUの負荷が100%の状態が継続していないか監視し、CPU負荷が100%の状態が一定時間以上継続したことを検出した場合に、機能3の処理を行う。
機能2は、タスクスイッチが発生した際に、その履歴情報として該当するタスクのID、そのときのシステム時間(粒度は1ミリ秒以下が理想)を取得する機能である。
機能3は、機能1により一定時間CPU負荷が100%になったことが検出された場合に起動され、機能2で取得されたタスクスイッチ履歴情報を基に、ある一定の閾値以上のタスク、すなわち実行回数の多いタスク、実行時間が長いタスク等、の更に上位のものを異常発生の被疑タスクとして抽出する機能である。ここで上記ある一定の閾値以上のタスクがひとつも無い場合には、再び機能1へ戻る。
機能4は、機能3で抽出された被疑タスクの実行状態を定期的に一定期間監視し、無限ループ動作状態に陥っていないかチェックする機能である。
当該機能4で監視期間内に被疑タスクの実行状態が実行待ち状態に遷移しなかった場合には、被疑タスクが一度も実行権を離していないことを意味する。したがって当該タスクが無限ループ動作状態に陥ったと断定し、所定の障害対応処理、すなわち当該タスクの再起動、システムリスタート等、を実施する。
他方監視期間内に被疑タスクの状態が実行待ち状態に遷移したことが確認できた時点で、当該タスクは無限ループ動作状態には無いと断定し、監視対象から除外する。すなわち被疑タスクから除外される。
このようにして監視対象の被疑タスクが一つも無くなった場合には、機能4を終了する。また、機能4での被疑タスクの監視中に、機能1でCPU負荷の低下を検出した場合にも機能4を終了する。
又機能4において無限ループ動作状態に陥っているタスクが発見された際に、その旨を外部に通知する。すなわちコンソールへの出力等を実施する。
又機能4において無限ループ動作状態に陥っているタスクが発見された際に、当該タスクをリカバリーするための障害対応処理を選択できるようにする。
又更に、機能4において、被疑タスクとして抽出されたタスクの情報を履歴として保存しておき、所定のコマンド等による参照を可能にする機能5、すなわち被疑タスク履歴取得機能を設ける。
ここで機能4による監視動作中、抽出された全てのタスクが被疑タスクから除外され、且つ機能1によりCPU負荷が100%の状態が長時間継続していることが検出された場合には、特定のタスクが無限ループ動作状態に陥っているのではなく、ピンポン現象が生じている可能性が考えられる。そこで、機能4を実行するタスクに更に以下の機能6、すなわちピンポン現象監視機能(すなわち機能6)を持たせ、ピンポン現象の有無を判別するようにする。
図6はこれら機能5,6(F5,F6)を加えた各機能間の関係を示す図である。
又機能6において、機能5で取得された被疑タスクの履歴情報を参照し、同履歴中に常に出現しているタスクが2つ以上存在する場合は、それらの被疑タスクのメッセージ送受信状態(メッセージキュー情報などによる)を参照し、メッセージの宛先が当該被疑タスク同士となっていないかチェックする。その結果被疑タスクによるメッセージの送受信が当該被疑タスク同士間のメッセージの送受信であると判定された場合には、ピンポン現象によるプログラム異常が生じたものと判断し、所定の障害対応処理、すなわちシステムリスタート処理等を行う。
このような構成とすることにより本実施例による障害タスク検出プログラムは以下の作用効果を奏する。
すなわち従来はCPUが高負荷になった場合に、正常な状態であっても異常状態と誤検出される場合があったが、本実施例によれば、当該CPUの高負荷状態の継続が、負荷の高い処理による一時的なものであるのか、或いは無限ループ動作等のプログラム異常による高負荷状態の継続であるのかを高精度で判別することができる。
又従来はピンポン現象の継続により高負荷状態の継続が生じていた場合にも、負荷の高い処理による一時的な高負荷状態、すなわち正常な状態と明確に区別することができなかったが、本実施例によればピンポン現象によるプログラム異常を正確に検出することができる。
以下にピンポン現象につき説明する。
これは例えば、図7に示す如く、タスクAからタスクBに対してメッセージAが送信されるとそれを受信したタスクBがタスクAに対してメッセージBを送信するように構成されていた場合、タスクAが何らかの要因でメッセージAをタスクBに対して送信し続けるような動作が発生すると、タスクA、B間で永遠にメッセージのやり取りが行われる。このような現象をピンポン現象と称する。
以下に本実施例による障害タスク検出プログラムが提供する上記各機能につき、更に詳細に説明する。
上記機能1(F1)では、CPUの負荷が100%の状態が継続しているかどうかが判定される。
この動作は図8に例示するように、最高優先度の監視用タスクA(TA:図2中、タスクT1に対応するタスク)及び、最低優先度の検出用タスクB(TB:図2中、タスクT2に対応するタスク)により実行される。
図8に示す如く、検出用タスクBは定期的に監視用タスクAに対し、所定のkeep alive通知を定期的に送信する。keep alive通知の送信周期は任意に設定可能であり、本実施例では10秒に1度とされている。
図9はこのタスクAによる機能1に係る動作の流れを説明するためのフローチャートを示す。
同図中ステップS1にてタスクAの起動直後にタイマー(この例では5分タイマー;図8参照))が起動され(ステップS1)、タスクBからの上記keep alive通知を待つ状態とされる(ステップS2)。当該通知が受信されたら動作中のタイマーが即座にリセットされ(ステップS3)、所定の連続タイムアウトカウンタがクリア(ステップS4)された後、再度タイマーが起動され(ステップS1)タスクBからの応答を待つ状態とされる(ステップS2)。
他方タイマーがタイムアウトした場合(ステップS2のタイムアウト)は、連続タイムアウトカウンタがカウントアップされ(ステップS5)、機能3が実行される(ステップS6)。尚機能3はタスクAが実行する。
図8の例の場合、監視用タスクAが検出用タスクBからのkeep alive通知を時刻t1,t2,t3,t4に受信し、それぞれの場合、タイマーの設定時間の5分以内の受信なのでタイマーはリセットされる。その後、何らかの要因でタスクスイッチが滞り、もって最低優先度の検出用タスクBの実行のタイミングが遅れたとする。その場合、監視用タスクAはt5の時点でkeep alive通知を受信するが、すでに5分経過したためタイムアウトとなる(すなわち図9中、ステップS2のタイムアウト)。
次に、上記機能2(F2)では、タスクスイッチが発生した際の全ログが常時収集される。同機能はタスクスイッチが発生する度に実行され、図12で示すフローチャートの動作がなされる。
すなわちタスクスイッチが発生したことを契機としてOSからシステム時刻(1ミリ秒の粒度のもの)及び、該当するタスクのタスクIDが取得され、図11に示すフォーマットで順次記録される。図11に示す当該記録のためのロギングエリアは最大2000個(変更可能)まで取得可能な容量を有し、2000番目まで記載した場合1番目のロギングポイントまで戻され、サイクリックに延々と記録し続けられる。
この機能2はOSが持つハンドラ機能、例えばOSE(Office Server Extensin)の場合にはSwapInハンドラ機能によって実行される。したがって同機能はタスクによって実行されるものではなく、プログラムの関数機能によりOS自体によって起動され実行される。
次に、機能3(F3)では、CPUの負荷が100%の状態の継続の原因として特定のタスクによる無限ループ動作状態を想定した場合の該当するタスクとして、被疑タスクが抽出される。
具体的には図14のフローチャートの動作が実行される。すなわち機能3が実行される状態に遷移された(図9中、ステップS6の実行)直後に、機能2で取得されているタスクスイッチのログが参照され、上記延べ最大2000個のタスクのそれぞれの動作時間が算出される。時間の算出は直前のログとの差分を算出することにより行われ、図13(a)に示される如くその算出結果がリスト化される。
すなわち当該最大2000個のログから、タスクID単位で、各タスクが合計何ミリ秒動作したかを示す合計動作時間が算出される(図12中、ステップS31)。そして算出されたタスク毎の合計動作時間が、動作時間の長い順に並び変えられる(ステップS32)。図13(b)は、このようにして図13(a)に示される差分時間のリストから合計動作時間が算出され並び替えられた結果の例を示す。
そして図13(b)に示される如く、このようにして得られたリストから上位6個(この個数は全体のタスク数などに応じて変更可能である)がリスト上位タスクとして選択される(ステップS33)。更にその6個の中で、所定のCPU占有率閾値15%(この値も変更可能である)以上のタスクIDが抽出される(ステップS34)。ここで1つも該当するタスクIDが存在しない場合は異常状態の発生はなく、純粋に単なる過負荷状態が継続しているだけであると判断され、機能1が実行される状態に遷移される(ステップS34のNo)。
他方該当するタスクIDが存在する場合(ステップS34のYes),所定のメッセージが他のタスクに通知されることにより、当該他のタスク(図2中、タスクT3に対応するタスク)によって機能4が実行される。
機能4(F4)は無限ループ動作状態が生じているかどうか判断する機能である。機能4はアプリケーションタスク郡よりも高い優先度で実行され(図2参照)、図15のフローチャートの動作が実行される。
機能4を実行するタスクは、機能1及び機能3を実行する最高優先度のタスクAとは別のタスク(図2中、タスクT3に対応するタスク)とされ、上記タスクAから送信されたメッセージ通知を契機として図15の動作を開始する。
機能4の実行開始直後、機能3にて抽出された被疑タスクリストの情報が機能5によりロギングされる(ステップS41)。このロギング後、機能1で監視している負荷100%の状態が引き続き継続しているかがチェックされ、継続していなければ無限ループ動作等の誤動作の発生はなく一時的な過負荷状態であると判断され、機能4の実行が終了される(ステップS42のNo)。他方CPU負荷100%状態が継続していると判断された場合はステップS43に進む(ステップS42のYes→ステップS43)。
ステップS43では被疑タスクの状態がOSによって実行される関数機能により取得される。例えば上記OSEの場合、get_pcbという関数が使用される。タスクの状態は図3に示す上記実行可能な状態(Ready)、(実行中の状態(Running)及び実行待ち状態(Waiting)の3状態があり得るが、ここでは実行待ち状態の状態であるかどうかがチェックされる。
実行待ち状態の場合(ステップS45のYes)、対象のタスクがメッセージ待ちなどの状態であることを意味するため、無限ループ動作を生じていないと判断できる。そのため実行待ち状態のタスクは被疑タスクリストから削除され監視対象外とされる(ステップS46)。
対象のタスクが実行待ち状態以外の状態であった場合は当該タスクが継続動作していることを意味するので、当該タスクは被疑タスクリストに残される(ステップS45のNo)。
機能4実行開始時の被疑タスクリストに含まれる全タスクに対して繰り返し同様のチェックが行われ(ステップS44,S45,S46,S47のループ)、これが完了するとステップS48が実行される。
ステップS48では被疑タスクリストに存在する全タスクにつき、チェック終了時点で、それぞれに設けられたチェックカウンタが1だけカウントアップされる。次にステップS49にて各カウンタの計数値が、所定の閾値600回(変更可能)に到達したかチェックされる。
チェックカウンタが600回になった被疑タスクが存在した場合(ステップS49のYes)、該当するタスクが問題のタスクであると判断され、当該問題のタスクによる無限ループ動作が発生していると断定される。そして所定の障害対応処理がスタートされる(ステップS50)。
他方各被疑タスクのチェックカウンタが600回に満たない場合(ステップS49のNo)は、もうしばらく監視し続けることが必要であると判断され、所定のリトライ待ち時間の100ミリ秒(変更可能)の経過の後(ステップS51)、再度機能4の動作が最初から繰り返される(ステップS42以降)。
尚上記100ミリ秒周期で最大600回チェックすることで合計1分間機能4によるチェックが継続される。
ここで、このように機能4の動作が繰り返し実行された結果、どの被疑タスクも問題なしと判断(すなわちステップS45のNo→S46)され、被疑タスクリストに残る被疑タスクが無くなるような場合が想定される。このような場合には、無限ループ動作が無いと判断して機能4の動作を終了させるか、或いはピンポン現象が発生している可能性があるとして機能6を実行する状態に遷移させることが可能である。そのどちらの状態に遷移させるかは任意の設定による。
次に機能5(F5)は、上記機能4の実行開始直後に実行されるロギング機能(図15中、ステップS41)であり、図17のフローチャートの動作が実行される。
このロギング機能では図16に示す如くのロギング情報が記録される。図16のロギング情報の先頭には、何回機能5が実行されたかを示すロギングカウンタ(Logging counter)が設けられ、機能5の実行の度毎に1ずつカウントアップされる(図17中、ステップS61)。
ここでは1回のロギングで、カウンタ(Counter)の更新(ステップS61)、装置内時刻(Time)の記録(ステップS62)、装置内システム時刻(SystemTimer)の記録(ステップS67)、その時点の被疑タスクのリスト(TaskList)の記録(ステップS68)が一度に実行される。
次に機能6(F6)は、機能4により無限ループ動作が生じていないと判断された場合にピンポン現象が発生していないかチェックするための機能である。同機能では図18のフローチャートの動作が実行される。
図18中、最初に、機能1により図9中ステップS5でカウントアップされる連続タイムアウトカウンタの計数値が参照され(ステップS71)、同計数値が所定の高負荷継続時間として設定された25分に到達する連続5回以上になっているかがチェックされる(ステップS72)。5回に満たない場合(No)は継続時間が短いと判断され機能6の実行が終了される。すなわちピンポン現象の発生はないとの判定がなされる。他方5回以上の場合(Yes),ステップS73が実行される。
ステップS73では、機能5の実行により記録されているロギング情報の内、最後の5回分のログが参照され、毎回同じタスクIDが存在しているかがチェックされる。
図16の例ではCount 3以降、0x000Bと0x000Cの2つのタスクが毎回出現しているので、ステップS73の条件が満たされる(Yes)。
ステップS73にて条件を満たす2つ以上のタスクが見つからなかった場合(No)、ピンポン現象が生じていないと判定され、機能6の実行が終了される。他方条件を満たす2つ以上のタスクが見つかった場合ステップS74が実行される。
ステップS74では、ステップS73にて見いだされたタスクが被疑タスクとされる。すなわち上記例の場合、タスク0x000Bと0x000Cが被疑タスクとされる。その後当該被疑タスクの状態が解析される。
すなわちこの例の場合、タスク0x000Bと0x000Cのタスク状態が取得される。その際、例えば上記get_pcb関数が使用され、該当するシグナルのキュー情報が参照される。同キュー内には該当するタスクに送信されたメッセージが格納されており、このメッセージ内部の送信元タスク情報が参照される。その結果メッセージの送信元タスクが各々当該被疑タスク(上記例の場合、タスク0x000Bまたは0x000C)であれば(ステップS75のYes)、被疑タスク間でメッセージをやり取りしていることになる。したがってこの場合ピンポン現象が生じていると判定する。このようにしてピンポン現象の発生の判定がなされた場合は、設定済みの所定の障害対応処理がスタートされる(ステップS76)。
この障害対応処理では、図19のフローチャートの動作が実行される。
ここでは最初に障害内容の通知の要否についての設定が参照され(ステップS81)、通知要の場合(Yes)は前もってコマンドで設定済みの通知処理が実行される(ステップS82)。その後、指定された所定の障害オペレーションの内容が実行される(ステップS83)。
以下に上記各機能の実行において設定される各パラメータの一覧を示すとともに、併せて本実施例での設定値を括弧内に示す。
●機能1:
連続タイムアウトカウンタ(0から開始)
keep alive通知周期(10秒)
タイマー時間(5分)
●機能2:
最大ロギング数(2000個)
●機能3;
リスト上位タスク数(6個)
CPU占有率の閾値(15%)
●機能4;
チェックカウンタ(600回)
リトライ待ち時間(100ミリ秒)
●機能5;
なし
●機能6:
機能有効設定(有効)
高負荷継続時間(25分=5履歴)
●障害対応処理:
通知要否設定(要)
通知方法(以下の2)を選択)
1)別タスクへ通知する。
2)コンソールから出力する。
3)トラップ(TRAP)通知を行う。
4)アラーム(ALM)を発生させる。
●機能1:
連続タイムアウトカウンタ(0から開始)
keep alive通知周期(10秒)
タイマー時間(5分)
●機能2:
最大ロギング数(2000個)
●機能3;
リスト上位タスク数(6個)
CPU占有率の閾値(15%)
●機能4;
チェックカウンタ(600回)
リトライ待ち時間(100ミリ秒)
●機能5;
なし
●機能6:
機能有効設定(有効)
高負荷継続時間(25分=5履歴)
●障害対応処理:
通知要否設定(要)
通知方法(以下の2)を選択)
1)別タスクへ通知する。
2)コンソールから出力する。
3)トラップ(TRAP)通知を行う。
4)アラーム(ALM)を発生させる。
障害オペレーション(以下の5)を選択)
1)問題のタスクを削除する。
2)問題のタスクを削除するとともに再生成する。
3)題のタスクを一定時間停止させて再度動作開始する。
4)システムを停止する。
5)システムを再起動する。
6)特に対応を行わない。
1)問題のタスクを削除する。
2)問題のタスクを削除するとともに再生成する。
3)題のタスクを一定時間停止させて再度動作開始する。
4)システムを停止する。
5)システムを再起動する。
6)特に対応を行わない。
図20は上記本発明の実施例を適用可能な情報処理装置のハードウェア構成例を示す。
図示の如く、同情報処理装置はコンピュータ100よりなり、OS及び各アプリケーションプログラムを実行することにより対応する動作を行うCPU111,キーボード60との通信用のLANインタフェース115、CRT,液晶表示装置等のディスプレイ50との通信用のシリアルインタフェース116、プログラム、データ等の読み書きを行うSDRAM12,OS、各種アプリケーションプログラム等を格納するフラッシュメモリ等の不揮発メモリ113,ネットワーク等を介し外部との情報のやりとりを行うHDLC,LAN等の通信デバイス114及びそれらを接続するバス117が設けられたCPUカード110と、上記通信デバイス114に接続された各種インタフェースカード120とを備える。
同コンピュータ100のOSはマルチタスクOSであり、上記4つの機能i),ii)、iii)、iv)を有する
又前述の本実施例による障害タスク検出プログラムがフラッシュメモリ等の不揮発メモリ113に格納され、或いはインタフェースカード120及び通信デバイス114を介しネットワーク経由でダウンロードされた後にSDRAM112に格納される。
又前述の本実施例による障害タスク検出プログラムがフラッシュメモリ等の不揮発メモリ113に格納され、或いはインタフェースカード120及び通信デバイス114を介しネットワーク経由でダウンロードされた後にSDRAM112に格納される。
その後CPU111によって同障害タスク検出プログラムが実行されることにより、図2〜図19とともに上述の機能1〜6が実行される。
本発明は以下の付記の各々に記載の構成をとり得る。
(付記1)
マルチタスクオペレーティングシステムを有する情報処理装置であって、
CPUの高負荷状態の継続を検出する高負荷継続検出手段と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、
前記高負荷継続検出手段によってCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とよりなる情報処理装置。
(付記2)
更に前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出手段よりなる付記1に記載の情報処理装置。
(付記3)
前記高負荷継続検出手段は、CPUの負荷が100%の状態の継続時間によって高負荷状態の継続を検出する構成とされてなる付記1に記載の情報処理装置。
(付記4)
前記タスク間切替履歴保存手段が保存する履歴は、該当するタスクの識別情報及びタスク間切替動作発生時刻を含む構成とされてなる付記1に記載の情報処理装置。
(付記5)
前記異常タスク候補抽出手段は、タスクの累計実行時間を指標として異常タスクの候補を抽出する構成とされてなる付記1に記載の情報処理装置。
(付記6)
前記異常タスク検出手段は前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクの状態を定期的に監視し、同タスクが無限ループ動作状態に陥っているか否かを検出する構成とされてなる付記2に記載の情報処理装置。
(付記7)
前記異常タスク検出手段は、監視中にCPUの負荷が低下した場合には現在監視中の異常タスクの候補としてのタスクの全てを同候補から除外する構成とされてなる付記2に記載の情報処理装置。
(付記8)
前記異常タスク検出手段は、監視中に待ち状態となった異常タスクの候補としてのタスクを同候補から除外する構成とされてなる付記2に記載の情報処理装置。
(付記9)
更に前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクのうちの特定の複数のタスク間でのメッセージのやりとりの継続を検出することによってピンポン現象の発生を検出するピンポン現象検出手段を含む付記1に記載の情報処理装置。
(付記10)
マルチタスクオペレーティングシステムを有する情報処理装置の制御方法であって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とよりなる制御方法。
(付記11)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出段階よりなる付記10に記載の制御方法。
(付記12)
前記高負荷継続検出段階では、CPUの負荷が100%の状態の継続時間によって高負荷状態の継続を検出する構成とされてなる付記10に記載の制御方法。
(付記13)
前記タスク間切替履歴保存段階で保存する履歴は、該当するタスクの識別情報及びタスク間切替動作発生時刻を含む構成とされてなる付記10に記載の制御方法。
(付記14)
前記異常タスク候補抽出段階では、タスクの累計実行時間を指標として異常タスクの候補を抽出する構成とされてなる付記10に記載の制御方法。
(付記15)
前記異常タスク検出段階では前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの状態を定期的に監視し、同タスクが無限ループ動作状態に陥っているか否かを検出する構成とされてなる付記11に記載の制御方法。
(付記16)
前記異常タスク検出段階では、監視中にCPUの負荷が低下した場合には現在監視中の異常タスクの候補としてのタスクの全てを同候補から除外する構成とされてなる付記11に記載の制御方法。
(付記17)
前記異常タスク検出段階では、監視中に待ち状態となった異常タスクの候補としてのタスクを同候補から除外する構成とされてなる付記11に記載の制御方法。
(付記18)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクのうちの特定の複数のタスク間でのメッセージのやりとりの継続を検出することによってピンポン現象の発生を検出するピンポン現象検出段階を含む付記10に記載の制御方法。
(付記19)
マルチタスクオペレーティングシステムを有する情報処理装置の制御をコンピュータに実行させるためのプログラムであって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とをコンピュータに実行させるための命令よりなるプログラム。
(付記20)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出段階をコンピュータに実行させる命令よりなる付記19に記載のプログラム。
(付記1)
マルチタスクオペレーティングシステムを有する情報処理装置であって、
CPUの高負荷状態の継続を検出する高負荷継続検出手段と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、
前記高負荷継続検出手段によってCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とよりなる情報処理装置。
(付記2)
更に前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出手段よりなる付記1に記載の情報処理装置。
(付記3)
前記高負荷継続検出手段は、CPUの負荷が100%の状態の継続時間によって高負荷状態の継続を検出する構成とされてなる付記1に記載の情報処理装置。
(付記4)
前記タスク間切替履歴保存手段が保存する履歴は、該当するタスクの識別情報及びタスク間切替動作発生時刻を含む構成とされてなる付記1に記載の情報処理装置。
(付記5)
前記異常タスク候補抽出手段は、タスクの累計実行時間を指標として異常タスクの候補を抽出する構成とされてなる付記1に記載の情報処理装置。
(付記6)
前記異常タスク検出手段は前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクの状態を定期的に監視し、同タスクが無限ループ動作状態に陥っているか否かを検出する構成とされてなる付記2に記載の情報処理装置。
(付記7)
前記異常タスク検出手段は、監視中にCPUの負荷が低下した場合には現在監視中の異常タスクの候補としてのタスクの全てを同候補から除外する構成とされてなる付記2に記載の情報処理装置。
(付記8)
前記異常タスク検出手段は、監視中に待ち状態となった異常タスクの候補としてのタスクを同候補から除外する構成とされてなる付記2に記載の情報処理装置。
(付記9)
更に前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクのうちの特定の複数のタスク間でのメッセージのやりとりの継続を検出することによってピンポン現象の発生を検出するピンポン現象検出手段を含む付記1に記載の情報処理装置。
(付記10)
マルチタスクオペレーティングシステムを有する情報処理装置の制御方法であって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とよりなる制御方法。
(付記11)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出段階よりなる付記10に記載の制御方法。
(付記12)
前記高負荷継続検出段階では、CPUの負荷が100%の状態の継続時間によって高負荷状態の継続を検出する構成とされてなる付記10に記載の制御方法。
(付記13)
前記タスク間切替履歴保存段階で保存する履歴は、該当するタスクの識別情報及びタスク間切替動作発生時刻を含む構成とされてなる付記10に記載の制御方法。
(付記14)
前記異常タスク候補抽出段階では、タスクの累計実行時間を指標として異常タスクの候補を抽出する構成とされてなる付記10に記載の制御方法。
(付記15)
前記異常タスク検出段階では前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの状態を定期的に監視し、同タスクが無限ループ動作状態に陥っているか否かを検出する構成とされてなる付記11に記載の制御方法。
(付記16)
前記異常タスク検出段階では、監視中にCPUの負荷が低下した場合には現在監視中の異常タスクの候補としてのタスクの全てを同候補から除外する構成とされてなる付記11に記載の制御方法。
(付記17)
前記異常タスク検出段階では、監視中に待ち状態となった異常タスクの候補としてのタスクを同候補から除外する構成とされてなる付記11に記載の制御方法。
(付記18)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクのうちの特定の複数のタスク間でのメッセージのやりとりの継続を検出することによってピンポン現象の発生を検出するピンポン現象検出段階を含む付記10に記載の制御方法。
(付記19)
マルチタスクオペレーティングシステムを有する情報処理装置の制御をコンピュータに実行させるためのプログラムであって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とをコンピュータに実行させるための命令よりなるプログラム。
(付記20)
更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出段階をコンピュータに実行させる命令よりなる付記19に記載のプログラム。
本発明はスタンドアロンのコンピュータに限られず、自動車の制御用コンピュータ等を制御する各種組み込みOSについても適用可能である。
100 コンピュータ本体
110 CPUカード
111 CPU
110 CPUカード
111 CPU
Claims (5)
- マルチタスクオペレーティングシステムを有する情報処理装置であって、
CPUの高負荷状態の継続を検出する高負荷継続検出手段と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存手段と、
前記高負荷継続検出手段によってCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存手段によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出手段とよりなる情報処理装置。 - 更に前記異常タスク候補抽出手段によって抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出手段よりなる請求項1に記載の情報処理装置。
- マルチタスクオペレーティングシステムを有する情報処理装置の制御方法であって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とよりなる制御方法。 - 更に前記異常タスク候補抽出段階において抽出された異常タスクの候補としてのタスクの動作を監視することによって前記異常タスクを検出する異常タスク検出段階よりなる請求項3に記載の制御方法。
- マルチタスクオペレーティングシステムを有する情報処理装置の制御をコンピュータに実行させるためのプログラムであって、
CPUの高負荷状態の継続を検出する高負荷継続検出段階と、
タスク間切替動作の履歴を保存するタスク間切替履歴保存段階と、
前記高負荷継続検出段階においてCPUの高負荷状態の継続が検出された場合、タスク間切替履歴保存段階によって保存されているタスク間切替動作の履歴を参照することにより前記CPUの高負荷状態の継続の原因たる異常タスクの候補を抽出する異常タスク候補抽出段階とをコンピュータに実行させるための命令よりなるプログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006285343A JP2008102778A (ja) | 2006-10-19 | 2006-10-19 | 情報処理装置、情報処理装置の制御方法及びプログラム |
US11/829,448 US20080098404A1 (en) | 2006-10-19 | 2007-07-27 | Information processing apparatus, control method for information processing apparatus and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2006285343A JP2008102778A (ja) | 2006-10-19 | 2006-10-19 | 情報処理装置、情報処理装置の制御方法及びプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2008102778A true JP2008102778A (ja) | 2008-05-01 |
Family
ID=39319557
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006285343A Withdrawn JP2008102778A (ja) | 2006-10-19 | 2006-10-19 | 情報処理装置、情報処理装置の制御方法及びプログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20080098404A1 (ja) |
JP (1) | JP2008102778A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011039903A (ja) * | 2009-08-17 | 2011-02-24 | Fujitsu Ltd | プロセス状態検知プログラム、情報処理装置、プロセス状態検知方法 |
JP2016012208A (ja) * | 2014-06-27 | 2016-01-21 | 富士通株式会社 | 監視対象プログラムの選択方法、監視対象選択プログラム及び監視対象選択装置 |
JP2019028681A (ja) * | 2017-07-28 | 2019-02-21 | 日本電気株式会社 | 監視装置、監視方法、及び、監視プログラム |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE112009001700B4 (de) * | 2008-07-22 | 2019-02-07 | Toyota Jidosha Kabushiki Kaisha | Multikernsystem, fahrzeugseitige elektronische Steuerungseinheit und Aufgabenumschaltverfahren |
CN102122160B (zh) * | 2010-12-31 | 2012-11-28 | 重庆新媒农信科技有限公司 | 多业务状态控制、加载和卸载方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH02271435A (ja) * | 1989-04-13 | 1990-11-06 | Mitsubishi Electric Corp | タスクトレース装置 |
US6016466A (en) * | 1996-08-27 | 2000-01-18 | Compuware Corporation | Accurate profile and timing information for multitasking systems |
US5784616A (en) * | 1997-05-02 | 1998-07-21 | Microsoft Corporation | Apparatus and methods for optimally using available computer resources for task execution during idle-time for future task instances exhibiting incremental value with computation |
JP3823475B2 (ja) * | 1997-09-18 | 2006-09-20 | ソニー株式会社 | データ処理方法、記録媒体及びデータ処理装置 |
US6018759A (en) * | 1997-12-22 | 2000-01-25 | International Business Machines Corporation | Thread switch tuning tool for optimal performance in a computer processor |
WO2002069174A1 (fr) * | 2001-02-28 | 2002-09-06 | Fujitsu Limited | Procede d'execution en parallele de processus et ordinateur a processeurs multiples |
AU2002310820A1 (en) * | 2001-05-14 | 2002-11-25 | Telefonaktiebolaget Lm Ericsson (Publ) | Task supervision |
GB2366891B (en) * | 2001-12-06 | 2002-11-20 | Appsense Ltd | Improvements in and relating to computer apparatus terminal server apparatus & performance management methods therefor |
US7673304B2 (en) * | 2003-02-18 | 2010-03-02 | Microsoft Corporation | Multithreaded kernel for graphics processing unit |
US20050071824A1 (en) * | 2003-08-22 | 2005-03-31 | K. N. Keerthi Bhushan | Method and system for executing software on non-native platforms |
JP3937341B2 (ja) * | 2004-01-30 | 2007-06-27 | 日本電気株式会社 | 計算機システム性能測定分析用のトランザクションプロファイルの生成システム、その生成方法及びプログラム |
US20070074224A1 (en) * | 2005-09-28 | 2007-03-29 | Mediatek Inc. | Kernel based profiling systems and methods |
-
2006
- 2006-10-19 JP JP2006285343A patent/JP2008102778A/ja not_active Withdrawn
-
2007
- 2007-07-27 US US11/829,448 patent/US20080098404A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2011039903A (ja) * | 2009-08-17 | 2011-02-24 | Fujitsu Ltd | プロセス状態検知プログラム、情報処理装置、プロセス状態検知方法 |
JP2016012208A (ja) * | 2014-06-27 | 2016-01-21 | 富士通株式会社 | 監視対象プログラムの選択方法、監視対象選択プログラム及び監視対象選択装置 |
JP2019028681A (ja) * | 2017-07-28 | 2019-02-21 | 日本電気株式会社 | 監視装置、監視方法、及び、監視プログラム |
JP7043753B2 (ja) | 2017-07-28 | 2022-03-30 | 日本電気株式会社 | 監視装置、監視方法、及び、監視プログラム |
Also Published As
Publication number | Publication date |
---|---|
US20080098404A1 (en) | 2008-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9053240B2 (en) | Computer program testing | |
JP4562568B2 (ja) | 異常検出プログラムおよび異常検出方法 | |
US8191071B2 (en) | Method for supervising task-based data processing | |
CN101236515B (zh) | 多核系统单核异常的恢复方法 | |
CN100373341C (zh) | 一种业务进程的分布式分优先级监控方法 | |
JP2008102778A (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
CN101853191B (zh) | 检测操作系统中任务死循环的方法及系统 | |
CN102833120A (zh) | 一种快速自动化测试中处理网管服务器异常的方法及系统 | |
CN101221518B (zh) | 一种防止硬件看门狗的定时器溢出的方法、装置与系统 | |
CN114168291A (zh) | 一种主线程卡顿处理方法、装置、设备及存储介质 | |
CN106603428A (zh) | 一种消息队列保护方法及装置 | |
CN101504615A (zh) | 为任务死循环提供定位信息的方法和装置 | |
JP2006331026A (ja) | メッセージ分析システム及びメッセージ分析プログラム | |
CN112463348B (zh) | 一种定时任务处理方法及装置 | |
JP5365273B2 (ja) | 情報処理システム、監視方法及び監視プログラム | |
CN115499493A (zh) | 异步事务处理方法、装置、存储介质及计算机设备 | |
JP4575020B2 (ja) | 障害解析装置 | |
JP2006227962A (ja) | アプリケーションタスク監視システムおよび方法 | |
JP2005293164A (ja) | タスク監視方式 | |
CN114647540B (zh) | 嵌入式调度器故障恢复方法、嵌入式系统及存储介质 | |
CN117555717B (zh) | 一种应用异常处理方法、终端及计算机存储介质 | |
JP2005182594A (ja) | コンピュータ及びプログラム | |
CN113360261A (zh) | 流处理中数据阻塞的处理系统、方法、介质及设备 | |
JP7285864B2 (ja) | システム | |
JP2008217566A (ja) | ソフトウエアのデッドロック検出方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20090710 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110128 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20110725 |