説明

コンピュータ、コンピュータの障害検知方法、及びプログラム

【課題】
コンピュータに生じた障害を、異常終了等に至る前に迅速に検知することを可能とする。
【解決手段】
コンピュータ1は、実行するプログラム132を構成する各プロセス132A、BがCPU110によって処理開始されてから処理終了するまでにわたって、プロセッサ使用時間とプロセッサ不使用時間とを順次複数回計測して取得し、所定の統計処理に従って、遷移時間802及び状態待機時間803を算出して記憶する。CPU110により前記プロセスのいずれかが処理されているときに、当該プロセスについて、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測して、逐次当該プロセスについて記憶されている遷移時間802及び状態待機時間803と比較し、当該比較結果が所定の判定基準を満たしていないと判定した場合に、当該プロセス処理中に障害が発生したと判定する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータ、コンピュータの障害検知方法、及びプログラムに係わり、特にコンピュータに生じた障害を、異常終了等に至る前に迅速に検知することを可能とするコンピュータ、コンピュータの障害検知方法、及びプログラムに関する。
【背景技術】
【0002】
高可用性システム(High Availability System、以下「HAシステム」という。)と呼ばれるコンピュータは、障害が発生した場合でもシステムを停止させず継続して稼働させることができるように設計されたシステム、あるいは、障害が発生して停止を余儀なくされた場合でも、復旧させるまでの時間が可及的に短縮されるように設計されたシステムである。このため、HAシステムでは、例えば機能ブロックの主要な部分を冗長化することにより、障害発生時には障害発生部位を切り離し、正常な部位を利用して稼働継続することにより稼働率を高めている。このような障害発生時対応を実現するためには、システム内の障害発生部位を迅速かつ適切に検知することができるように構成することが重要である。
【0003】
コンピュータの障害を検知するために、ハードウェアでは個々の要素での障害検知機能、冗長化が発展してきている。一方、ソフトウェアについても同様に、個々のプログラムでの障害検知機能と、HAクラスタソフトウェアによる冗長化などが適用されるようになっている。
【0004】
特許文献1には、複数のプログラムがイベントにより連携している場合の動作遅延を検出することを目的として、監視対象とするイベントを指定し、監視対象として指定されているイベント通知に対する待機、通知の操作を記録し、待機しているスレッドの実行再開を記録し、この記録を検査してイベント通知されたにも関わらず走行を再開しないスレッドが存在することを検知する構成が提案されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−72958号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、特許文献1では、単一のプログラムが実行されている場合に生じる障害に対処することができないと考えられる。
さらに、今日多数のソフトウェアを組み合わせて実現されるオープンシステムでは、多数の人員と組織が開発に携わっており、それらの間で設計の基準が異なることもあり、ソフトウェア設計上の統一性と設計レベルを均一に保つことが難しい場合もある。
【0007】
ソフトウェアの障害は、異常終了・エラー出力・スローダウン/ハングアップの三種類に大別される。異常終了は、プログラムのバグなどに起因して、プログラムやアプリケーションの処理が通常の状態で終了しないことをいう。エラー出力は、プログラム実行中になんらかのエラーが検知されたことを、出力画面等を通じてユーザ等に出力することをいう。スローダウン/ハングアップは、なんらかの原因によって、コンピュータの処理速度が低下したり、処理が停止したりする現象であり、ユーザインタフェースでは、マウス等による操作入力に対する反応速度の低下、画面のフリーズ等の現象として把握されることがある。
【0008】
異常終了やエラー出力を伴う障害に関しては、ソフトウェアの設計レベルがたとえ均一でなかったとしても、開発者がそれらを引き起こす事象を異常と認識できている限りそれらに対する検知機能は個別に実装されるため、あまり問題にならない。
【0009】
しかし、スローダウン/ハングアップについては、システム内の様々な部位で発生する可能性があるため、個々のハードウェア、ソフトウェアで対処しても、複数のシステムが協働する場合に、なお障害を引き起こす可能性を含んでいる。また、特にプロセッサの処理時間を不当に延長させるような障害に対しては検知しない設計をとる場合もある。そのため、このスローダウン/ハングアップ検知はまだ十分に行われているとは言えない状況である。したがって、スローダウン/ハングアップによりシステムのサービス提供が停止した場合でも、これを自動的に検知できず、システムの不稼働時間が発生することがある。
【0010】
本発明は上記の事情に鑑みてなされたものであり、その一つの目的は、コンピュータに生じた障害を、異常終了等に至る前に迅速に検知することを可能とするコンピュータ、コンピュータの障害検知方法、及びプログラムを提供することである。
【課題を解決するための手段】
【0011】
上記の及び他の目的を達成するために、本発明の一態様は、プロセッサとメモリとを備え、前記プロセッサによって、前記メモリに記憶されている少なくとも一のソフトウェアプログラムを構成している複数のプロセスを処理して前記ソフトウェアプログラムを実行するコンピュータであって、各前記プロセスについて、当該プロセスが前記プロセッサによって処理開始されてから処理終了するまでにわたって、前記プロセッサが前記プロセスを処理している時間であるプロセッサ使用時間と、前記プロセッサが前記プロセスの処理を停止している時間であるプロセッサ不使用時間とを順次複数回計測して取得し、所定の統計処理に従って、各前記プロセッサ使用時間の統計的基準値であるプロセッサ使用時間基準値と、各前記プロセッサ不使用時間の統計的基準値であるプロセッサ不使用時間基準値とを、各前記プロセスについて算出して記憶するプロセッサ処理基準値取得部と、前記プロセッサにより前記ソフトウェアプログラムを構成する前記プロセスのいずれかが処理されているときに、当該プロセスについて、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測して、逐次当該プロセスについて記憶されている前記プロセッサ使用時間基準値及び前記プロセッサ不使用時間基準値と比較し、当該比較結果が所定の判定基準を満たしていないと判定した場合に、当該プロセス処理中に障害が発生したと判定する基準値比較処理部とを備えていることを特徴とするコンピュータである。
【発明の効果】
【0012】
上記の構成を有する本発明によれば、コンピュータに生じた障害を、異常終了等に至る前に迅速に検知することを可能とするコンピュータ、コンピュータの障害検知方法、及びプログラムが提供される。
【図面の簡単な説明】
【0013】
【図1】図1は、本発明における障害検知方法を実現するための、CPUにおけるプロセス実行状態の捉え方を示す模式図である。
【図2】図2は、通常とは異なる状態を認識した障害の概要を示す模式図である。
【図3】図3は、状態の遷移に異常に時間がかかる障害の概要を示す模式図である。
【図4】図4は、ある状態が異常に長く続く障害の概要を示す模式図である。
【図5】図5は、本発明の一実施形態に係るコンピュータ1におけるハードウェア構成の全体図である。
【図6】図6は、コンピュータ1のソフトウェア構成の一例を示す図である。
【図7】図7は、プロセス管理テーブル700の一例を示す図である。
【図8】図8は、統計情報管理テーブル800の一例を示す図である。
【図9】図9は、仮記憶テーブル900の一例を示す図である。
【図10】図10は、図7のプロセス管理テーブル700に対応する別の例を示す図である。
【図11】図11は、統計情報Bに関する統計情報管理テーブル800の一例を示す図である。
【図12】図12は、状態遷移監視処理の処理フローの一例を示す図である。
【図13】図13は、統計情報採取処理の処理フローの一例を示す図である。
【図14A】図14Aは、統計情報比較処理の処理フローの一例を示す図である。
【図14B】図14Bは、統計情報比較処理の処理フローの一例を示す図である。
【発明を実施するための形態】
【0014】
以下に、本発明の一実施形態を、図面を用いて詳細に説明する。
【0015】
《本実施形態における障害検知方法の概要》
一般的なソフトウェア(特にサービス提供プログラム)の動作は、当該ソフトウェアを構成する多数のプロセスが、それらのプロセスを処理するプロセッサにおいてそれぞれ一定の状態遷移を繰り返しながら実行されることにより、そのサービスを提供している。プロセスが一定期間(例えば1秒間)スリープした期間(プロセッサ不使用時間)を「状態」と定義し、その状態が変化する期間(プロセッサ使用時間)を「遷移」と定義する。つまり、あるプロセスがスリープしてから走行開始するまでの間の待機期間を「状態」といい、走行開始してから再度スリープするまでの期間を「遷移」と定義している。なお、「プロセス」の用語は、本明細書中で、UNIXOSが適用される場合に限らず、一般的にOSによって実行されるプログラムの実行単位を示すものとする。
【0016】
本実施形態における障害検知方法の考え方について、図1〜図4を参照して説明する。図1は、本発明における障害検知方法を実現するための、プロセッサにおけるプロセス実行状態の捉え方を示す模式図である。ここでは、プロセスが開始しプロセッサを使用している(プロセスが走行している)状況を「遷移」1001と定義する。また「遷移」と対をなし、プロセスがプロセッサを一定時間使用していない状況を「状態」1002と定義する。この遷移1001と状態1002とが対となって形成される状態遷移を把握し、正常時とは異なる挙動(例えば図1における状態1003の加入)を捉えることにより障害を検知する。
【0017】
図2は、通常とは異なる状態を認識した障害の概要を示す模式図である。状態2001から状態2002への遷移が正常時とは異なり不当に短く、その間に通常とは異なる状態2004への新たな遷移2003を認識した場合を例示している。図2の例は、通常は短時間で終了するロック待ちが、何らかの理由で間延びし、プロセス全体の処理時間が遅くなる障害などを想定している。
【0018】
図3は、状態の遷移に異常に時間がかかる障害の概要を示す模式図である。状態3001から状態3002への遷移3003が、通常とは異なり大幅に時間がかかって、状態3002へ遷移しない場合を示している。図3の例は、他のプロセスによってプロセッサが不当に長時間占有されている、無限ループなどの障害を想定している。
【0019】
図4は、ある状態が異常に長く続く障害の概要を示す模式図である。状態1201において正常時よりも長くプロセッサの割り当てが行われず、遷移1202に遷移しない場合を示している。図4の例は、ハングアップや不当なI/O待ちなどの障害を想定している。
【0020】
本実施形態における障害検知方法では、上記の「状態遷移」の時間変化について、プロセッサで稼働するオペレーティングシステム(Operating System、OS)内部で計測して統計をとり、この統計情報を基にソフトウェアの障害を検知することとしている。OS内部で一定のポリシーで障害を監視し検知することにより、実装されているソフトウェア側での設計レベルのばらつきなどを吸収して迅速かつ確実な障害検知を実現する。その一定のポリシーとしては、プロセッサがプロセスによって使用されていない(スリープしている)状態に着目し、ある状態から次の状態への遷移に要する時間について統計情報を取得してプロセスの動作を把握し、その変化を捉えることにより障害を検知するものである。
【0021】
なお、具体的な障害検知の態様については、本障害検知方法の処理フロー例等を参照して後述する。
【0022】
《システム構成》
次に、本実施形態の障害検知方法を適用したコンピュータ1について説明する。図5は、本発明の一実施形態に係るコンピュータ1のハードウェア構成の全体図を示している。
【0023】
図5に示すように、コンピュータ1は、中央処理装置110、制御部120、主記憶装置130、補助記憶装置140、入力装置150、出力装置160、通信制御部170、及びそれらを相互に通信可能に接続する内部バス180を備えて構成される。
【0024】
中央処理装置110は、例えばCPU(Central Processing Unit)あるいはMPU(Micro Processing Unit)を含むプロセッサである。本明細書では以下簡単のため「CPU」と称する。制御部120は、CPU110と他のハードウェアブロックとの間でのデータ転送を制御するインタフェースである。
【0025】
主記憶装置130は、例えばRAM(Random Access Memory)、ROM(Read Only Memory)等の記憶素子を備えるメモリであり、後述するように、コンピュータ1全体の制御を行うOS、各種プログラム及びテーブル等のデータが読み込まれる。補助記憶装置140は、例えばHDD(Hard Disk Drive)、半導体記憶デバイス(Solid State Drive、「SSD」)等の記憶デバイスであり、コンピュータ1で実行される各種プログラム、当該プログラム実行時に参照されるテーブル類が記憶される。
【0026】
入力装置150は、例えばキーボードやマウスであり、ユーザの操作入力を受け付ける。出力装置160は、例えば液晶モニタ、プリンタ等の出力機器であり、オーディオ等の他の出力を可能とする機器を含む。通信制御部170は、例えばNIC(Network Interface Card)、HBA(Host Bus Adapter)等を含む、他の装置との間の通信を実現する機能を有する。
【0027】
次に、コンピュータ1のソフトウェア構成について説明する。図6に、コンピュータ1のソフトウェア構成の一例を、各ソフトウェアがCPU110によって実行されるべく主記憶装置130に読み込まれた状態で示している。なお、これらのソフトウェアは、常時補助記憶装置140に格納されており、コンピュータ1の起動時、あるいはユーザの操作入力に基づくOSからの命令受信時に主記憶装置130に読み込まれる。
【0028】
図6の例では、コンピュータ1には、ソフトウェアとして、OS131、プログラム132、及び障害検知部133を実現するためのプログラムが実装されている。
【0029】
OS131は、コンピュータ1を構成している各構成要素の動作を制御している。OS131はプロセススケジューラ1311(プロセス割当て部)を有しており、補助記憶装置150に格納されている後述のプログラム132を主記憶装置130に読み込み、プロセススケジューラ1311を用いてそのロードしたプログラム132を構成しているプロセスにCPU110を割り当ててプロセスを実行させている。OS131としては、例えばWindows(登録商標)、及びUNIX(登録商標)系のOS等が好適に用いられるが、特に制約されるものではない。
【0030】
プログラム132は、コンピュータ1において実行されるべきアプリケーションプログラム等を含む任意のプログラムであり、前記のようにOS131によって補助記憶装置140から主記憶装置130に読み込まれ、CPU110によって実行される。本実施形態の例では、プログラム132は2つのプロセス、プロセスA(132A)及びプロセスB(132B)を有している。プログラム132がCPU110で実行される際には、プロセススケジューラ1311によってプロセスA、プロセスBに適時にCPU110が割り当てられることとなる。
【0031】
障害検知部133は、この障害検知部133の機能を実現するプログラムをCPU110が実行することによって実現される機能ブロックである(図6においては、障害検知部133は主記憶装置130に読み込まれたプログラムとして表されている。)。障害検知部133は、状態遷移監視部1331、統計情報採取処理部(プロセッサ処理基準値取得部)1332、統計情報記憶部1333、統計情報比較処理部(基準値比較処理部)1334、及び障害通知部1335を備えて構成される。
【0032】
障害検知部133は、コンピュータ1の起動時に、OS131により補助記憶装置140から主記憶装置130にロードされる。障害検知部133は、ロードされた後は、プロセススケジューラ1311による、障害検知対象のプロセス(図6の例ではプログラム132を実行するためのプロセスA(132A)及びプロセスB(132B))に対する制御部120を通したCPU110の操作の情報を取得し、統計情報採取処理部1332が統計情報記憶部1333にその採取された統計情報を保存する。
【0033】
障害検知部133は、統計情報の保存が完了した後、障害検知を開始する。障害検知を実行する場合、状態遷移監視部1331から得たCPU110の操作に関する情報と統計情報記憶部1333の統計情報を統計情報比較処理部1334が比較し、いずれかのプロセスに障害が発生していないか確認する。障害検知部133は、障害が発生したことを確認した場合、障害通知部1335を通じてOS131に障害発生を通知する。この通知を受けたOS131は、出力装置150を通じて管理者等に警告メッセージ等を提示することができる。
【0034】
次に、上記障害検知部133によって生成及び参照されるテーブル類について説明する。本実施形態では、障害検知部133の統計情報記憶部1333に、プロセス管理テーブル700、統計情報管理テーブル800、及び仮記憶テーブル900が保持されている。
【0035】
図7に、プロセス管理テーブル700の一例を示している。プロセス管理テーブル700は、障害検知部133の監視対象となるプロセス132に関する統計情報の状態を管理するために使用され、監視対象プロセス701、統計情報採取完了フラグ702、及び統計情報テーブル703の各項目を記録している。プロセス管理テーブル700は、コンピュータ1の起動時に、障害検知部133によって統計情報記憶部1333内に生成される。
【0036】
監視対象プロセス701は、障害検知部133によって監視される対象となるプロセス132を特定する情報が記録されており、図7の例ではコンピュータ1において監視対象のプロセスA(132A)及び監視対象のプロセスB(132B)が実行されているため、その両者が記録されている。この場合、プロセスA、プロセスBのいずれかが実行終了すれば、その記録はプロセス管理テーブル700から削除される。また、プロセスA、プロセスBに加えて他の監視対象のプロセス(例えばプロセスC)にCPU110が割り当てられれば、プロセスCに関するレコードが追加される。また、監視対象プロセス701には、管理者等が監視対象とすることを所望するプロセスを入力装置150から登録しておくこともできる。
【0037】
統計情報採取完了フラグ702は、各監視対象プロセス701について、障害検知部133での障害検知有無の判断に使用する統計情報が採取されているかを示す情報が記録される。採取が完了している場合には統計情報採取完了フラグ702に「True」が記録され、まだ採取が完了していない場合には、「False」が記録される。
【0038】
統計情報テーブル703には、各監視対象プロセス701について障害検知部133が参照すべき統計情報テーブル(後述)として対応付けられているテーブルが特定されて記録されている。図7の例では、プロセスA(132A)については、すでに障害検知に使用する統計情報が採取済みであるため、当該採取済みの統計情報が記録されている統計情報Aテーブル(具体的には後出の統計情報管理テーブル800)が対応付けられている。一方、プロセスBについてはまだ統計情報の採取が完了していないため、対応する統計情報テーブル703には、統計情報採取中であることを示す、後出の仮記憶テーブル900(「仮記憶1」、「仮記憶2」)が対応付けられている。
【0039】
次に、統計情報管理テーブル800について説明する。図8に本実施形態における統計情報管理テーブル800の一例を示している。統計情報管理テーブル800は、後述する障害検知部133が監視対象プロセスについて比較参照するべき統計情報を記録している。統計情報管理テーブル800には、監視項目801、遷移時間802、及び状態待機時間803の各項目が記録されている。監視項目801には、監視対象プロセス(この場合プロセスA(132A))にCPU110が割り当てられて実行開始後の「状態遷移」、すなわち「遷移」及び「状態」の組み合わせが、例えば図8の例では「状態遷移1」、「状態遷移2」と順に登録されている。
【0040】
遷移時間802(プロセッサ使用時間基準値)には、対応付けられている状態遷移における遷移に要した時間として統計的に採取された数値が記録される。また、状態待機時間803(プロセッサ不使用時間基準値)には、対応付けられている状態遷移における状態が持続した時間として統計的に採取された数値が記録される。図8の例では、状態遷移1について、その遷移時間が500ms、状態待機時間が1000msとして統計的に求められたことを示している。なお、図8には仮定の数値を記載しており、また数値の単位はミリ秒以外であってもよい。なお、ここで採用する遷移時間802、状態待機時間803を求めるための統計処理は、複数の計測値の算術平均、中心値、あるいは最頻値を求める処理等の、適宜の手法を適用して実行すればよい。
【0041】
次に、仮記憶テーブル900について説明する。図9に仮記憶テーブル900の一例を示している。仮記憶テーブル900は、システム起動時にプロセス管理テーブル700が生成されて監視対象プロセスが登録されたことを契機として、障害検知部133により統計情報記憶部1333内に生成される。図7に示すように、仮記憶テーブル900は、統計情報採取が完了していない監視対象プロセス(完了フラグ=「False」)に対応付けて複数生成される。これは、監視対象プロセスの状態遷移について、統計的に信頼することができる数値を得るために、遷移時間及び状態待機時間を複数回採取して記録するためである。規定の回数採取された場合には、それによって生成された複数の仮記憶テーブル900を、前記例示した統計処理に対応する所定の手順でマージして図8の統計情報管理テーブル800が生成される。
【0042】
仮記憶テーブル900に記録される、監視項目901、遷移時間902、及び状態待機時間903は、統計情報管理テーブル800の対応する項目と同一である。
【0043】
図10に、図7のプロセス管理テーブル700に対応する別の例を示している。図10のプロセス管理テーブル700では、プロセスBについても統計情報採取が完了しているため、統計情報採取完了フラグ702に「True」が、統計情報テーブル703の項目には、対応付けられている「統計情報B」が記録されている。
【0044】
図11に、統計情報Bに関する統計情報管理テーブル800の一例を示している。図11の統計情報管理テーブル800は、プロセスBについての障害検知処理を実行する際に、障害検知部133によって参照される。図11の統計情報管理テーブル800に記録されている内容は、図8と同様である。
【0045】
《障害検知処理の処理内容》
次に、以上説明したシステム構成に基づいて、コンピュータ1における障害検知部133が実行する障害検知処理について、処理フロー例を参照しつつ説明する。
【0046】
状態遷移監視処理
まず、障害検知部133の状態遷移監視部1331によって実行される状態遷移監視処理について説明する。図12は、状態遷移監視処理の処理フローの一例を示している。この状態遷移監視処理では、主に、状態遷移監視部1331により、プロセス管理テーブル700において監視対象として格納されている各プロセスについて、障害検知処理に使用すべき統計情報を採取する処理を行うのか、すでに取得されている統計情報を使用して実際に障害検知処理を実行するのかを判断する処理が行われる。
【0047】
まず、状態遷移監視部1331は、OS131のプロセススケジューラ1311を監視し、OS131でCPU110が割り当てられ処理が開始されたプロセスがプロセス管理テーブル700に格納されているプロセスであるか判断する(S1201)。処理が開始されたプロセスがプロセス管理テーブル700に格納されていないと判断した場合(S1201、No)、状態遷移監視部1331は、プロセス管理テーブル700において監視対象とされているプロセスの処理が開始されるまでプロセススケジューラ1311を続けて監視する。
【0048】
処理が開始されたプロセスがプロセス管理テーブル700に格納されていると判断した場合(S1201、Yes)、状態遷移監視部1331は、開始された当該プロセスに対応付けられている統計情報採取完了フラグ702を確認する(S1202)。統計情報採取完了フラグ702に「True」が記録されていると判断した場合(S1202、Yes)、状態遷移監視部1331は、統計情報比較処理部1334に統計情報比較処理を実行させる(S1203)。統計情報比較処理の内容については後述する。
【0049】
統計情報採取完了フラグ702に「False」が記録されていると判断した場合(S1202、No)、状態遷移監視部1331は、統計情報採取処理部1332に統計情報採取処理を実行させる(S1204)。統計情報採取処理の内容については後述する。
【0050】
統計情報採取処理終了後、状態遷移監視部1331は、当該統計情報採取処理が指定した回数実行されたか判断する(S1205)。統計情報採取処理についての実行回数は、例えば状態遷移監視部1331内にパラメータとして保持させればよい。統計情報採取処理が指定した回数実行されたと判断した場合(S1205、Yes)、状態遷移監視部1331は、それまで採取して仮記憶テーブル900に格納されている状態遷移に関する情報について所定の手順で統計処理し、得られた統計情報を統計情報管理テーブル800に格納する(S1207)。統計処理の内容としては、前記したように、例えばあるプロセスについて指定の複数回計測して得られた状態遷移についての遷移時間及び状態待機時間を単純平均して求める、あるいは、中心値、最頻値を求めるなど、適宜の統計処理を適用することができる。
【0051】
状態遷移監視部1331は、次いで処理中の当該プロセスについて、プロセス管理テーブル700において統計情報採取完了フラグ702を「True」に変更し、統計情報テーブル703に対応する統計情報管理テーブル800を特定する(S1208)。
【0052】
S1205において、統計情報採取処理が指定した回数実行されていないと判断した場合(S1205、No)、状態遷移監視部1331は、新規の仮記憶テーブル900を作成し、次回の統計情報採取処理では、新たに作成した仮記憶テーブル900(例えば「仮記憶2」)に採取した情報を記録する(S1206)。
【0053】
以上述べた状態遷移監視処理は、システム起動後、コンピュータ1又は障害検知部133を稼働させるプログラムが終了しない限り繰り返し実行される。
【0054】
以上説明した状態遷移監視処理によれば、障害検知部133がCPU110で実行されるプロセスの実行状態(状態遷移)に基づいて、当該プロセスの障害検知を実行するのに必要とされる、正常時のプロセス状態遷移に関する統計情報を自動的に収集して、その統計情報に基づく状態遷移の監視を行うことができる。
【0055】
統計情報採取処理
次に、障害検知部133の統計情報採取処理部1332によって実行される統計情報採取処理(状態遷移監視処理(図12)におけるS1204)について説明する。図13に、本実施形態における統計情報採取処理の処理フローの一例を示している。統計情報採取処理では、主に、統計情報採取処理部1332により、統計情報記憶部1333に統計情報を採取して格納する処理が実行される。
【0056】
まず、統計情報採取処理部1332は、監視対象であるプロセスによるCPU110の使用時間の計測を開始する(S1301)。次いで、統計情報採取処理部1332は、監視対象プロセスがCPU110の使用を開始しているか判断し(S1302)、使用していると判断した場合(S1302、Yes)、S1301で開始したCPU使用時間の計測を継続する。
【0057】
S1302で監視対象プロセスが使用されていないと判断した場合(S1302、No)、統計情報採取処理部1332は、CPU110が使用されている時間のみを計測するため、CPU110の使用時間の計測を中断し、使用時間の計測値を例えば主記憶装置130内の適宜の格納場所に格納する(S1303)。なお、プロセスがCPU110の使用をしない状態となるのは、プロセス自体がCPU110を解放する場合、プロセススケジューラ1311によりプロセスの使用が停止される場合等を含んでいる。
【0058】
次いで、統計情報採取処理部1332は、監視対象プロセスが再度CPU110を使用開始するまでの時間、すなわち監視対象のプロセスによってCPU110が使用されていない時間を計測する(S1304)。
【0059】
次いで、統計情報採取処理部1332は、S1304で計測したCPU110を使用していない時間が、状態として認識する閾値として設定した値を超えていないか判断する(S1305)。この閾値は、CPU110を使用していないとして計測された時間を「状態」として把握してよいか判断するためのパラメータであり、任意の数値を設定することができる。
【0060】
計測したCPU110を使用していない時間が閾値を超えていないと判断した場合(S1305、No)、統計情報採取処理部1332は、当該計測値を状態として把握せず、まだ遷移であると把握するため、CPU110の使用時間の計測を再開する(S1311)。
【0061】
計測したCPU110を使用していない時間が閾値を超えていると判断した場合(S1305、Yes)、統計情報採取処理部1332は、プロセス管理テーブル700を参照し、CPU110を使用していない時間の計測値を、監視対象プロセスに関して現在使用されている仮記憶テーブル900の監視項目901に記録されている「状態遷移1」に対応する状態待機時間903として登録する。
【0062】
次いで、統計情報採取処理部1332は、S1303において格納しておいたCPU110の使用時間計測値を、同じく現在使用している仮記憶テーブル900の監視項目901に記録されている「状態遷移1」に対応する遷移時間902として登録する(S1307)。
【0063】
以上で、監視対象プロセスに関する最初の状態遷移に関する遷移時間902及び状態待機時間903の計測及び記録が完了したこととなるので、統計情報採取処理部1332は、仮記憶テーブル900において、次の状態遷移(図9の状態遷移2)について遷移時間902と状態待機時間903を記録するため、監視項目901として次の状態遷移2に関するレコードを追加する。
【0064】
次に、統計情報採取処理部1332は、監視対象としているプロセスが終了したか判断し(S1309)、終了していないと判断した場合(S1309、No)、次の状態遷移における遷移時間902を計測するために、CPU110の使用時間を再度計測開始して(S1310)、S1302に処理を戻し、監視対象のプロセスが終了するまで、状態遷移を記録する。S1309で、監視対象としているプロセスが終了したと判断した場合(S1309、Yes)、統計情報採取処理部1332は、処理を終了する。
【0065】
以上説明した統計情報採取処理によれば、監視対象プロセスの開始から終了まで(具体的には、図1における開始から終了まで)について、障害検知処理に使用する統計情報を算出するために、各状態遷移の遷移時間及び状態待機時間を得ることができる。
【0066】
統計情報比較処理
次に、統計情報比較処理について説明する。図14A、図14Bに、本実施形態における統計情報比較処理の処理フローの一例を示している。この統計情報比較処理では、主に、障害検知部133の統計情報比較処理部1334により、状態遷移監視部1331から得た情報を統計情報記憶部1334に格納されている情報と比較して障害検知処理が実行される。監視対象プロセスの状態遷移に関する時間は、図13に例示した統計情報採取処理の場合と同様に、OS131のプロセススケジューラ1311の状態を監視することにより計測する。
【0067】
まず、統計情報比較処理部1334は、監視対象プロセスによるCPU110の使用時間の計測を開始する(S1401)。次いで、統計情報比較処理部1334は、当該プロセスがCPU110を使用しているか判断し(S1402)、使用していると判断した場合(S1402、Yes)、監視対象プロセスについて記録されている状態遷移の遷移時間802(例えば、プロセス管理テーブル700のプロセスAが監視対象である場合、図8の統計情報管理テーブル800で「状態遷移1」について記録されている遷移時間802)とCPU110の使用時間計測値(プロセッサ使用時間計測値)との比較を実行する(S1403)。
【0068】
統計情報比較処理部1334は、S1403での比較処理において、CPU使用時間の計測値が、遷移時間802についてあらかじめ規定されている閾値を越えているか判断する(S1404)。この遷移時間802に関する閾値は、管理者等がパラメータとして入力装置150を通じて指定して統計情報比較処理部1334内に保持させることができる。指定する閾値の具体例としては、状態遷移の遷移時間802の2倍あるいは3倍の値を指定することが考えられる。
【0069】
CPU使用時間計測値が指定した閾値を超えていないと判断した場合(S1404、No)、統計情報比較処理部1334は、監視対象のプロセスの遷移時間は正常であると判断して、CPU110の使用中は引き続きS1402〜S1404の処理を反復実行する。一方、CPU使用時間計測値が指定した閾値を超えていると判断した場合(S1404、Yes)、統計情報比較処理部1334は、監視対象のプロセスにおいて遷移時間が異常に長い障害が発生していると判断して、障害通知部1335からOS131、出力装置160を通じで障害発生を通知する。なお、遷移時間が異常に長い障害とは、例えば無限ループなど監視対象プロセスがCPU110を通常よりも長い時間にわたって占有している障害状況である。
【0070】
S1402で、統計情報比較処理部1334が、監視対象プロセスがCPU110を使用していないと判断した場合(S1402、No)、統計情報比較処理部1334は、CPU110の使用時間計測を中断し(S1406)、監視対象プロセスがCPU110を使用していない時間(プロセッサ不使用時間)の計測を開始する(S1407)。
【0071】
次いで、統計情報比較処理部1334は、監視対象プロセスが再度CPU110を使用しているか判断する(S1408)。S1408での判断処理は、CPU110の停止時間が異常に長い障害が生じているか否かを判別するために実行される。CPU110が再度使用されていると判断した場合(S1408、Yes)、統計情報比較処理部1334は、さらに、CPU110の停止時間が許容される閾値を越えているか判断する(S1409)。この停止時間として許容される閾値(以下「停止許容閾値」)は、管理者等が入力装置150を通じて入力することにより、パラメータとして統計情報比較処理部1334内に保持させることができる。停止許容閾値には、統計情報管理テーブル800の状態待機時間803に格納されている数値の2倍ないし3倍の値など、任意の数値を指定することができる。
【0072】
S1409で、CPU不使用時間の計測値(プロセッサ不使用時間計測値)が停止許容閾値を超えていると判断した場合(S1409、Yes)、統計情報比較処理部1334は、待機時間が異常に長い障害が発生していると判断して、障害通知部109からOS131、出力装置160を通じて障害発生を通知する(S1410)。
【0073】
S1409で、CPU不使用時間の計測値が停止許容閾値を超えていないと判断した場合(S1409、No)、統計情報比較処理部1334は、S1408へ処理を戻し、再度CPU110が使用されているか判断する。一方、S1409でCPU不使用時間が停止許容閾値を越えていないと判断し、さらにS1408で再度CPU110が使用されていると判断した場合(S1408、No)、統計情報比較処理部1334は、CPU110の不使用時間が状態と判断することができるか確認するため、図14BのS1411へ処理を移行させる。
【0074】
S1411では、統計情報比較処理部1334は、CPU不使用時間が所定の閾値を超えて状態と認定することができるか判断している。閾値を超えていないと判断した場合(S1411、No)、統計情報比較処理部1334は、CPU110の使用時間の計測を再開する(S1417)。
【0075】
一方、閾値を超えていると判断した場合(S1411、Yes)、統計情報比較処理部1334は、CPU使用時間を、監視対象プロセスの統計情報管理テーブル800に記録されている遷移時間802と比較し(S1412)、両者の比較結果が所定の閾値を下回っているか判断する(S1413)。この閾値は、例えばパラメータとして統計情報比較処理部1334に設定しておくことができる。閾値の例としては、CPU使用時間が遷移時間802で計測された値の1/2倍ないし1/3の値を指定することができる。これにより、状態遷移に要する時間が不当に短くないか判断している。閾値を下回っていると判断した場合(S1413、Yes)、統計情報比較処理部1334は、遷移時間802が不当に短い通常とは異なる遷移が発生する障害であると判断し、障害通知部108、OS131及び出力装置160を通じて障害発生を通知する(S1414)。通常とは異なる遷移の例としては、ロック待ちなどの、通常は状態としては認識されないような短時間で完了する処理が何らかの理由で遅延し、新たに状態として認識される場合等が想定される。
【0076】
一方、S1413で閾値を下回っていないと判断された場合(S1413、No)、統計情報比較処理部1334は、監視対象プロセスの次の状態遷移について、遷移時間802と状態待機時間803とを記録するために、監視項目801を次の状態遷移へと移行させる(S1415)。そして、監視対象であるプロセスが終了したか判断し(S1416)、終了していると判断した場合(S1416、Yes)、監視対象プロセスについての統計情報比較処理を終了する。
【0077】
終了していないと判断した場合(S1416、No)、統計情報比較処理部1334は、CPU110の使用時間を再度計測し(S1418)、処理をS1402に移行させて、監視対象プロセスが終了するまで障害が発生していないか調べる統計情報比較処理を続行する。
【0078】
以上説明したように、本実施形態に係るコンピュータ1によれば、CPU110で実行される個々のプロセスについて、その状態遷移に関する時間計測値を統計的に求めた基準値と逐次比較処理することにより、ハングアップ、OS131によるエラー検出といったイベントに至らない早期の段階で、コンピュータ1に生じた障害を確実に検出することができるので、コンピュータ1のダウンタイムを可及的に短縮し、可用性を向上させる効果を奏する。
【0079】
なお、本明細書では、本発明についてその実施形態に即して添付図面を参照しつつ説明したが、本発明はこのような実施形態によって限定されるものではない。本発明は、特許請求の範囲に記載されている発明の範囲内で、前記の実施形態にかかわらず、種々の形態で実施することができ、当該特許請求の範囲に記載されている発明の均等物も本発明に含まれるものである。
【符号の説明】
【0080】
1 コンピュータ 110 CPU 120 制御部
130 主記憶装置 131 OS 1311 プロセススケジューラ
132 プログラム 132A、132B プロセス
133 障害検知部 1331 状態遷移監視部
1332 統計情報採取処理部 1333 統計情報記憶部
1334 統計情報比較処理部 1335 障害通知部
140 補助記憶装置 150 入力装置 160 出力装置
170 通信制御部 180 内部バス
700 プロセス管理テーブル 701 監視対象プロセス
702 統計情報採取完了フラグ 703 統計情報テーブル
800 統計情報管理テーブル 801 監視項目
802 遷移時間 803 状態待機時間 900 仮記憶テーブル
901 監視項目 902 遷移時間 903 状態待機時間

