(57)【特許請求の範囲】
【請求項１】
ＣＰＵによるタスク処理の実行時間であるＣＰＵ時間を個々のタスク毎に監視する時間監視装置であって、前記ＣＰＵによる複数のタスクの実行をスケジューリングするスケジューラと、
前記スケジューラのスケジューリングによって前記ＣＰＵがあるタスクを実行するときに実行時間を計測し、実行するタスクが切り替わるタイミングで、前記ＣＰＵ時間を前記計測した時間を蓄積することで更新して保持する個々のタスク毎のタイマと、
前記タスクが切り替わるタイミングで、前記タイマで前記ＣＰＵ時間が更新されたときに、該ＣＰＵ時間が所定の閾値に達しているか否か判定し、該ＣＰＵ時間が該閾値に達したタスクをタイマ満了済リストに登録するタイマ判定部と、
前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが予め設定されており、所定時間の経過毎に繰り返し発生するタイマ割り込みの発生したタイミングで、前記タイマ満了済リストに登録されているタスクに関する前記アクションを実行するアクション部と、
を有する時間監視装置。
【請求項２】
ＣＰＵによる、タスクに含まれる複数のスレッドの処理の実行時間であるＣＰＵ時間を、個々のスレッド毎に監視する時間監視装置であって、前記ＣＰＵによる複数のスレッドの実行をスケジューリングするスケジューラと、
前記スケジューラのスケジューリングによって前記ＣＰＵがあるスレッドを実行するときに実行時間を計測し、実行するスレッドが切り替わるタイミングで、前記ＣＰＵ時間を前記計測した時間を蓄積することで更新して保持する個々のスレッド毎のタイマと、
前記スレッドが切り替わるタイミングで、前記タイマで前記ＣＰＵ時間が更新されたときに、該ＣＰＵ時間が所定の閾値に達しているか否か判定し、該ＣＰＵ時間が該閾値に達したスレッドをタイマ満了済リストに登録するタイマ判定部と、
前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが前記スレッド単位に予め設定されており、所定時間の経過毎に繰り返し発生するタイマ割り込みの発生したタイミングで、前記タイマ満了済リストに登録されているスレッドに関する前記アクションを実行するアクション部と、
を有する時間監視装置。
【請求項３】
前記アクションは、タイマ満了を通知するためのシグナルの、該タイマ満了を入力として動作するプロセスへの送出である、請求項１または２に記載の時間監視装置。
【請求項４】
前記タイマは、前記ＣＰＵに供給されるクロックを基にして前記ＣＰＵ時間を計測する、
請求項１から３のいずれか１項に記載の時間監視装置。
【請求項５】
ＣＰＵによる複数のタスクの実行をスケジューリングするスケジューラ手段と、
ＣＰＵによるタスク処理の実行時間であるＣＰＵ時間を計測して保持するタイマ手段と、
該ＣＰＵ時間が所定の閾値に達しているか否か判定し、該ＣＰＵ時間が該閾値に達したタスクをタイマ満了済リストに登録するタイマ判定手段と、
前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが予め設定されているアクション手段と、
からなる時間監視装置におけるＣＰＵ時間を個々のタスク毎に監視するための時間監視方法であって、
前記スケジューリング手段によって前記ＣＰＵがあるタスクを実行するとき、タイマ手段が実行時間を計測し実行するタスクが切り替わるタイミングで、前記ＣＰＵ時間を前記計測した時間を蓄積することで更新して個々のタスク毎に保持し、
タイマ判定手段が、前記タスクが切り替わるタイミングで、前記ＣＰＵ時間が更新されたときに、該ＣＰＵ時間が所定の閾値に達しているか否か判定し、該ＣＰＵ時間が該閾値に達したタスクをタイマ満了済リストに登録し、
アクション手段が、所定時間の経過毎に繰り返し発生するタイマ割り込みの発生したタイミングで、前記タイマ満了済リストに登録されているタスクに関する前記アクションを実行する、
時間監視方法。
【請求項６】
ＣＰＵに、該ＣＰＵによるタスク処理の実行時間であるＣＰＵ時間を個々のタスク毎に監視させるためのプログラムであって、
複数のタスクの実行をスケジューリングする手順と、
前記スケジューリングによって前記ＣＰＵがあるタスクを実行するときに実行時間を計測し、実行するタスクが切り替わるタイミングで前記ＣＰＵ時間を前記計測した時間を蓄積することで更新して個々のタスク毎に保持する手順と、
前記タスクが切り替わるタイミングで、前記ＣＰＵ時間が更新されたときに、該ＣＰＵ時間が所定の閾値に達しているか否か判定し、該ＣＰＵ時間が該閾値に達したタスクをタイマ満了済リストに登録する手順と、
前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが予め設定されており、
所定時間の経過毎に繰り返し発生するタイマ割り込みの発生したタイミングで、前記タイマ満了済リストに登録されているタスクに関する前記アクションを実行する手順と、をＣＰＵに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータシステムにおける暴走を監視する技術に関する。
【背景技術】
【０００２】
コンピュータシステムにおいて、１つのタスクは１つ以上のプロセスから構成され、１つのプロセスは１つ以上のスレッドから構成されている。
【０００３】
一般に、プロセスは、そのプロセスに割り当てられたメモリ等のハードウェア資源内で独立して動作する。そのためプロセス毎に独立したメモリ空間ができる。しかし、処理内容によってはプロセス毎に独立したメモリ空間を必要としない場合がある。そのような場合にもプロセス毎のメモリ空間を存在させるのはメモリの利用効率が悪い。
【０００４】
プログラムによっては、独立したメモリではなく共有メモリを利用しながら複数の処理を実行することが効率的なものがある。そのような場合にはプロセスの機能の中で必要な部分だけを利用する複数のスレッドを用い、プロセス内で複数の処理を実行する手法が採られることがある。
【０００５】
オープンソースＯＳ（オペレーションシステム）であるＬｉｎｕｓ  Ｋｅｒｎｅｌ（リナックスカーネル）には、プロセス等がＣＰＵを使用している時間（ＣＰＵ使用時間）を監視するメカニズムが組み込まれている（「Ｌｉｎｕｘ」「リナックス」は登録商標）。リナックスカーネルにおけるＣＰＵ使用時間の監視はタイマ割り込みを契機として実行される。このＣＰＵ使用時間を監視するメカニズムを利用することによりプロセスの暴走（メーズ）や無限ループを検出することが可能となる。
【０００６】
図４は、リナックスカーネルにおけるＣＰＵ使用時間の監視動作を示すタイムチャートである。
【０００７】
リナックスカーネルでは、タイマ割り込みを契機として、タイマの計測時間の更新、タイマが満了したか否かの判定、およびタイマが満了したときのシグナル送信処理が行われる。タイマの計測時間の更新やタイマが満了したか否かの判定はインターバルタイマによって行われる。
【０００８】
リナックスカーネルでは、ＲＬＩＭＩＴ＿ＣＰＵによって、タイマの満了を判定するための閾値が与えられる。この閾値は、非特許文献１に示されているように、システムコールｓｅｔｉｔｉｍｅｒ（）によって設定される。タイマで計測されているＣＰＵ使用時間が、ＲＬＩＭＩＴ＿ＣＰＵに設定されている閾値を超えると、シグナルＳＩＧＸＣＰＵがプロセスに対して送信される。これにより、例えば、あるタスクのＣＰＵ使用時間が閾値に達していないかどうかを監視することができる。
【０００９】
このルーチンを図４のタイムチャートを用いて説明する。図４には時間経過に伴ってＣＰＵにより実行されるタスクが示されている。ＨＺは、タイマ割り込みの頻度を示しており、ＨＺ毎にタイマ割り込みが発生するものとする。
【００１０】
タイマ割り込み２３１が発生したときにはタスクＡ（ｔａｓｋＡ）が実行されている。そのため、インターバルタイマはタイマ割り込み２３１の発生を契機としてタスクＡのＣＰＵ使用時間を計測する。続いて、インターバルタイマはタスクＡのタイマ満了の判定を行う。しかし、この時点ではタスクＡのタイマは満了していないものとする。そのため満了していない（未満了）と判定される。そして、その後にタスクＡのタイマ満了時間となる。
【００１１】
次にタイマ割り込み２３２が発生する。このときにはタスクＢ（ｔａｓｋＢ）が実行されている。そこで、インターバルタイマはタイマ割り込み２３２の発生を契機としてタスクＢのＣＰＵ使用時間を計測する。続いて、インターバルタイマはタスクＢのタイマ満了の判定を行う。しかし、この時点ではタスクＢのタイマは満了していないものとする。そのため満了していない（未満了）と判定される。そして、その後にタスクＢのタイマ満了時間となる。
【００１２】
次にタイマ割り込み２３３が発生する。このときにはタスクＡが実行されている。そこで、インターバルタイマはタイマ割り込み２３３の発生を契機としてタスクＡのＣＰＵ使用時間を計測する。続いて、インターバルタイマはタスクＡのタイマ満了の判定を行う。この時点では、ＣＰＵ使用時間が閾値であるタイマ満了時間（ＲＬＩＭＩＴ＿ＣＰＵ）に達しているので、タスクＡが満了していると判定される。
【００１３】
このようにして各タスクのＣＰＵ使用時間が所定時間に達しているかどうかを判定することができる。ＣＰＵ使用時間が通常では達することの無い時間に達していれば、そのタスクが暴走していると判断することができる。
【００１４】
タスクが暴走していると判断された場合にはプロセスに対してシグナル（ＳＩＧＸＣＰＵ）が送信される。その場合、タスクの実行を中止することにより暴走の停止を図ることができる。
【００１５】
図５は、リナックスカーネルにおいて、１つのプロセスを構成する複数のスレッドが動作している場合のＣＰＵ使用時間の監視について説明するための概念図である。ここではスレッドＡとスレッドＢが同時に動作するものとする。
【００１６】
インターバルタイマ５０１は各スレッドのＣＰＵ使用時間を監視する。スレッドＡ、Ｂのそれぞれにはタイマ満了を判断するための閾値（満了時間あるいは満了時間間隔）が設定されているものとする。インターバルタイマ５０１は、スレッドＡあるいはスレッドＢのＣＰＵ使用時間が閾値に達したことを検出すると、タイマ満了をシグナルハンドラ５０２に知らせる。
【００１７】
シグナルハンドラ５０２は、スレッドＡ、Ｂに共通であり、インターバルタイマ５０１による監視結果に基づいてシグナルを発生させる。スレッド共通のシグナルハンドラ５０２には、スレッドＡまたはスレッドＢのタイマ満了によりシグナルを発生するようにシグナルアクションが設定されているものとする。シグナルハンドラ５０２は、インターバルタイマ５０１からタイマ満了の通知を受けると、シグナルを発生させる。
【非特許文献１】日本のＬｉｎｕｘ情報“ＧＥＴＩＴＩＭＥＲ”など［ｏｎｌｉｎｅ］、［平成１９年３月２０日］、インターネット＜URL: http://www.linux.or.jp/ JM/html/LDP_man-pages/man2/setitimer.2.html＞
【発明の開示】
【発明が解決しようとする課題】
【００１８】
上述したように、リナックスカーネルによるＣＰＵ使用時間の監視では、タイマ割り込みを契機として、そのときに実行されているタスクについてＣＰＵ使用時間の計測とタイマ満了の判定とが行われる。したがってタイマ割り込みが発生したときに実行されていないタスクについてはＣＰＵ使用時間が閾値に達していてもタイマ満了が検出されない。その結果として、タイマ満了時間に達してから実際にタイマ満了が検出されるまでの間に時間的に大きなずれが生じることがあった。
【００１９】
本発明の目的は、ＣＰＵによる処理の実行に関する時間のずれの少ない監視を可能にする時間監視装置を提供することである。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明の時間監視装置は、
ＣＰＵによる処理の実行に関する時間であるＣＰＵ時間を監視する時間監視装置であって、
前記ＣＰＵによるタスクの実行をスケジューリングするスケジューラと、
前記スケジューラのスケジューリングによって前記ＣＰＵの実行するタスクが切り替わるタイミングで最新の時間に更新するようにして前記ＣＰＵ時間を計測するインターバルタイマと、
前記タスクが切り替わるタイミングで、前記インターバルタイマで計測されている前記ＣＰＵ時間が更新されたときに、該ＣＰＵ時間が所定の閾値に達しているか否か判定するインターバルタイマ判定部と、を有している。
【００２１】
本発明によれば、スケジューリングによるタスク切り替えのタイミングでＣＰＵ時間を計測するので、タイマ割り込みのタイミングで実行中のタスクについて時間を計測する場合と比べて、タイマ満了時間に達してから実際にタイマ満了が検出されるまでの間の時間的なずれが縮小される。
【００２２】
また、前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが予め設定されており、前記インターバルタイマ判定部にて前記ＣＰＵ時間が前記閾値に達したと判定されれば前記アクションを実行するアクション部を更に有するとしてもよい。
【００２３】
これによれば、タイマ満了の監視の時間的な精度が向上するので、タイマが満了したら早期に、それに対するアクションを実行できる。
【００２４】
また、前記アクション部は、前記インターバルタイマ判定部にて前記ＣＰＵ時間が前記閾値に達したと判定されていれば、タイマ割り込みの発生したタイミングで前記アクションを実行するとしてもよい。
【００２５】
また、前記アクション部は、前記インターバルタイマ判定部にて前記ＣＰＵ時間が前記閾値に達したと判定されたときに即座に前記アクションを実行するとしてもよい。
【００２６】
また、前記インターバルタイマは前記ＣＰＵ時間をスレッド単位で計測し、
前記インターバルタイマ判定部は前記ＣＰＵ時間が前記閾値に達しているか否かを前記スレッド単位で判定し、
前記アクション部は、前記ＣＰＵ時間が前記閾値に達したときに採るべきアクションが前記スレッド単位に設定されており、前記インターバルタイマ判定部にて前記ＣＰＵ時間が前記閾値に達したと判定されたスレッドについてのアクションを実行するとしてもよい。
【００２７】
これによれば、スレッド単位でＣＰＵ使用時間の監視およびアクションの実行ができるので処理をスレッド単位で制御することができる。
【００２８】
また、前記アクションはシグナルの送出であるとしてもよい。
【００２９】
また、前記インターバルタイマは、前記ＣＰＵに供給されるクロックを基にして前記ＣＰＵ時間を計測するとしてもよい。
【００３０】
これによれば、ＣＰＵへ供給されるクロックを監視に用いることで監視の時間的な精度が向上する。
【発明の効果】
【００３１】
本発明によれば、スケジューリングによるタスク切り替えのタイミングでＣＰＵ時間を計測するので、タイマ割り込みのタイミングで実行中のタスクについて時間を計測する場合と比べて、タイマ満了時間に達してから実際にタイマ満了が検出されるまでの間の時間的なずれが縮小される。
【発明を実施するための最良の形態】
【００３２】
本発明を実施するための形態について図面を参照して詳細に説明する。
【００３３】
図１は、本実施形態によるメーズ監視装置の構成を示すブロック図である。図１を参照すると、本実施形態のメーズ監視装置は、ＣＰＵ１００、スケジューラ１０１、ＣＰＵクロック発生部１０２、クロック計測部１０３、計測時間更新部１０４、インターバルタイマ１０５、インターバルタイマ設定部１０６、インターバルタイマ取得部１０７、インターバルタイマ判定部１０８、シグナルアクション設定部１１０、およびシグナル送信部１０９を有する。メーズ監視装置は更にリソース使用量取得部１１１を備えてもよい。
【００３４】
ＣＰＵ１００は、スケジューラ１０１によるスケジューリングに基づいてタスクの処理を実行する演算処理部である。
【００３５】
スケジューラ１０１は、スケジューリングを行ってＣＰＵ１００の実行するタスクを制御する。
【００３６】
ＣＰＵクロック発生部１０２は基準となるクロックを生成してＣＰＵ１００に提供する。例えばクロック周波数を３ＧＨｚとすれば、クロック周期は０．３ｎｓとなる。
【００３７】
クロック計測部１０３はＣＰＵクロック発生部１０２で発生したクロックをカウントする。ＣＰＵ１００へ供給されるクロックを監視に用いることで監視の時間的な精度が向上する。
【００３８】
計測時間更新部１０４は、クロック計測部１０３によるカウントに基づいて経過時間を計測し、インターバルタイマ１０５に提供する。経過時間は、計測時間更新部１０４がインターバルタイマ１０５に対して前回、経過時間を提供したときから経過した時間である。
【００３９】
インターバルタイマ１０５は、計測時間更新部１０４から提供された経過時間を順次累積することにより計測時間を算出し、その値を保持する。本実施形態における計測時間はＣＰＵ使用時間である。
【００４０】
インターバルタイマ設定部１０６は、タイマ満了の判定においてインターバルタイマ１０５による計測時間と比較するための閾値となる所定の満了時間または所定の時間間隔を設定する。この閾値はタスク単位に設定することができる。また複数のスレッドがある場合にはスレッド単位で設定することができてもよい。
【００４１】
インターバルタイマ取得部１０７は、インターバルタイマ１０５にて保持されている計測時間の値を取得し、インターバルタイマ判定部１０８に提供する。
【００４２】
インターバルタイマ判定部１０８は、インターバルタイマ取得部１０７から提供された計測時間の値と、インターバルタイマ設定部１０６によって設定された閾値とを、タスク単位で比較することによってタイマ満了の判定を行う。また複数のスレッドがある場合にはスレッド単位で比較することができてもよい。計測時間の値が閾値に達していればタイマが満了したと判定され、計測時間の値が閾値に達していなければタイマは満了していない判定される。
【００４３】
インターバルタイマ判定部１０８は、タイマが満了したタスクを登録しておくためのタイマ満了済リストを備えており、あるタスクのタイマが満了したと判定すると、そのタスクをタイマ満了済リストに登録する。また複数のスレッドがある場合には、インターバルタイマ判定部１０８は、タイマが満了したスレッドをタイマ満了済リストに登録することにしてもよい。このタイマ満了済リストはシグナル送信部１０９から参照することができる。
【００４４】
本実施形態では、計測時間更新部１０４による経過時間の計測、インターバルタイマ１０５による計測時間の算出、インターバルタイマ取得部１０７による計測時間の取得、およびインターバルタイマ判定部１０８によるタイマ満了の判定は、スケジューラ１０１によってＣＰＵ１００の実行するタスクが切り替えられるタイミングで行われる。これにより、タスク切り替えのタイミングで、タイマが満了しているタスクがタイマ満了済リストに登録されることになる。
【００４５】
シグナルアクション設定部１１０は、タイマが満了したときに行うアクションを予め設定する。具体例としては、タイマが満了したときにシグナルを送出するというアクションを設定する。ここではシグナルアクションはタスク毎に設定される。また複数のスレッドがある場合にはスレッド毎にシグナルアクションが設定されることにしてもよい。
【００４６】
シグナル送信部１０９は、タスク切り替えのタイミングではなく、タイマ割り込みを契機として、タイマ満了済リストに登録されているタスクについて、シグナルアクション設定部１１０によって予め設定されているアクションを行う。具体的には、シグナル送信部１０９は、タイマ満了と判定された後にタイマ割り込みが発生するとシグナルを送出する。例えば、タイマ割り込みのＨＺが１０００であれば、タイマ満了と判定された後、最大でも１ｍｓｅｃ以内にシグナルが送出される。
【００４７】
シグナル送信部１０９は、タイマ満了済リストに登録されていたタスクについてのシグナルを送出すると、そのタスクをタイマ満了済リストから削除する。
【００４８】
また複数のスレッドがある場合には、シグナル送信部１０９は、タイマ満了済リストに登録されているスレッドについてのシグナルを送出するとともに、そのスレッドをタイマ満了済リストから削除することにしてもよい。
【００４９】
リソース使用量取得部１１１は、ＣＰＵ１００の動作によって使用されているリソース量を取得する。
【００５０】
図２は、本実施形態によるメーズ監視装置の動作を説明するためのタイミングチャートである。図２には時間経過に伴ってＣＰＵ１００により実行されるタスクが示されている。ＣＰＵ１００によって実行されるタスクはスケジューラ１０１によってスケジューリングされる。ここではタスクＡ（ｔａｓｋＡ）とタスクＢ（ｔａｓｋＢ）が交互に実行される例が示されている。ＨＺは、タイマ割り込みの頻度を示しており、ＨＺ毎にタイマ割り込みが発生するものとする。
【００５１】
図２を参照すると、スケジューラ１０１によってＣＰＵ１００の実行するタスクが切り替えられたタイミングで、インターバルタイマ１０５が各タスクＡ、Ｂの最新のＣＰＵ使用時間を算出し、インターバルタイマ判定部１０８が各タスクＡ、Ｂについてタイマ満了の判定を行う。各タイミングは、クロック発生部１０２で生成されたＣＰＵ１００のクロックのタイミングである。
【００５２】
ここではＣＰＵ１００にてタスクＡが実行され、それによってタスクＡのＣＰＵ使用時間が閾値に達するのがタイマ満了時間２２１であるとする。タイマ満了時間２２１が経過した次のタスク切り替えのタイミングで、タスクＡがタイマ満了済リストに登録される。タスクＡのタイマ満了済リストへの登録は図２では、「ｔａｓｋＡ情報接続」として示されている。
【００５３】
タイマ割り込み２３２が発生すると、シグナル送信部１０９は、タイマ満了済リストに登録されているタスクＡについてのシグナルを送出するとともに、タスクＡをタイマ満了リストから削除する。
【００５４】
また、ここではＣＰＵ１００にてタスクＢが実行され、それによってタスクＢのＣＰＵ使用時間が閾値に達するのがタイマ満了時間２２２であるとする。タイマ満了時間２２２が経過した次のタスク切り替えのタイミングで、タスクＢがタイマ満了済リストに登録される。タスクＢのタイマ満了済リストへの登録は図２では、「ｔａｓｋＢ情報接続」として示されている。
【００５５】
タイマ割り込み２３３が発生すると、シグナル送信部１０９は、タイマ満了済リストに登録されているタスクＢについてのシグナルを送出するとともに、タスクＢをタイマ満了リストから削除する。
【００５６】
以上説明したように、本実施形態によれば、スケジューリングによるタスク切り替えのタイミングで、各タスクあるいはそのスレッドについてＣＰＵの使用に関する時間を計測するので、タイマ割り込みのタイミングで実行中のタスクについて時間を計測する場合と比べて、タイマ満了時間に達してから実際にタイマ満了が検出されるまでの間の時間的なずれが縮小される。
【００５７】
また、本実施形態によれば、タイマ満了の監視の時間的な精度が向上するので、タイマが満了したら、それを示すシグナルを早期に送出することができる。
【００５８】
なお、本実施形態では、一例として、タイマ割り込みのタイミングでシグナル送信部１０９がシグナルを送出することとした。しかし、他の例として、タスク切り替えのタイミングで、インターバルタイマ判定部１０８がタイマ満了の判定を行うのに引き続いて、即座に、シグナル送信部１０９がタイマの満了したスレッドのシグナルを送出することにしてもよい。その場合、タイマの満了したスレッドをタイマ割り込みの発生まで登録しておくためのタイマ満了済リストが不要となる。
【００５９】
また、本実施形態ではメーズ監視装置を例示しているので、タイマの満了したスレッドについてのシグナルが送出されたときには暴走と判断して、そのスレッドの処理を停止したり、そのスレッドに関する障害情報を発行したりすればよい。
【００６０】
また、本実施形態ではタスクを単位として動作する場合を例示したが、タスクあるいはプロセスが複数のスレッドで構成されている場合にはスレッド単位で動作し、スレッド単位でシグナルを送出することにしてもよい。
【００６１】
図３は、２つのスレッドが動作する場合のＣＰＵ使用時間の監視について説明するための概念図である。ここではスレッドＡとスレッドＢが同時に動作するものとする。
【００６２】
図３のインターバルタイマ１０５′は、図１に示したインターバルタイマ１０５、インターバルタイマ取得部１０７、およびインターバルタイマ判定部１０８を併合した機能を備えている。
【００６３】
インターバルタイマ１０５′は各スレッドＡ、ＢのＣＰＵ使用時間を監視する。スレッドＡ、Ｂのそれぞれにはタイマ満了を判断するための閾値（満了時間あるいは満了時間間隔）が設定されているものとする。
【００６４】
インターバルタイマ１０５′は、スレッドＡのＣＰＵ使用時間が閾値に達したことを検出すると、スレッドＡのシグナルハンドラ１０９Ａにタイマ満了を知らせる。またインターバルタイマ１０５′は、スレッドＢのＣＰＵ使用時間が閾値に達したことを検出すると、スレッドＢのシグナルハンドラ１０９Ｂにタイマ満了を知らせる。
【００６５】
シグナルハンドラ１０９Ａは、図１に示したシグナル送信部１０９のうち、スレッドＡについてのシグナルの送出を担う機能である。シグナルハンドラ１０９Ａは、インターバルタイマ１０５′による監視結果に基づいて、スレッドＡについてのシグナルを発生させる。シグナルハンドラ１０９Ａには、スレッドＡのタイマ満了によりシグナルを発生するようにシグナルアクションが設定されているものとする。シグナルハンドラ１０９Ａは、インターバルタイマ１０５′からタイマ満了の通知を受けると、シグナルを発生させる。
【００６６】
シグナルハンドラ１０９Ｂは、図１に示したシグナル送信部１０９のうち、スレッドＢについてのシグナルの送出を担う機能である。シグナルハンドラ１０９Ｂは、インターバルタイマ１０５′による監視結果に基づいて、スレッドＢについてのシグナルを発生させる。シグナルハンドラ１０９Ｂには、スレッドＢのタイマ満了によりシグナルを発生するようにシグナルアクションが設定されているものとする。シグナルハンドラ１０９Ｂは、インターバルタイマ１０５′からタイマ満了の通知を受けると、シグナルを発生させる。
【００６７】
図５に示したリナックスカーネルでは、シグナルハンドラ５０２がスレッド共通なので複数のスレッドが存在する場合にスレッド毎のシグナルを送出することができず、処理をスレッド単位で制御することができなかった。それに対して、本実施形態の本例によれば、スレッド単位でＣＰＵ使用時間の監視およびシグナルの送出を行うことができるので処理をスレッド単位で制御することができる。
【００６８】
なお、図３の例のように、スレッド共通のシグナルの送出を担う図５のシグナルハンドラ５０２に相当するシグナルハンドラ１０９Ｃがスレッド毎のシグナルハンドラ１０９Ａ、１０９Ｂと並存していてもよい。また、その場合、スレッド単位のシグナル送出のためにＣＰＵ使用時間を計測する機能とは別に、スレッド共通のシグナル送出のためにＣＰＵ使用時間を計測する機能が並存してもよい。
【００６９】
また、これまでに説明した本実施形態において、図１に示したメーズ監視装置の各部の機能はコンピュータがカーネルのようなソフトウェアプログラムを実行することにより実現することができる。
【００７０】
また、本実施形態では、タスク等がＣＰＵを使用した使用時間を監視する例を示したが、同様にして、ＣＰＵによる処理の実行に関する各種のＣＰＵ時間を監視することができる。例えば、タスク等がＣＰＵを使用していない待機時間を監視することもできる。また、タスク等によるＣＰＵの使用時間と待機時間を合わせた、タスクの実行に要する実時間を監視することもできる。
【図面の簡単な説明】
【００７１】
【図１】本実施形態によるメーズ監視装置の構成を示すブロック図である。
【図２】本実施形態によるメーズ監視装置の動作を説明するためのタイミングチャートである。
【図３】２つのスレッドが動作する場合のＣＰＵ使用時間の監視について説明するための概念図である。
【図４】リナックスカーネルにおけるＣＰＵ使用時間の監視動作を示すタイムチャートである。
【図５】リナックスカーネルにおいて、１つのプロセスを構成する複数のスレッドが動作している場合のＣＰＵ使用時間の監視について説明するための概念図である。
【符号の説明】
【００７２】
１００    ＣＰＵ
１０１    スケジューラ
１０２    ＣＰＵクロック発生部
１０３    クロック計測部
１０４    計測時間更新部
１０５、１０５′    インターバルタイマ
１０６    インターバルタイマ設定部
１０７    インターバルタイマ取得部
１０８    インターバルタイマ判定部
１０９    シグナル送信部
１０９Ａ、１０９Ｂ、１０９Ｃ    シグナルハンドラ
１１０    シグナルアクション設定部
【図１】
0004757237.tif 000002
【図２】
0004757237.tif 000003
【図３】
0004757237.tif 000004
【図４】
0004757237.tif 000005
【図５】
0004757237.tif 000006