【特許請求の範囲】
【請求項1】
プロセッサとメモリとを備え、前記プロセッサによって、前記メモリに記憶されている少なくとも一のソフトウェアプログラムを構成している複数のプロセスを処理して前記ソフトウェアプログラムを実行するコンピュータであって、
各前記プロセスについて、当該プロセスが前記プロセッサによって処理開始されてから処理終了するまでにわたって、前記プロセッサが前記プロセスを処理している時間であるプロセッサ使用時間と、前記プロセッサが前記プロセスの処理を停止している時間であるプロセッサ不使用時間とを順次複数回計測して取得し、所定の統計処理に従って、各前記プロセッサ使用時間の統計的基準値であるプロセッサ使用時間基準値と、各前記プロセッサ不使用時間の統計的基準値であるプロセッサ不使用時間基準値とを、各前記プロセスについて算出して記憶するプロセッサ処理基準値取得部と、
前記プロセッサにより前記ソフトウェアプログラムを構成する前記プロセスのいずれかが処理されているときに、当該プロセスについて、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測して、逐次当該プロセスについて記憶されている前記プロセッサ使用時間基準値及び前記プロセッサ不使用時間基準値と比較し、当該比較結果が所定の判定基準を満たしていないと判定した場合に、当該プロセス処理中に障害が発生したと判定する基準値比較処理部と、を備えている、
ことを特徴とするコンピュータ。
【請求項2】
請求項1に記載のコンピュータであって、各前記プロセスに当該プロセッサを割り当てる処理を行うプロセス割当て部をさらに有し、前記プロセッサ処理基準値取得部及び基準値比較処理部は、前記プロセス割当て部の動作を監視することにより、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測する、ことを特徴とするコンピュータ。
【請求項3】
請求項1に記載のコンピュータであって、前記基準値比較処理部が、前記プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータ。
【請求項4】
請求項1に記載のコンピュータであって、前記基準値比較処理部が、前記プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較し、前記プロセッサ不使用時間計測値が前記所定の閾値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータ。
【請求項5】
請求項1に記載のコンピュータであって、前記基準値比較処理部が、前記プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較して当該不使用時間閾値を越えていないと判定し、さらに、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていないと判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータ。
【請求項6】
プロセッサとメモリとを備え、前記プロセッサによって、前記メモリに記憶されている少なくとも一のソフトウェアプログラムを構成している複数のプロセスを処理して前記ソフトウェアプログラムを実行するコンピュータの障害検知方法であって、前記プロセッサが、
各前記プロセスについて、当該プロセスが前記プロセッサによって処理開始されてから処理終了するまでにわたって、前記プロセッサが前記プロセスを処理している時間であるプロセッサ使用時間と、前記プロセッサが前記プロセスの処理を停止している時間であるプロセッサ不使用時間とを順次複数回計測して取得し、所定の統計処理に従って、各前記プロセッサ使用時間の統計的基準値であるプロセッサ使用時間基準値と、各前記プロセッサ不使用時間の統計的基準値であるプロセッサ不使用時間基準値とを、各前記プロセスについて算出して記憶し、
前記プロセッサにより前記ソフトウェアプログラムを構成する前記プロセスのいずれかが処理されているときに、当該プロセスについて、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測して、逐次当該プロセスについて記憶されている前記プロセッサ使用時間基準値及び前記プロセッサ使用時間基準値と比較し、当該比較結果が所定の判定基準を満たしていないと判定した場合に、当該プロセス処理中に障害が発生したと判定する、
ことを特徴とするコンピュータの障害検知方法。
【請求項7】
請求項6に記載のコンピュータの障害検知方法であって、前記プロセッサが、各前記プロセスへの当該プロセッサの割り当て状況を監視することにより、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測する、ことを特徴とするコンピュータの障害検知方法。
【請求項8】
請求項6に記載のコンピュータの障害検知方法であって、前記プロセッサが、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータの障害検知方法。
【請求項9】
請求項6に記載のコンピュータの障害検知方法であって、前記プロセッサが、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較し、前記プロセッサ不使用時間計測値が前記所定の閾値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータの障害検知方法。
【請求項10】
請求項6に記載のコンピュータの障害検知方法であって、前記プロセッサが、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較して当該不使用時間閾値を越えていないと判定し、さらに、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていないと判定した場合、当該プロセス処理中に障害が発生したと判定する、ことを特徴とするコンピュータの障害検知方法。
【請求項11】
プロセッサとメモリとを備え、前記プロセッサによって、前記メモリに記憶されている少なくとも一のソフトウェアプログラムを構成している複数のプロセスを処理して前記ソフトウェアプログラムを実行するコンピュータにおいて、前記プロセッサに、
各前記プロセスについて、当該プロセスが前記プロセッサによって処理開始されてから処理終了するまでにわたって、前記プロセッサが前記プロセスを処理している時間であるプロセッサ使用時間と、前記プロセッサが前記プロセスの処理を停止している時間であるプロセッサ不使用時間とを順次複数回計測して取得し、所定の統計処理に従って、各前記プロセッサ使用時間の統計的基準値であるプロセッサ使用時間基準値と、各前記プロセッサ不使用時間の統計的基準値であるプロセッサ不使用時間基準値とを、各前記プロセスについて算出して記憶するステップと、
前記プロセッサにより前記ソフトウェアプログラムを構成する前記プロセスのいずれかが処理されているときに、当該プロセスについて、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測して、逐次当該プロセスについて記憶されている前記プロセッサ使用時間基準値及び前記プロセッサ使用時間基準値と比較し、当該比較結果が所定の判定基準を満たしていないと判定した場合に、当該プロセス処理中に障害が発生したと判定するステップと、を実行させる、
ことを特徴とするプログラム。
【請求項12】
請求項11に記載のプログラムであって、前記プロセッサに、各前記プロセスへの当該プロセッサの割り当て状況を監視することにより、前記プロセッサ使用時間及び前記プロセッサ不使用時間を計測するステップを実行させる、ことを特徴とするプログラム。
【請求項13】
請求項11に記載のプログラムであって、前記プロセッサに、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定するステップを実行させる、ことを特徴とするプログラム。
【請求項14】
請求項11に記載のプログラムであって、前記プロセッサに、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較し、前記プロセッサ不使用時間計測値が前記所定の閾値を越えていると判定した場合、当該プロセス処理中に障害が発生したと判定するステップを実行させる、ことを特徴とするプログラム。
【請求項15】
請求項11に記載のプログラムであって、前記プロセッサに、当該プロセッサによるいずれかの前記プロセスの処理中に、前記プロセッサ不使用時間計測値と所定の不使用時間閾値とを比較して当該不使用時間閾値を越えていないと判定し、さらに、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値とを比較し、前記プロセッサ使用時間計測値と、対応する前記プロセッサ使用時間基準値との差が所定値を越えていないと判定した場合、当該プロセス処理中に障害が発生したと判定するステップを事項させる、ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14A】
image rotate

【図14B】
image rotate


【公開番号】特開2011−175570(P2011−175570A)
【公開日】平成23年9月8日(2011.9.8)
【国際特許分類】
【出願番号】特願2010−40591(P2010−40591)
【出願日】平成22年2月25日(2010.2.25)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】