JP2006092055A - 計算機システム - Google Patents

計算機システム Download PDF

Info

Publication number
JP2006092055A
JP2006092055A JP2004274339A JP2004274339A JP2006092055A JP 2006092055 A JP2006092055 A JP 2006092055A JP 2004274339 A JP2004274339 A JP 2004274339A JP 2004274339 A JP2004274339 A JP 2004274339A JP 2006092055 A JP2006092055 A JP 2006092055A
Authority
JP
Japan
Prior art keywords
computer
kernel
failure
parameter
computer system
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
Application number
JP2004274339A
Other languages
English (en)
Inventor
Katsuhisa Ogasawara
克久 小笠原
Yumiko Sugita
由美子 杉田
Satoshi Oshima
訓 大島
Masatada Takasugi
昌督 高杉
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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2004274339A priority Critical patent/JP2006092055A/ja
Publication of JP2006092055A publication Critical patent/JP2006092055A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)

Abstract

【課題】
動作中OSの障害を検知し、障害原因の解決策となるOS制御パラメータを算出して再起動OSが、再び同じ原因によって障害に陥る危険性を回避する。
【解決手段】
システム運用中OSが、実行継続不可能になった場合に同じOSもしくは同種のOSを再起動する手段を持つシステムにおいて、自分自身の負荷状態や障害解析を行う手段、かつ障害監視手段により、運用継続不可の障害を検出する手段、その状況を解決、もしくは回避するカーネル制御パラメータ項目と値を特定する手段とを持ち、特定したパラメータが静的制御パラメータを含む場合は、特定したパラメータを指定して同じOS、もしくは同種のOSを再起動する。特定したパラメータが動的可能なパラメータである場合には、OSの再起動は行わずに稼動中OSに適用する。また、管理者の指示によるOSの再起動の場合に、それまでに特定した最適化パラメータを適用して再起動する。
【選択図】 図1

Description

本発明は計算機システムに関し、特に稼動中のオペレーティングシステムの障害を回復・回避する方法に関するものである。
一般の計算機システムでは、オペレーティングシステム(以下「OS」とも言う)と呼ばれるプログラムの実行により、計算機システムが有するハードウェア(以下「計算機資源」とも言う)、具体的には、処理装置(「プロセッサ」とも言う)、主記憶装置、二次記憶装置、入出力装置、ファイル装置、通信装置などの管理およびこれら計算機資源の使用スケジュールの制御が行われる。又OSは、ユーザが計算機の資源を容易に利用するためのソフトウエアインタフェースを提供する。一般的なアプリケーションプログラム(例えば表計算ソフトやワープロソフト等)は、OSの制御を介して計算機の有するハードウェアを使用する。
このOSは、ハードウェアの故障やOS自身を含めたプログラムの不具合によって発生する障害により、その実行が停止(以下「ハングアップ」とも言う)したり、誤動作する場合がある。
しかしOSは上述したように、計算機システムが有する計算機資源の管理を一手に引き受けているため、特に信頼性や可用性が高く求められる計算機システム(例えば基幹系で使用される計算機システム)では、OSのハングアップや誤動作の原因となる障害をすばやく解決、もしくは回避することが求められている。
この要求に対応するため、計算機システムにおける障害によりOSの実行継続が困難になった場合、計算機システムはメモリダンプを取得する。ここでメモリダンプとは、計算機システムにおいて障害が発生した時点の、計算機システムが有する主記憶装置(以下「メモリ」とも言う)に格納された情報を障害情報として二次記憶装置に退避したものを指す。システム管理者などは、そのメモリダンプの内容を解析することにより、障害原因の特定と修正を行い、計算機システムを再起動する。
メモリダンプを利用した障害解析方法の従来技術として、特許文献1に開示された技術がある。この技術は、計算機システムを再起動する際に、前回のシステム運用においてシステムクラッシュ(ドライバやOS自身のバグによってこれ以上のシステム運用継続が困難と判断した時に、OSが二次記憶装置にメモリダンプ出力を行った後に機能停止する状況)が発生していたかどうかをメモリダンプの存在有無から検知する。メモリダンプが存在しシステムクラッシュが発生していた場合にはOSを自己診断モード(デバック機能を有効にしたモード)で再起動し、ドライバなどソフトウェアコンポーネントのメモリ使用状況などをトレースしながら運用する。トレースしている情報はメモリ使用状況テーブルに記録され、システムアドミニストレータや他のデバッガが障害原因となったドライバの絞込み、特定を行うために利用する。
一方、上述したメモリダンプとは異なるが、計算機システムの障害に伴う再起動方式について特許文献2に開示されている。特許文献2では、計算機システムを再起動する際に、再起動の対象となる計算機システムが平均故障間隔時間程度の運用が可能かどうかに基づいて計算機を再起動するか否かを判断する。
更に、業務処理用のアプリケーションが同一原因の障害によって再起動を繰り返すことを回避する技術が特許文献3に開示されている。本文献では、障害情報、たとえば障害時間間隔、データ種別、障害種別、障害頻度からアプリケーションが再起動ループに陥るかどうかを判断して、再起動の是非を判定する。
米国特許6728907号公報 特開平6−266573号公報 特開平5−233341号公報
上述した従来技術では、メモリダンプを利用して障害解析を行ったり、障害の再発が予測される場合に計算機システム等を再起動させないという処理を行うことで、障害の特定又は回避を行っている。
しかしながら、特許文献1に開示された技術では、メモリダンプの内容あるいは再起動後のトレースにより障害の原因が特定されるが、その内容解析に基づく障害の特定には時間がかかり、計算機システムの早期復旧という要求には十分に応えられていない。
一方、特許文献2及び3に開示されている技術では、そもそも障害が再発しそうな計算機システムは再起動しないという発想であり、障害の根本的な解決にならず、継続運用が要求される計算機システムにおける早期の障害解決という要求には応えられない。
すなわち、上述した従来技術では、計算機システムの障害原因に対する障害対策を実施しないまま同じまたは同種のOSを再起動すると、再起動したOSは再び同じ原因によって障害に陥る危険性が高く、運用継続を保障できないという問題が十分に解決できていない。
上記課題を解決するために、本発明は以下の構成とする。すなわち、計算機において、自身で実行されるオペレーティングシステム(以下「OS」)の状態を監視し、その監視結果に基づいて、OSの設定パラメータを再計算し、再計算された設定パラメータを二次記憶装置に格納し、OSを再起動する際には、二次記憶装置に格納された設定パラメータに基づいてOSを再起動する構成である。
より具体的には、本発明は、システム運用中OSが、実行継続不可能になった場合に同じOSもしくは同種のOSを再起動する手段を持つシステムにおいて、自分自身の負荷状態や障害解析を行う手段を持ち、かつ障害監視手段により、運用継続不可の障害を検出する手段と、その状況を解決、もしくは回避するカーネル制御パラメータ項目と値を特定する手段とを持ち、特定したパラメータが静的制御パラメータを含む場合は、特定したパラメータを指定して同じOS、もしくは同種のOSを再起動するという構成である。また特定したパラメータが動的可能なパラメータである場合には、OSの再起動は行わずに稼動中OSに適用する。本発明の他の構成等については、明細書の記載から明らかにされる。
本発明により、障害等が発生した計算機システムにおいて、同じ障害状況を再発することがないようにして計算機システムを早急に再起動できる。さらに、計算機システムを継続的に運用できるので、計算機システムの信頼性を向上させることができる。
以下に、本発明の実施の形態を説明する。
図1は、第1の実施形態における計算機システムのハードウェア構成例を示す図である。
計算機システムは、計算機1000、キーボード1300、マウス1400、ディスプレイ1100及び二次記憶装置1200を有する。キーボード1300、マウス1400、ディスプレイ1100、及び二次記憶装置1200は各々計算機1000に接続されている。
計算機1000は、プロセッサ(以下「CPU」)1010、主記憶装置(メモリ)1020、ビデオアダプタ1030、ネットワークインタフェース1040、二次記憶装置インタフェース1050、シリアルポートインタフェース1060、およびこれらの間を接続するシステムバス1070を有する。尚、各構成要素の数は任意であり、単数でも複数でも構わない。計算機システム1000は、シリアルポートインタフェース1060を介してキーボード1300及びマウス1400と、ビデオアダプタ1030を介してディスプレイ1100と、二次記憶装置インタフェース1050を介して二次記憶装置1200と接続されている。
又、計算機1000は、ネットワークインタフェース1040を介してネットワーク1500に接続され、遠隔地に存在する計算機1600と通信を行う。
図2は、計算機1000に接続される二次記憶装置1200に格納されているプログラムや情報の例を示す図である。尚、これらのプログラム等は、二次記憶装置の障害に対応するために複数台の二次記憶装置1200に格納されてもよい。又、以下に説明するプログラムは、CPU1010で実行されるプログラム群であるが、説明を簡便にするために、プログラムを主語として説明する場合がある。
二次記憶装置1200には、OS2000と、OSをメモリ1020上にロードするためにCPU1010が実行するブートローダ2500が格納されている。
OS2000は、計算機1000を制御するOSの基本機能を実行するためのプログラムであるOSカーネル2010、必要に応じてメモリ1020にロードされ、OSに組み込まれるカーネルモジュール2020、カーネル内のイベント情報取得および稼動状況を取得するために実行されるプログラムであるカーネルモニタ2030、計算機1000が安定稼動しているかどうか判定するプログラムである計算機安定性評価器2040、障害情報や負荷情報に基づいて変更(以下「チューニング」とも言う)すべきカーネル制御パラメータを算出するために実行されるプログラムであるカーネル制御パラメータ算出制御器2050、OS起動時に静的にカーネルに設定される設定情報(以下「パラメータ」とも言う)が記録される静的カーネル制御パラメータテーブル2060、OS稼動中であっても動的に変更可能なパラメータが記録される動的カーネル制御パラメータテーブル2070、動的カーネル制御パラメータテーブル2070に登録されたパラメータをカーネルに反映させる際に実行されるプログラムであるカーネルパラメータモディファイア2080、静的/動的カーネル制御パラメータテーブル2060、2070を二次記憶装置1200に格納するプログラムであるカーネルパラメータレコーダ2090、OS再起動時に静的/動的カーネル制御パラメータテーブル2060、2070をメモリ1020にロードするプログラムであるカーネルパラメータローダ2100、OSがパニックした時に呼び出されて実行されるプログラムであるパニックノーティファイア2110、OSを再起動する際に呼び出されて実行されるプログラムであるOS切替ドライバ2120を有している。
尚、「安定稼動」とは、計算機システムの稼動を継続できる状態、逆説的に言えば、これ以上のシステム稼動が困難であり、再起動が余儀なくされる状態ではない状態を指す。一方、安定稼動で無い場合についてのより具体的な定義は、図9で説明する。
「カーネル制御パラメータ」とは、具体的にはカーネルの動作や制御を変更するためのパラメータであり、本実施形態では、図13や図14に示すパラメータである。
「静的カーネル制御パラメータ」とは、OS稼働中、カーネルに対するパラメータ変更が不可能であり、OS起動時の一度だけ指定可能なパラメータを指す。
又「動的カーネル制御パラメータ」とは、OS稼働中いつでも何回でもカーネルに対するパラメータ変更が可能なパラメータを指す。
更に「パニック」とは、OSが、ドライバやOS自身のバグによってこれ以上のシステム運用継続が困難と判断することを指す。尚、パニック時にOSによって行なわれる処理は、コンソールへのCPUレジスタ情報表示、フック関数の実行、CPU停止処理などがある。
図3は、計算機1000が起動された後のメモリ1020に格納される各種プログラムの例を示す図である。ここで、メモリ1020は、OSが使用する記憶領域(以下「OSカーネル領域」とも言う)3000と、その他、アプリケーション等に使用される記憶領域(以下「アプリケーション領域」とも言う)3010に区分される。
以下、本実施形態における計算機の動作概要を示す。
メモリ1020に各種プログラムがロードされた後、計算機1000は、運用中OSのカーネル内のイベント情報および稼働状況を随時取得する。
そして任意のタイミングで、計算機1000は、これ以上のシステム稼動が困難でありOSの再起動が必要かどうか判定する。再起動が不要な場合、計算機1000は、その時点の自身の負荷状況および障害状況を算出する。その後計算機は、算出された負荷状況および障害状況に応じて新たな静的/動的カーネル制御パラメータを算出し、動的カーネル制御パラメータについては即座にOSカーネルに反映させる。又、計算機1000は、算出した新たな静的/動的カーネル制御パラメータを二次記憶装置に保存する。
一方、これ以上のシステム稼動が困難でありOSの再起動が必要と判定された場合、計算機1000はOSを再起動する。再起動されるOSは、再起動時に、二次記憶装置に格納された静的/動的カーネル制御パラメータを読み出してカーネルに反映させる。
図4は、計算機1000を起動する際に、図3に示す構成をメモリ1020に作成するための手順例を示す図である。
計算機1000の起動が開始されると(4000)、ブートローダ2500の実行により、OSカーネル2010がメモリ1020上にロードされる。ロードされたOSカーネル2010は、カーネルの初期化処理および必要なカーネルモジュール2020のロードを行う(4001)。その後、OSカーネルによって最初に起動されるプロセス(以下「初期化プロセス」)は、カーネルモニタ2030をカーネルモジュールとしてOSカーネル領域3000にロードする(4002)。
次に初期化プロセスは、OSがパニックした時にパニックノーティファイア2110がコールされるようにOSカーネル領域3000のフックへパニックノーティファイア2110を登録する(4003)。フックとは、OSの処理命令列の変更を要求する他のモジュールに対するインタフェースである。フックへの登録は例えば次の方法がある。OSがパニック関数を呼んだ事を契機として別の関数を実行させる処理(以下「コールバック」)を計算機1000が実行できる場合、そのコールバックの関数としてパニックノーティファイア2110をOSカーネル領域3000のフックに登録する。もしくは、OSがパニックした時、OS内のいくつかの決まった関数がコールされることを利用して、それらの関数の命令列をパニックノーティファイア2110と置き換えてもよい。
続いて初期化プロセスは、OS切替ドライバ2120をカーネルモジュールとしてOSカーネル領域3000にロードする(4004)。
更に初期化プロセスは、計算機安定性評価器2040、カーネル制御パラメータ算出制御器2050、カーネルパラメータモディフィヤ2080、カーネルパラメータレコーダ2090、カーネルパラメータローダ2100をアプリケーション領域3010にロードする(4005)。
その後カーネルパラメータローダ2100は、二次記憶装置1200に格納されている静的/動的カーネル制御パラメータテーブル2060、2070をメモリ1020にロードする(4006)。
図5は、本実施形態におけるOS実行時の動作フローを説明する図である。
計算機1000の稼動中、カーネルモニタ2030は、OSにおけるサービス処理中にOSカーネル内のイベント情報をトレース(カーネル内で発生したイベント情報をイベントが発生した順に時系列に記録する動作)により取得し、OS稼動状況をサンプリング(ある時間におけるOS稼働状況を取得する動作。すなわち、ある時間という一点の状態を観測・記録する動作)により取得する(5001)。
一方、計算機安定性評価器2040は、カーネルモニタ2030から得られた情報を基に、マシン負荷状況および障害状況を算出(具体的には図9で詳細に説明する情報)し、計算機1000が安定稼動しているかを判断する(5002)。安定稼動していれば、計算機安定性評価器2040は、カーネル制御パラメータ算出制御器2050へ実行を移す(5003)。計算機1000の稼動が不安定になり、計算機1000のシステム稼動の継続がこれ以降困難であると判断された場合、計算機安定性評価器2040はOS切替ドライバ2120へ実行を移す。そしてOS切替ドライバ2120はOSの再起動を行う(5008)。
一方計算機1000が安定稼動している場合(より正確には「計算機1000が再起動に到るほど不安定でなかった場合」)、カーネル制御パラメータ算出制御器2050は、計算機安定性評価器2040から得られたマシン負荷状況および障害情報からチューニングすべきカーネル制御パラメータおよびその最適値を決定する(5003)。尚、ここで「最適値」とは計算機の高負荷および障害状態を回避するように設定されるカーネル制御パラメータの値を指す。つまり、計算機1000は、再起動に到るほど自身が不安定でない場合でも、後に再起動に到る原因となるような状態の有無をマシン負荷状況及び障害情報から検出し、その状態を回避するように、パラメータを変更する。
カーネル制御パラメータ算出制御器2050は、算出されたカーネル制御パラメータをアプリケーション領域3010に確保された静的/動的カーネル制御パラメータテーブル2060、2070へ記録する(5004)。
その後、カーネルパラメータモディファイア2080は、動的カーネル制御パラメータ2070に関して、カーネルが備える動的可変パラメータ変更インタフェース2012を介してOS稼動中のカーネルへ算出した値を反映する。具体的な反映の仕方は、後述する(5005)。
一方、カーネルパラメータレコーダ2090は、二次記憶装置1200に格納された静的/動的カーネル制御パラメータテーブル2060、2070の内容を更新する(5006)。尚、格納先の二次記憶装置1200が複数ある場合、そのうちのいずれか1つ又は複数に格納する。
計算機1000は、以上説明した手順を、OSの再起動が実行されない限り、任意の周期(例えば1[s]、10[s]ごとなど)で繰り返し実行する(5007)。
上述したように、通常の障害は計算機安定性評価器2040で検出され、その結果に基づいてOSの再起動(又はパラメータの変更)が実行される。しかし、計算機安定性評価器2040は計算機1000の全ての障害を検出できる訳ではない。計算機安定性評価器2040で検出できない障害が発生した場合、計算機1000は、その障害に対応するための処理(パニック処理)を行う。
図6は、計算機1000に、計算機安定性評価器2040で検出できない障害が発生した時に、計算機1000が行うパニック処理の動作手順例を示すフロー図である。
計算機安定性評価器2040で検出できない障害が発生すると、OS(OSカーネル2010およびカーネルモジュール2020)はパニック処理2011を呼び出す。そしてパニック処理2011が実行される際に、図4の初期化時にコールバックとして登録されたパニックノーティファイア2110が呼び出される(6001)。
パニックノーティファイア2110は、本パニック処理が開始された時点のプロセッサが有するレジスタの情報から、障害の原因となったカーネルドライバモジュールを特定(具体的には、レジスタのスタック情報に障害が発生したドライバモジュールのアドレスが存在し、そのアドレスからドライバを特定)する(6002)。
次にパニックノーティファイア2110は、二次記憶装置1200に格納された静的カーネルパラメータテーブル2060のカーネルモジュールベクタ13013(図13参照)および動的カーネルパラメータテーブル2070のカーネルモジュールベクタ14013(図14参照)における特定されたカーネルモジュールの有効フラグを0とする。尚、パニック処理時には、OSの再起動が行われるので、メモリ1020の情報は全て無効となる。したがって、パニックノーティファイア2110は、二次記憶装置1200の静的/動的ーネルパラメータ2060、2070のフラグしか更新せず、メモリ1020に格納された静的/動的カーネルパラメータ2060、2070のフラグは更新しない(6003)。
その後、パニックノーティファイア2009は、OS切替ドライバ2010へ実行を移し、OSを再起動する(6004)。そして、計算機1000は、再起動後のOSで処理を行う(6005)。
次に、本実施形態の各プログラムの実行による計算機1000の動作例について説明する。
上述したように、計算機1000は、カーネルモニタ2030を実行して、OSカーネルで実行されるイベントの記録を行う。そのために、計算機1000は記録用のバッファをメモリ1020に確保する。図7は、カーネルモニタ2030によって取得されるカーネル内イベント記録情報を記録するバッファ7000の例を示す図である。カーネルモニタ2030は、OSカーネルで実行される処理について、時系列にバッファ7000に登録する。
イベント情報バッファ7000は、取得したイベントに関する情報を登録するためのレコードを複数有する。一つのレコードは一つのイベントに対応し、イベントの発生した時刻を示すエントリ7100、取得したイベントの種類を示すエントリ7200、取得したイベントに関する補助情報を示すエントリ7300を有する。
エントリ7200に登録されるイベント情報としては、例えば、コンテキストスイッチ、プロセスウェイクアップ、タイマ割り込み、外部デバイス割り込み待ち、外部デバイス割り込み、ロック取得、ロック解放、ページ解放ルーチンの開始と終了及びスワップスレッドの起動等がある。尚、イベント情報バッファ7000には、必要に応じて、システムコールやメモリ取得などのイベント情報も記録される。
尚、CPU1010が複数存在する場合、イベント記録情報バッファ7000は、イベントが発生するCPU1010ごとに作成される。
又、イベント記録情報バッファ7000は、カーネルモニタ2030が確保するバッファであり、本実施形態では、確保したバッファが一杯になったらバッファ先頭に戻り(サイクリックバッファ)、記録を続ける仕様とする。
又、計算機1000は、上述したように、自身(特にOS)の稼動状況(CPUやメモリといったハードウェアの使用状況等含む)を、カーネルモニタ2030を実行して記録する。このため、計算機1000は、OS稼動状態記録情報を記録するバッファ8000をメモリ1020に確保する。
図8は、OS稼動状態記録情報を記録するバッファ8000の内容例を示す図である。カーネルモニタ2030は、OS稼動状態もカーネル内イベント記録情報7000と同様に時系列でOS稼動状態記録情報バッファ8000へ記録する。尚、同じ稼動状態の情報、例えばCPU使用率等について複数回情報を取得したら、別々に記録し、バッファの空き容量が無くなったら、古い情報から順に消去され、空き領域として使用される。
OS稼動状態記録情報を記録するバッファ8000は、複数のエントリを有する。一つのエントリはある時刻にサンプリングされた一つの稼動状態の情報に対応する。したがって、本図の場合、ある時刻にサンプリングされた稼動状態の情報は、エントリ8100に登録され、その次の時刻にサンプリングされた稼動状態の情報は、エントリ8200に登録される。
エントリ8100等に記録されるカーネル稼動状態情報としては、例えば、取得時刻、各CPUのCPU利用率、物理メモリ使用量、スワップメモリ使用量、フリーページ数、ダーティページ数、inode使用数、dentry使用数、ファイルハンドル使用数、ネットワーク通信量が考えられる。
尚、OS稼動状態記録情報バッファ8000もカーネル内イベント記録情報バッファ7000と同様に、カーネルモニタ2030が確保するバッファであり、本実施形態では、確保したバッファが一杯になったらバッファ先頭に戻り記録を続ける仕様とする。
上述したように、本実施形態では、計算機安定性評価器2040を実行することで、計算機1000は自身の稼動状況を確認し、障害等の検出も行う。そして、その稼動状況の確認結果に基づいて、計算機1000は、カーネル制御パラメータ算出制御器2050を実行し、計算機1000自身のカーネルの設定情報すなわちパラメータの変更の要否とその値を決定する。本実施形態における計算機安定性評価器2040による負荷状態や障害の検知、およびカーネル制御パラメータ算出制御器2050によるカーネル制御パラメータとその最適値の決定処理の例として、ハードウェア障害とプロセスの沈み込みを取り上げて後述する。
上述した計算機安定性評価器2040は、所定の条件に基づいて、計算機1000の稼動状況が安定しているか否かを判断する。そのために、計算機1000は、所定の条件に関する情報を登録するためのテーブルを有する。
図9は、上述した所定の情報を登録するための安定性評価テーブル9000の構成例を示す図である。
安定性評価テーブル9000は、所定の条件の数分の複数のレコードを有する。個々のレコードは、計算機安定性評価器2040がこれ以上のシステム稼動を困難と判断するOS切替条件を示すエントリ9100及び安定性評価の実施時にそのOS切替条件エントリ9100による評価を実施するかを示す有効フラグエントリ9200を有する。
OS切替条件エントリ9100の内容および有効フラグエントリ90200の設定の内容は、あらかじめ設定されているが、管理者が動的に設定内容を追加変更することもできる。具体的には、管理者は、計算機が有するに入力装置を用いて、メモリに登録されたOS切替条件エントリの内容を適宜変更する。
OS切替条件を示すエントリ9100に登録される条件としては、例えば「CPU利用率過大状態の継続している時間が指定時間以上」かつ「起動CPU数ベクタ13015においてOS再起動時の起動CPU数が現在の起動CPU数と同じでない」、「プロセスによる物理メモリ使用量が大きく」かつ「スワップメモリ量が大きく」かつ「起動メモリ量ベクタ13016においてOS再起動時の起動メモリ量が現在の起動メモリ量と同じでない」、計算機1000の各デバイス障害(←ここでは「デバイス」とは障害監視可能な外部デバイスを指す)、各カーネルモジュール障害、プロセススケジューラの切替時刻の情報、「カーネル処理のスローダウンが指定時間以上」かつ「カーネル処理のスローダウンの発生頻度が指定回数を超えた場合」等がある。
図12は、安定性評価の一例である、ハードウェア障害に関する計算機安定性評価器2040の処理フローを示す図である。
まず安定性評価器2040は、収集されたバッファ7000と8000の情報と安定性評価テーブル9000の有効フラグエントリ9200が有効であるOS切替条件エントリ9100に登録された内容とを比較して(12001)、一致するOS切替条件エントリ9100があるかどうか評価を実施する(12002)。
一致するOS切替条件エントリ9100があるならば、安定性評価器2040はOS切替ドライバ2120へ制御を移す(12003)。
一方、一致するOS切替条件エントリ9100がなければ、安定性評価器2040は、ハードウェア入出力完了割り込み情報テーブル10000をメモリ1020に作成する(12004)。このハードウェア入出力完了割り込み情報テーブル10000は、計算機に接続される外部デバイスごとに、割り込み待ち制限値、割り込み待ち状態フラグ、割り込み待ち状態時刻、再試行回数制限値と回数を管理するために用いられる。したがって、このテーブルは、ハードウェア障害の有無に関わらず全ての外部デバイスについて作成される。
図10は、ハードウェア入出力完了割り込み情報テーブル10000の構成例を示す図である。
ハードウェア入出力完了割り込み情報テーブル10000は、計算機1000に接続されるハードウェア(以下「外部デバイス」とも言う)毎に対応するレコードを有する。各レコードは、計算機1000に接続される各ハードウェアのデバイス名が登録されるエントリ10010、OSが各ハードウェアによる入出力完了割り込みを待つ際の許容最大待ち時間の情報が登録されるエントリ10020、OSが各外部デバイスに関して割り込み待ち状態であるかを示す情報が登録されるエントリ10030、OSが各ハードウェアに関して割り込み待ち状態となった時間を示す情報が登録されるエントリ10040、各ハードウェアからの入出力完了割り込みがない場合に命令を再試行する最大回数を示す情報が登録されるエントリ10050、及び実際に再試行した回数を示す情報が登録されるエントリ10060を有する。尚、割り込み待ち時間制限値エントリ10020および再試行回数制限値エントリ10050の値は、外部デバイスごとにあらかじめ設定されているが、管理者が動的に設定を追加変更することもできる。
ここで、安定性評価器2040は、上述した各エントリの情報を、カーネルイベント記録情報バッファ7000の外部デバイス割り込み待ち発生エントリ7104および外部デバイス割り込み発生エントリ7105に登録されるデバイス名とイベント発生時刻の情報を用いて登録する。割り込み待ち状態フラグエントリ10030は、外部デバイスからの割り込み待ちをしていた場合には1とし、外部デバイスからの割り込みが発生していた場合には0とする。割り込み待ち状態時刻エントリ10040には、外部デバイスの割り込み待ちをしていた場合にはその割り込み待ち発生7104のイベント発生時刻が登録される。
次に安定性評価器2040は、作成したテーブル10000のうちの一つのレコードを選択し、そのレコードの割り込み待ち状態フラグ10030を参照する(12006)。選択したレコードの割り込み待ち状態フラグが0ならば、安定性評価器2040は、選択されたレコードの割り込み待ち状態時刻エントリ10040及び再試行回数エントリ10060を0でクリアする(ステップ12008、12009)。
一方、選択したレコードの割り込み待ち状態フラグが1ならば、安定性評価器2040は、現在時刻と割り込み待ち状態時刻10040との差分を取得し、取得した差分と割り込み待ち時間制限値10020に登録された値と比較する(12010)。取得した差分値が割り込み待ち時間制限値を超過しているならば、安定性評価器2040は、選択したレコードの再試行回数制限値10050と再試行回数10060との値を比較する(12011)。
再試行回数10060が再試行回数制限値10050を超過しているならば、安定性評価器2040は、選択したレコードに対応する外部デバイスの障害と判定し、デバイス障害情報バッファ11000へ障害と判定された外部デバイスのデバイス名を追加する(12012、3)。
図11は、デバイス障害情報バッファ11000の構成例を示す図である。デバイス障害情報バッファ11000は、計算機安定性評価器2040において障害発生が検知されたデバイス名が登録されるエントリ10010を有する。外部デバイスの障害発生が検知されない時、デバイス障害情報バッファ11000は空である。
一方、再試行回数10060が再試行回数制限値10050を超過していないならば、安定性評価器2040は、選択したレコードに対応する外部デバイスを制御するデバイスドライバへ再試行命令を発行し、選択したレコードの再試行回数10060に1を加える(12014、5)。
ステップ12009の処理後、ステップ12010で取得した差分値が割り込み待ち時間制限値を超過していない場合、ステップ12013の処理後又はステップ12015の処理後、安定性評価器2040は、ハードウェア入出力完了割り込み情報テーブル10000に登録され、上述の判断が成されていないレコードの有無を確認し、まだ判断がされていないレコードが有る場合には、ステップ12006へ戻って、全てのレコードについて判断が終了するまで処理を繰り返す(12016)。すべてのレコードについて判断した後、安定性評価器2040は処理を終了する(12017)。尚、再試行が命令された外部デバイスについては、次の周期において計算機安定性評価器2040が実行される際に、再試行の成功の有無についての割り込み状況が上述のようにチェックされる。
安定性評価器2040による評価の終了後、計算機1000は、カーネル制御パラメータ算出制御器2050を実行して、制御パラメータの修正の要否を検討する。以下、検討処理の詳細について説明する。
図13は、静的カーネル制御パラメータテーブル2060の構成例を示す図である。静的カーネル制御パラメータテーブル2060は、登録されるパラメータの数だけのレコードを有する。各レコードは、静的カーネル制御パラメータの種類を示す静的カーネル制御パラメータエントリ13010、及びエントリ13010に登録された種類に対応する値が登録されるパラメータエントリ13020を有する。
尚、本実施形態においては、静的カーネル制御パラメータテーブル2060には、静的カーネル制御パラメータテーブル2060を更新した時刻を示すレコード13011、計算機システムの外部デバイスの数だけ、デバイス名と、デバイス有効を表すフラグの要素を持つベクトルを示すレコード13012、計算機システムのカーネルモジュール数だけ、カーネルモジュール名と、モジュール有効を表すフラグの要素を持つベクトルを示すレコード13013、OSが持つプロセススケジューラの数だけ、スケジューラ名、スケジューラ選択フラグの要素を持つベクトルを示すレコード13014、現在稼動中OSにおける起動CPU数、再起動時の起動CPU、計算機1000が有するCPU数の三つの要素を持つベクトルを示すレコード13015、現在稼動中OSにおける起動メモリ量、再起動時の起動メモリ量、計算機1000が有するメモリ量の三つの要素を持つベクトルを示すレコード13016が登録されている。
図14は、動的カーネル制御パラメータテーブル2070の構成例を示す図である。動的カーネル制御パラメータテーブル2070は、登録されるパラメータの数だけのレコードを有する。各レコードは、動的カーネル制御パラメータの種類を示す動的カーネル制御パラメータエントリ14010、エントリ14010に登録されたパラメータの値が登録されるパラメータエントリ14020、及びOS再起動時にエントリ14010に登録されたパラメータのエントリ14020に登録された値をカーネルに反映させるかどうかを示すフラグが登録されるOS再起動時フィードバックフラグエントリ14030を有する。
尚、本実施形態においては、動的カーネル制御パラメータテーブル2070には、動的カーネル制御パラメータテーブル2070を更新した時刻を示すレコード14011、計算機システムの外部デバイス数だけ、デバイス名と、デバイス有効を表すフラグの要素を持つレコード14012、計算機システムのカーネルモジュール数だけ、カーネルモジュール名と、モジュール有効を表すフラグの要素を持つベクトルを示すレコード14013、監視対象プロセス数だけ、監視対象プロセス名、プロセスIDおよび優先度の要素を持つベクトル14014、カーネルがメモリ回収スレッドを起動する時間間隔を示すレコード14015、カーネルがメモリ回収スレッドを起動し始めるダーティページ量のシステムページ数に対する割合を示すレコード14016、システム内に存在を許すinode数の制限値を示すレコード14017、ファイル名とそのファイルに対応するinode番号を管理するためのディレクトリ・エントリ(dentry)数の制限値を示すレコード14018、ファイルハンドル数の制限値を示すレコード14019が登録されている。尚、双方のパラメータテーブルに登録されるレコードの種類は、上述したものに限られないことは言うまでも無い。
図15は、ハードウェア障害に関するカーネル制御パラメータ算出制御器2050の処理手順例を示す図である。
まずカーネル制御パラメータ算出制御器2050は、安定性評価器2040が作成したデバイス障害情報バッファ11000のエントリに登録された外部デバイスのうち一つを選択する(15001)。
そして、カーネル制御パラメータ算出制御器2050は、静的カーネル制御パラメータテーブル2060のデバイスベクタレコード13012において、選択された外部デバイスに対応する有効フラグを0とする。もし、OSが選択された外部デバイスのデバイスドライバをカーネルモジュールとして提供している場合には、カーネル制御パラメータ算出制御器2050は、静的カーネル制御パラメータテーブル2060のカーネルモジュールベクタレコード13013において、選択した外部デバイスに関するカーネルモジュールの有効フラグを0とする。その後、カーネル制御パラメータ算出制御器2050は、静的カーネル制御パラメータテーブル2060の更新時刻レコード13011を更新する(15002)。
次に、カーネル制御パラメータ算出制御器2050は、動的カーネル制御パラメータテーブル2070のデバイスベクタレコード14012において、デバイス障害情報バッファ11000のエントリに登録された、選択された外部デバイスに対応する有効フラグを0とする。もし、OSが選択された外部デバイスのデバイスドライバをカーネルモジュールとして提供している場合には、カーネル制御パラメータ算出制御器2050は、動的カーネル制御パラメータテーブル2070のカーネルモジュールベクタレコード14013において、選択された外部デバイスに関するカーネルモジュールの有効フラグを0とする。その後、カーネル制御パラメータ算出制御器2050は、動的カーネル制御パラメータテーブル2070の更新時刻レコード14011を更新する(15003)。
次に、カーネル制御パラメータ算出制御器2050は、安定性評価テーブル9000を参照し、選択された外部デバイスの有効フラグエントリ9200の内容を確認する(15004)。
選択された外部デバイスの有効フラグエントリ9200のフラグがOFFならば、カーネル制御パラメータ算出制御器2050は、選択された外部デバイスの稼動を停止(以下「縮退」とも言う)しても計算機システムの継続運転が可能と判定し、選択した外部デバイスを縮退する(15005)。
ステップ15005の処理後あるいはステップ15004でフラグの値がONだった場合、カーネル制御パラメータ算出制御器2050は、選択した外部デバイスの情報を、デバイス障害情報バッファ11000から削除する(15006)。
その後、カーネル制御パラメータ算出制御器2050は、デバイス障害情報バッファ11000のエントリに登録された外部デバイス全てについて処理15002〜15006を繰り返し(15007)、全ての外部デバイスについて終了すると、カーネル制御パラメータ算出制御器2050は処理を終了する(15008)。
その後、カーネルパラメータモディファイア2060が動的カーネル制御パラメータをカーネルへ反映させ、カーネルパラメータレコーダ2070が更新されたカーネル制御パラメータを二次記憶装置1020に格納する。
次に、安定性評価の対象の例として、監視対象プロセスの沈み込みについて説明する。
ここで、「監視対象プロセスの沈み込み」とは、「プロセスの状態が実行可能状態であるにもかかわらず、プロセスの優先度が低いためそのプロセスがCPUに割り当てられず、プロセスが実行されない状態」を指す。
図16は、監視対象プロセスリストテーブル16000の構成例を示す図である。このテーブル16000は、計算機安定性評価器2040の起動時に、メモリ上へ登録される。尚、このテーブルの内容は、管理者等が計算機安定性評価器2040が提供するインタフェースを用いて設定および変更できる。
監視対象プロセスリストテーブル16000は、監視対象となる計算機1000で実行されるプロセス(以下「監視対象プロセス」とも言う)の数に対応する分のレコードを有する。各レコードは、監視対象プロセスのプロセス名が登録されるエントリ16010、監視対象プロセスのプロセスIDが登録されるエントリ16020、監視対象プロセスの沈み込みを判断する為の実行待ち状態の時間の情報が登録されるエントリ16030、監視対象プロセスが沈み込み状態にあることを示す情報が登録されるエントリ16040、及び監視対象プロセスの優先度の算出方法を示す情報が登録されるエントリ16050を有する。
優先度算出方法エントリ16050には、たとえば平均、最大による優先度計算方法、または、ユーザが定義した優先度計算関数を登録することができる。
図17は、監視対象プロセスの状態遷移テーブル17000の構成例を示す図である。安定性評価器2040は、監視対象プロセスの沈み込みを判定するために、監視対象プロセスの状態遷移の情報を状態遷移テーブル17000に格納する。状態遷移テーブル17000は、監視対象プロセスリストテーブル16000に登録された監視対象プロセス毎に1つのテーブルを有する。
状態遷移テーブル17000は、複数のレコードを有する。個々のレコードは、テーブルに対応する監視対象プロセスの状態変化が発生した時刻が登録されるエントリ17010と、その監視対象プロセスの変化後の状態を示す情報が登録されるエントリ17020を有する。
安定性評価器2040は、監視対象プロセスの状態変化が発生している場合、その監視対象プロセスに対応する状態遷移テーブル17000に、その状態変化を記録する。尚、本実施形態では、状態遷移テーブル17000は、登録されたレコードの最上位が最新の時間に発生した状態遷移に関するレコードであるとし、計算機1000は、新たな状態変化について、新たなレコードを状態テーブル17000の最上位に追加する。
図18は、監視対象プロセスの沈み込みに関する安定性評価器2040の処理手順例を示す図である。
まず安定性評価器2040は、収集されたバッファ7000と8000の情報と安定性評価テーブル9000の有効フラグエントリ9200が有効であるOS切替条件エントリ9100に登録された内容とを比較して(18001)、一致するOS切替条件エントリ9100があるかどうか評価を実施する(18002)。
一致するOS切替条件エントリ9100があるならば、安定性評価器2040はOS切替えドライバ2120へ制御を移す(18003)。
一致するOS切替条件エントリ9100が存在しない場合、まず安定性評価器2040は、監視対象プロセスリストテーブル16000から監視対象プロセスを選択し、監視対象プロセスの状態遷移テーブル17000を作成する。尚、選択した監視対象プロセスについて監視対象プロセスの状態遷移テーブル17000が作成されている場合、安定性評価器2040は、既に存在するテーブルに新たにレコードを追加する処理を行っても構わない(18005)。
安定性評価器2040は、カーネルモニタ2030が記録しているカーネルイベント記録情報テーブル7000のプロセスコンテキストスイッチおよびプロセスウェイクアップに関するイベント発生時刻、プロセスIDとプロセス状態の情報を用いて状態遷移テーブル17000を作成する。
次に安定性評価器2040は、状態遷移テーブル17000の先頭エントリ(17011)から監視対象プロセスが実行待ち状態に遷移している場合、現在時刻と監視対象プロセスが実行待ち状態に遷移した時間との差分を計算する。それ以外の場合には差分値を0とする(18006)。
安定性評価器2040は、計算した差分値から、選択した監視対象プロセスに対応する監視対象プロセスリストテーブル16000のレコードの監視対象プロセスエントリの沈み込み判定時間16030を越えて監視対象プロセスが実行待ち状態になっているか否か判定する(18007)。
選択した監視対象プロセスが沈み込み判定時間以上実行待ち状態になっている場合、安定性評価器2040は、選択した監視対象プロセスの沈み込みが発生していると判定し、選択した監視対象プロセスに対応する、監視対象プロセスリストテーブル16000の沈み込み発生フラグエントリ16040の値を1に設定する(18008、18009)。
一方、選択した監視対象プロセスが沈み込み判定時間以上実行待ち状態になっていない場合、安定性評価器2040は、選択された監視対象プロセスに対応する、監視対象プロセスリストテーブル16000の沈み込み発生フラグエントリ16040を0でクリアする(18010)。
その後、安定性評価器2040は、監視対象プロセスリストテーブル16000に登録された全ての監視対象プロセスについて、上述した処理18005〜18010を繰り返し行う(18012)。全ての監視対象プロセスについて処理が終了した後、安定性評価器2040は処理を終了する(18012)。
図20は、監視対象プロセスの沈み込みに関するカーネル制御パラメータ算出制御器2050の処理手順例を示す図である。カーネル制御パラメータ算出制御器2050は、監視対象プロセスリストテーブル16000の内容を確認し、沈み込みの発生しているプロセスの沈み込みを排除するように、動的パラメータの変更を行う。
より具体的には、カーネル制御パラメータ算出制御器2050は、監視対象プロセスリストテーブル16000の沈み込み発生フラグエントリ16040が1である各監視対象プロセスに関して、当該監視対象プロセスをCPUに実行状態として割り付けるような優先度を算出する。
まず、カーネル制御パラメータ算出制御器2050は、実行プロセス優先度履歴テーブル19000を作成する(20001)。
次に、カーネル制御パラメータ算出制御器2050は、監視対象プロセスリストテーブル16000の沈み込み発生フラグエントリ16040が1である監視対象プロセスを一つ選択する(20002)。
図19は、実行プロセス優先度履歴テーブル19000の構成例を示す図である。
カーネル制御パラメータ算出制御器2050は、選択した監視対象プロセスについて、カーネル内イベント記録情報バッファ7000のコンテキストスイッチにおける実行プロセスの優先度情報を抽出して、実行プロセス優先度履歴テーブル19000を作成する。本実施形態においては、カーネル制御パラメータ算出制御器2050は、実行プロセス優先度履歴テーブル19000に、バッファ7000から抽出した優先度の履歴の情報を、テーブルの上から順に最新の情報を記録する。
次に、カーネル制御パラメータ算出制御器2050は、選択した監視対象プロセスに対応する、監視対象プロセスリストテーブル16000の優先度算出方法エントリ16050に登録された情報から、沈み込みが発生している該プロセスの優先度算出方法を判断する(20003)。
優先度算出方法が平均値であれば、カーネル制御パラメータ算出制御器2050は、実行プロセス優先度履歴テーブル19000を用いて、現在から過去数回にCPUに割り付けられた任意のプロセスのプロセス優先度の平均値を算出する(20004)。
優先度算出方法が最大値であれば、カーネル制御パラメータ算出制御器2050は、実行プロセス優先度履歴テーブル19000を用いて、最大値を算出する(20005)。
優先度算出方法がユーザ定義であれば、カーネル制御パラメータ算出制御器2050は、ユーザが定義した優先度計算関数を実行して選択された監視対象プロセスの優先度を算出する(20006)。
その後、カーネル制御パラメータ算出制御器2050は、メモリ1020に格納された動的カーネル制御パラメータテーブル2070のプロセス優先度ベクタレコード14014の内容を、算出した監視対象プロセスの優先度で更新する。監視対象プロセスの優先度の更新は、更新プロセス優先度ベクタテーブルレコード14014において監視対象のプロセス名、プロセスIDから、監視対象のプロセスの要素の優先度を、算出した優先度で更新する(20007)。
次に、カーネル制御パラメータ算出制御器2050は、動的カーネル制御パラメータテーブル2070の更新時刻レコード14011を現在時刻で更新する(20008)。
その後、カーネル制御パラメータ算出制御器2050は、監視対象プロセスリストテーブル16000に登録された監視対象プロセスのうち、沈み込みが発生していてかつ優先度が変更されていない監視対象プロセスの有無を確認し、沈み込みが発生している全ての監視対象プロセスについて、処理20002〜20008を繰り返し実行する(20009)。沈み込みが発生している全ての監視対象プロセスについて上記の処理を行ったカーネル制御パラメータ算出制御器2050は、処理を終了する(20010)。
その後、カーネルパラメータモディファイア2080が動的カーネル制御パラメータをカーネルへ反映させ、カーネルパラメータレコーダ2090が更新されたカーネル制御パラメータを二次記憶装置1200に格納する。この手順は、図5の説明で記述した。
その他、静的カーネル制御パラメータ2060を変更することで障害対応する例を以下に示す。1つの例は、起動CPU数に関するパラメータがある。
CPU使用率(具体的にはユーザおよびカーネルのCPU使用率)の過大状態に関する問題では、カーネルモニタ2030が記録しているOS稼動状態記録情報バッファ8000に登録されたCPU使用率の情報を基に、安定性評価器2040が、CPU使用率の統計を算出して、CPU使用率が過大状態かどうかを判断する。
CPU使用率が過大である場合、カーネル制御パラメータ算出制御器2050は、起動CPU数ベクタレコード13015について、現在の起動CPU数が計算機1000が搭載する総CPU数よりも小さい場合、OSを再起動する際の起動CPU数を増加させるよう、静的パラメータを変更する。このパラメータ変更により、OSの再起動後には、CPU利用率の過大状態が回避される。
またスピンロック(排他処理を実現するために、条件が成立するまでループ待ちすること)奪い合いに関する問題では、カーネルモニタ2030が記録しているカーネル内イベント記録情報7000のロック取得とロック解放の情報を基に、安定性評価器2040が、スピンロックの奪い合いによるカーネル処理のスローダウン発生を検知する。
スピンロックの奪い合いによるカーネル処理のスローダウンを検出した場合、カーネル制御パラメータ算出制御器2050は、OSを再起動する際の起動CPU数を1つにするように静的パラメータを変更する。このパラメータ変更により、OSの再起動後には、スピンロックの奪い合いによるカーネル処理のスローダウンが回避される。
もう1つの例は、起動物理メモリ量に関するパラメータがある。
起動物理メモリ量の不足に関する問題では、カーネルモニタ2030が記録しているOS稼動状態記録情報バッファ8000の物理メモリ使用率及びスワップメモリ使用量の情報を基に、安定性評価器2040が、プロセスによる物理メモリ使用量とスワップメモリ使用量が過大状態かどうか判断する。
プロセスによる物理メモリ使用量とスワップメモリ使用量が過大であると判断された場合、カーネル制御パラメータ算出制御器2050は、起動物理メモリ量ベクタレコード13016について、現在の起動メモリ量が、計算機1000が搭載する総メモリ量よりも小さい場合、OSを再起動する際の起動メモリ量を増加させるように静的パラメータを変更する。このパラメータ変更により、OSが再起動された後、起動物理メモリ量の不足が回避される。
また、物理メモリ量が大き過ぎることに起因して発生するカーネルメモリ管理コストのオーバーヘッドに対して、起動物理メモリ量13016を減らすよう静的パラメータを変更することも考えられる。このパラメータ変更により、OSの再起動後に、物理メモリ量が変更後の値で割り当てられる。
また、動的カーネル制御パラメータの変更で障害対応する例を以下に述べる。1つの例は、メモリのページキャッシュ管理制御のメモリ回収スレッド起動時間間隔およびメモリ回収スレッド起動制限値がある。
物理メモリのページキャッシュ利用の過大状態に関する問題では、カーネルモニタ2030が記録しているOS稼動状態記録情報バッファ8000のフリーページ数及びダーティページ数の情報を基に、安定性評価器2040が、物理メモリのページキャッシュ利用が過大状態にあるかどうか判定する。
物理メモリのページキャッシュ利用が過大である場合、カーネル制御パラメータ算出制御器2050が、メモリ回収スレッドの定期的な起動時間の間隔レコード14015に登録されている軌道時間間隔を短く、及びメモリ回収スレッドが起動し始めるダーティページ量レコード14016に登録された値を小さくするよう、動的パラメータの値を変更する。このようにして早めにクリーンなページを用意できるようにすることで、物理メモリのページキャッシュ利用の過大状態を回避する。
もう1つの例は、inodeリミット値、dentryリミット値又はファイルハンドル数リミット値が挙げられる。
カーネルモニタ2030が記録しているOS稼動状態記録情報バッファ8000のinode使用数、inode使用数又はファイルハンドル使用数の情報を基に、安定性評価器2040が、inode使用数等が不足状態にあるかどうか判定する。Inode使用数等が不足状態にあると判断された場合、カーネル制御パラメータ算出制御器2050は、inodeリミット値レコード14017、dentryリミット値レコード14018やファイルハンドル数リミット値レコード14019に登録された上限値を上げるよう、動的パラメータを変更する。
図21は、OS切替えドライバ2120の処理手順例を示す図である。
OS切替ドライバ2120は、まずアプリケーションプログラムの終了処理を行う(21001)。アプリケーションプログラムの終了処理後、OS切替ドライバ2120は、OS再起動時に読み込まれる起動パラメータファイル(ブートローダが持つ設定ファイルのうちの一つ)を、二次記憶装置1200に記録された静的カーネル制御パラメータテーブル2060を元に更新し(21002)、サービスを停止し(21003)、OSを再起動する(21004)。
再起動されるOSは、その起動時に起動オプションとして静的カーネル制御パラメータテーブル2060を元に更新された起動パラメータファイルを読み込みカーネルに反映させて起動する。
図22は、本実施形態におけるOS再起動時の手順例を示す図である。
再起動を開始したOSは、通常のカーネル初期化処理を終了後に(22001)、障害が発生したOS上で実施していたサービスやプログラムを、再起動したOSで継続するために起動する(22002)。
次に、OSは、カーネルパラメータモディファイア2080、カーネルパラメータローダ2100をアプリケーションとして起動する(22003)。
カーネルパラメータローダ2100は、二次記憶装置1200に格納された静的/動的カーネル制御パラメータテーブル2060、2070をメモリ1020にロードする(22004)。
カーネルパラメータモディファイア2080は、動的カーネル制御パラメータテーブル2070のOS再起動時フィードバックフラグエントリ14030がONであるパラメータを、動的可変パラメータ変更インタフェース2012を介して、再起動したOSのカーネルに反映する。ただし、すぐにはカーネルに反映できない動的カーネルパラメータは反映できる条件が整うまで保留する。たとえば、プロセス優先度は該当するプロセスが起動するまで保留しておく(22005)。
上述したように、1台の計算機1000とその主記憶1020にひとつのOSだけがロードされて実行される本実施形態において、OSサービス処理中における障害やカーネル処理のスローダウンが発生した場合、その障害原因を検出し、再障害を回避するようにOSのカーネル制御パラメータを変更して再起動させる。これにより、現サービスに対して高信頼・高耐性・高処理能力を有するOSとして再起動し、サービス再開だけでなく同じ障害の再発の防止が可能となる。
次に、第2の実施形態について説明する。
第2の実施形態は、計算機1000において発生した障害原因の改善・回避を目的としたOSの再起動ではなく、時刻トリガによって静的カーネル制御パラメータの変更を実施する例である。
図23〜図25を用いて時刻トリガによるプロセススケジューラの切替について説明する。
図23は、プロセススケジューラ切替テーブル23000の構成を示す図である。このテーブル23000は、計算機安定性評価器2040の起動時に、メモリ上へ登録される。尚、このテーブルの内容は、管理者等が計算機安定性評価器2040が提供するインタフェースを用いて設定および変更できる。
している。
プロセススケジューラ切替テーブル23000は、プロセススケジューラ名を示すエントリ23010、プロセススケジューラを切り替える時刻を示すエントリ23020と、プロセススケジューラの切替を示すエントリ23030により構成される。
図24は、時刻トリガによるプロセススケジューラの切替に関する安定性評価器2040の処理フローを示す図である。
まず安定性評価器2040は、安定性評価テーブル9000の有効フラグエントリ9200が有効であるOS切替条件エントリ9100を参照して(24001)、一致するOS切替条件エントリ9100があるかどうか評価を実施する(24002)。
一致するOS切替条件エントリ9100があるならば、OS切替えドライバ2120へ制御を移す(24003)。
一致するOS切替条件エントリ9100がなければ、安定性評価器2040は、プロセススケジューラ切替テーブル23000のプロセススケジューラエントリ23011〜23012ついて以下で述べる処理24005〜24007を繰り返す(24004)。
まず安定性評価器2040は、プロセススケジューラの切替時間エントリ23020を参照し、プロセススケジューラの切替時間かどうか判断する(24005)。切替時間であれば、プロセススケジューラの切替フラグエントリ23030に1を設定する(24006)。切替時間でなければ、プロセススケジューラの切替フラグエントリ23030を0でクリアする(24007)。安定性評価器2040による処理24005〜24007は、プロセススケジューラ切替テーブル23000のプロセススケジューラエントリ23011〜23012について繰り返し行う(18012)。
その後、安定性評価器2040を終了する(24009)。
図25は、プロセススケジューラを時刻ベースで変更するカーネル制御パラメータ算出制御器2050の処理の1つの例を示すフローである。
カーネル制御パラメータ算出制御器2050は、安定性評価器2040で更新した切替フラグエントリ23030が1であるプロセススケジューラエントリがあるか判断する(25001)。ある場合には、静的カーネル制御パラメータテーブル2070のプロセススケジューラベクタ13014を更新する。プロセススケジューラベクタ13014は、プロセススケジューラとスケジューラ選択フラグの要素をOSが用意するプロセススケジューラの数だけもつベクトルである。
現在のプロセススケジューラはスケジューラ選択フラグが1となり、OS再起動により有効にされるプロセススケジューラはスケジューラ選択フラグを2とする(25002)。スケジューラ選択フラグが2であるプロセススケジューラが、OS再起動時にオプションとして指定される。最後にカーネル制御パラメータ算出制御器2050は、静的カーネル制御パラメータテーブル2060−1の更新時刻エントリ13011を現在時刻で更新し(25003)、終了する(25004)。
その後、OS切替えドライバ2120へ制御を移し、OSの再起動処理を行ない、再起動したOSは指定したプロセススケジューラでカーネルを起動する。
このように、第2の実施の形態を利用することにより、時間によって計算機1000が対応するサービスが変わる場合に、サービス負荷に対応できる特性を有するカーネルとしてOSを再起動することができる。
次に第3の実施形態について説明する。
本実施形態では、上述した実施形態と異なり、最初に実行されるOSと再起動されるOSとが異なる(種類は同一とする)場合について説明する。更に、本実施形態では、再起動されるOSをあらかじめメモリ1020上にローディングしておく。以下、最初にサービスを提供しているOSを第1OSと定義し、第1OSの障害時に引き続いて起動するOSを第2OSと定義する。
本実施形態のように、第2OSをあらかじめメモリ1020にローディングしておくことにより、ディスク障害、ネットワークブートする場合のネットワーク障害などに対して、確実にOSを再起動することができ、サービス再開もしくは継続することが可能となる。さらに、第1OSで発生した障害に対する処理、例えば、第1OSが使用するメモリ領域のダンプ取得なども第2OSによって確実に実施可能となる。
以下、第3の実施形態について第1の実施形態と異なる部分についてのみ説明する。
図26は、計算機1000に接続される二次記憶装置1200に格納され、メモリ1020に読み出されるプログラム等の例を示す図である。
二次記憶装置1200に格納されるプログラム等には、図2で説明したものに加え、本実施形態では、第1OSと第2OSの間でアクセスを可能とするプログラムであるゲートドライバ2130、第1OSおよび第2OSから共通領域にアクセスするためのプログラムである共通領域アクセスドライバ2140、第1OSにおいて第2OSをメモリ上にロードするプログラムである第2OSローダ2150、第2OSにおいて、退避した第1OSメモリのダンプ取得を行うプログラムであるダンプサービス2160が含まれる。
図27は、本実施形態において、第1OS初期化後のメモリ1020の状態例を示す図である。第1の実施形態と異なり、メモリ1020には、第1OS用の記憶領域(以下「第1OS領域」)27000、第2OS用の記憶領域(以下「第2OS領域」)27100及び双方のOSが使用可能な共通の記憶領域(以下「共通領域」)27200が設けられている。
図28は、本実施形態における第1OSの起動を行うための初期化手順例を示す図である。計算機1000が起動され(28000)、ブートローダ2500が第1OSのOSカーネル2010をメモリ1020の第1OS領域27000にロードする(28001)。
第1OSは、第1OS領域27000の初期化処理を行う(28002)。さらに第1OSは、第2OS領域27100をメモリ1020に確保する。尚、第1OSがデマンドページングをサポートしたOSの場合であっても、ページング非対象のメモリ領域として第2OS用のメモリ領域として確保する必要がある。もしくは、第1OSの起動時に第1OS領域27000をあらかじめ制限し、第2OS領域27100から分離して置いてもよい(28003)。
又、第1OSは、メモリ1020に共通領域27200を確保する(28004)。その後第1OSは必要なカーネルモジュール2020を第1OS領域27000内のカーネル領域(以下「第1OSカーネル領域」)27010にロードし(28005)、ゲートドライバ2130を共通領域27200へロードする(28006)。
次に、第一の実施形態と同様に、第1OSは、カーネルモニタ2030を第1OSカーネル領域27010へローディングする処理(28007)、第1OSのパニック時にパニックノーティファイア2110をコールするように第1OSカーネル領域27010のフックへパニックノーティファイアを登録する処理(28008)、OS切替ドライバ2120を第1OSカーネル領域27010へロードする処理(28009)を行う。
次に、第1OSは、図4の処理4006の説明で記述したものを第1OS領域27000のアプリケーション領域(以下「第1OSアプリケーション領域」)27020にロードする。それに加えて、第1OSは、第2OSローダ2150を第1OSアプリケーション領域にロードする(28010)。
その後、第2OSローダ2150は、OSカーネル2010を第2OSカーネルイメージとして第2OS領域にロードする(28011)。
さらに第2OSローダ2150は、第2OS用のカーネルモジュール2020、カーネルパラメータモディファイア2080、カーネルパラメータローダ2100、共通領域アクセスドライバ2140及びダンプサービス2160を第2OS領域27100にロードする。尚、これらのプログラム群は、第1OSと共通で良い(28012)。
その後、図4の処理4007と同様に、カーネルパラメータローダ2100が、二次記憶装置1200に格納された静的/動的カーネル制御パラメータテーブル2060、2070を第1OS領域27000にロードする(28013)。
最後にカーネルパラメータレコーダ2090は、二次記憶装置1200に格納された静的/動的カーネル制御パラメータテーブル2060、2070を、共通領域アクセスドライバ2140を利用して共通領域27200にロードし(28014)、初期化処理を終了する(28015)。
本実施形態においては、上述したように、OS切替ドライバ2120が実行されると、実行されるOSが第1OSから第2OSに切り替わる。OS切替ドライバ2120の実行タイミングは、第1の実施形態で示したタイミングと同様である。
図29は、本実施形態におけるOS切替ドライバ2120の動作手順例を示す図である。
OS切替ドライバ2120の実行が開始されると、OS切替ドライバ2120は、図21の処理21001と同様に、まずアプリケーションの終了処理を行う(29001)。
次にOS切替えドライバ2120は、第2OS初期化時に読み込まれる起動パラメータ(主記憶装置1020の第2OS領域27100にあるOSカーネル内に格納されている)の内容を、共通領域アクセスドライバ2140を利用しゲートドライバ2130を介して、共通領域27200に保存された静的カーネル制御パラメータテーブル2060を基に更新し(29002)、サービスを停止する(29003)。
その後、OS切替えドライバ2120は、障害が発生した第1OSが使用していた第1OS領域27000に格納された内容を二次記憶装置1200に退避するかどうか判断する。尚、管理者等は、第1OS領域のダンプ取得など障害対応サービスが必要な場合、第1OS領域27000の内容を二次記憶装置1200に退避するようにOS切替ドライバ2120に設定しておく(29004)。
第1OS領域27000の退避が必要な場合、ゲートドライバ2130は、第2OS領域27100と第1OS領域27000をスワップ(第2OSの領域を第1OSの領域へ変更し、第1OSの領域を第2OSの領域に変更)する(29005)。
一方、第1OS領域27000の退避が必要ない場合、ゲートドライバ2130は、第2OS領域27100を物理メモリ空間の先頭アドレスに一致させるように配置し、再起動の準備をする(29006)。
その後、OS切替ドライバ2120は、ゲートドライバ2130を用いて、第2OSカーネルのエントリポイントへ制御を移動し(29007)、第2OSを起動する(29008)。
図30は、第2OS起動後のメモリ1020におけるプログラム等の格納状態の例を示す図である。
メモリ1020は、第2OS領域30000、共通領域30200及び第1OS退避領域30100に領域分けされる。
図31は、本実施形態における第2OS起動の手順の1例を示す図である。
第2OSは、第2OS領域30000を初期化し、通常のカーネル初期化処理を行う(31001)。
カーネル初期化後に起動する初期化プロセスは、第2OSで行うサービス(ダンプ等)を判断する(具体的な方法としては、サービスの種類が起動パラメータで定義され、初期化プロセスは、その起動パラメータの内容を確認する)(31002)。
ステップ31002で第1OS領域のダンプ取得を行うと判断した場合(31010)、第2OSは、まず、共通処理を行う(31011)。共通処理は起動されると(31040)、まず、カーネルパラメータモディファイア2080、カーネルパラメータローダ2100を起動する(31041)。カーネルパラメータローダ2100は、共通領域30200に保存された静的/動的カーネル制御パラメータ2060、2070を、共通領域アクセスドライバ2140を利用して、第2OS領域30000にロードする(31042)。
次に、図22の処理22005と同様に、カーネルパラメータモディファイア2080は、第2OS領域30000に格納された動的カーネル制御パラメータテーブル2070のOS再起動時フィードバックフラグエントリ14030がONであるパラメータを、動的可変パラメータ変更インタフェース2012を介して、第2OSカーネル30010に反映させる処理を行い(31043)、終了する(31044)。
次に、ダンプサービスアプリケーション2160は、ダンプ取得先デバイス(例えば二次記憶装置1200)に障害が発生していないかどうかを、第2OS領域30000の静的カーネル制御パラメータ2060のデバイスベクタエントリ13012から判断する(31012)。
ダンプ先デバイスに障害が発生していない場合、ダンプサービスアプリケーション2160は、第1OS退避領域30100に格納された情報をダンプ取得先デバイスへ格納(「ダンプ」)する(31014)。
ダンプ先デバイスに障害が発生していた場合、ダンプサービスアプリケーション2160は、共通領域30200に格納された静的カーネル制御パラメータ2060のデバイスベクタエントリ13012から有効デバイスフラグが1であるハードウェア(以下「代替ダンプ先デバイス」)を探す(31013)。代替ダンプ先デバイスがあるならば、ダンプサービスアプリケーション2160は、共通領域アクセスドライバ2140を利用しゲートドライバ2130を介して、第1OSのメモリ退避領域30100のダンプ取得を行う(31014)。代替ダンプ先デバイスがないならば、ダンプサービスアプリケーション2160は、メール、画面表示、ログなどを用いて管理者に通知する(31015)。
尚、本実施形態においては、第1OSのメモリ退避領域30100の内容は、第2OS稼動中も変更されずに残っているので、管理者は通知を受けた後対処してもよい。
ステップ31002で第2OSにおいて第1OSでのサービスを再開すると判断した場合(31020)、第2OSの初期化プロセスは、障害が発生した第1OS上で実施していたサービスやプログラムを、再起動するために起動する(31021)。その後、共通処理を行う(31022)。
ステップ31030で、第2OSにおいてユーザが定義した処理関数を実行すると判断した場合(31030)、第2OSの初期化プロセスは、まず共通処理を行い(31031)、ユーザが定義した処理関数の実行を行う(31032)。
このように、再起動するOSをあらかじめメモリ上にローディングしておく第3の実施形態により、ディスク障害、ネットワークブートする場合のネットワーク障害などに対しても確実にOSを再起動することができ、サービス再開もしくは継続することができる。さらに、第1OSで発生した障害に対するサービス、例えば、第1OSメモリ領域のダンプ取得なども第2OSによって実施可能となる。
第4の実施形態は、上述した再起動方法を複数台の計算機1000を有する計算機システムに適用する例である。以下、第4の実施形態が第1の実施形態と異なる部分について図32〜図36を用いて説明する。
図32は、第4の実施形態におけるシステム構成例を示す図である。
複数台の計算機1000は、図1で示した構成に加え、それぞれ少なくとも、専用線32300、イーサネット(登録商標)32400、シリアルケーブル32500のいずれかで相互接続されており、また、ネットワーク1500を介して遠隔地に存在する計算機1600と接続され、相互に通信を行う。又、複数台の計算機1000は、二次記憶装置1200を共有する。尚、二次記憶装置1200は、上述したように、冗長構成(RAID構成、複数構成等)であって良い。
図33は、計算機起動状態情報テーブル33000の構成例を示す図である。この計算機起動状態情報テーブル33000は、複数台の計算機1000の起動状態および計算機1000のスペック(計算機1000が有するハードウェア資源の情報)を示すテーブルである。このテーブルに登録された情報に基づいて、ある計算機1000の障害に基づいて起動される計算機1000が選択される。計算機起動状態情報テーブル33000は、計算機システムが有する計算機1000の数分のレコードを有する。各レコードは、該レコードに対応する計算機の情報が登録される計算機エントリ33010、レコードに対応する計算機1000が待機状態であるか否かを示す情報が登録されるエントリ33020、レコードに対応する計算機1000に搭載されたCPU数の情報が登録されるエントリ33030、レコードに対応する計算機1000に搭載された物理メモリ量の情報が登録されるエントリ33040を有する。
待機フラグエントリ33020は、そのエントリ33020を有するレコードに対応する計算機1000がサービス運用を開始する時に0と設定され、その計算機1000が待機状態(「待機状態」とは、計算機が停止しているまたは起動していてもサービス再開の再起動命令を受信するのをただ待っている状態)となる時に1と設定される。
又、計算機起動状態情報テーブル33000は、二次記憶装置1200にあらかじめ用意(例えば、複数台計算機のシステム構成時に、管理者等が二次記憶装置1200に作成しておく)されているが、図32で説明したシステム構成が変更された場合、各計算機1000が、動的に計算機起動状態情報テーブル33000の設定を更新する。
又、図13で説明した静的カーネル制御パラメータテーブル2060における起動CPU数ベクタ13015の総CPU数および起動物理メモリ量ベクタ13016の総メモリ量は、計算機起動状態情報テーブル33000の待機フラグが1のエントリの中で最大の搭載CPU数33030および最大の搭載物理メモリ量33040の情報が使用されて良い。
図34は、共有デバイステーブル34000の構成例を示す図である。各計算機1000は、このテーブルに登録される情報に基づいて、計算機システムが有する各種ハードウェア(例えばキーボード等)が各計算機1000で共有されているか否かを判断する。
共有デバイステーブル34000は、行及び列に、計算機システムが有する計算機1000が登録されたマトリックス構成を有している。そして、各々行と列が交わる升目(エントリ)に、行で示される計算機1000と列に示される計算機1000とで共有されるハードウェアの情報が登録される。例えば、図34において、計算機1と計算機Nとでは、デバイスmが共有されるため、マトリックスの該当する欄に、デバイスmの情報が登録される。尚、各計算機1000の間でデバイスを共有しない場合、エントリには何も情報が登録されない。
尚、共有デバイステーブル34000は、二次記憶装置1200にあらかじめ用意(複数台計算機のシステム構成時に、管理者等が二次記憶装置1200に作成しておく)されているが、図32で説明した計算機システムの構成が変更された場合、計算機1000は、動的に共有デバイステーブル34000の設定を行う。具体的には、図32で説明した計算機システムの構成が変更された場合、管理者等が共有デバイステーブル34000を変更しておく。
図35は、本実施形態におけるOS切替ドライバ2120の処理手順例を示すフロー図である。本実施形態においては、ある計算機1000におけるOS切替ドライバ2120は、上述した実施形態と異なり、他の計算機1000で実行されるOSへ処理の切替を行う。
ある計算機1000で実行されるOS切替ドライバ2120は、上述したアプリケーションプログラムの終了処理を行い(35001)、起動する計算機1000(以下「待機系計算機」とも言う)を計算機起動状態情報テーブル33000を用いて決定する。この際、OS切替ドライバ2120は、二次記憶装置1200に格納された計算機起動状態情報テーブル33000を自身を実行する計算機1000のメモリ1020に読み出す。OS切替ドライバ2120は、読み出したテーブル33000から、待機状態となっている計算機を待機系計算機として選択する。
待機系計算機のより詳細な決定方法は、例えば以下の方法がある。
OS切替ドライバ2120は、計算機起動状態情報テーブル33000における待機フラグ33020が1である計算機1000の内、静的カーネル制御パラメータテーブル2060における起動CPUベクタ13015のOS再起動時CPU数と起動物理メモリ量ベクタ13016のOS再起動時メモリ量を最低限満足する計算機1000を選択する(35002)。
OS切替ドライバ2120は、二次記憶装置1200に格納された静的カーネル制御パラメータテーブル2060と動的カーネル制御パラメータテーブル2070を、共有デバイステーブルを元に更新する。
更新方法は、例えば、共有デバイスに障害が発生している場合には、OS切替ドライバ2120は、静的/動的カーネル制御パラメータテーブル2060、2070のデバイスベクタ13012、14012における、障害が発生した共有デバイスの有効フラグおよびそのデバイスに対応するカーネルモジュールがあれば、その有効フラグを0のままとし、共有デバイス以外の障害の場合には、共有デバイスの有効フラグおよびデバイスに対応するカーネルモジュールがあればその有効フラグを1として更新する方法が考えられる(35003)。
OS切替ドライバ2120は、計算機の再起動時に読み込まれる起動パラメータファイル(ブートローダが持つ設定ファイル内の、起動パラメータが記述されているファイル)を、二次記憶装置1200に格納された静的カーネル制御パラメータテーブル2060を元に更新し(35004)、サービスを停止する(35005)。
その後、OS切替ドライバ2120は、待機系計算機へ専用線32300またはイーサネット(登録商標)32400やシリアルケーブル32500を利用して起動信号または再起動命令を送信し(35005)、OS切替ドライバの処理を終了する(35006)。
図36は、本実施形態における待機系計算機起動時の手順例を示すフロー図である。
サービスを停止した計算機1000で実行されていたOS切替ドライバ2120からの起動信号を受信した待機系計算機は、自己のOSの起動を開始する。
起動されたOSは、通常のカーネル初期化処理を終了後に(36001)、計算機起動状態情報テーブル33000の、自身に対応するレコードの待機状態フラグエントリ33020を0に設定する(36002)。
その後の処理36003〜36006は、図22の処理22002〜22005で説明した内容と同一である。
上述したように、本実施形態においては、複数台の計算機において、OSサービス処理中における障害やカーネル処理のスローダウンが発生した場合、その障害原因を検出し、再障害を回避するようにOSのカーネル制御パラメータを変更して待機系計算機を起動させる。これにより、現サービスに対して高信頼・高耐性・高処理能力を有する計算機として再起動し、サービス再開だけでなく同じ障害の再発の防止が可能となる。
第一の実施形態における計算機ハードウェアの構成例を示す図である 第一の実施形態における二次記憶装置に格納されている内容例を示す図である。 第一の実施形態におけるOS初期化後のメモリ上の状態例を示す図である。 第一の実施形態の初期化フロー例を示す図である。 第一の実施形態の動作フロー例を示す図である。 第一の実施形態における、OSが行うパニック処理の動作フロー例を示す図である。 第一の実施形態におけるカーネル内イベント記録情報バッファの構成例を示す図である。 第一の実施形態におけるOS稼動状態記録情報バッファの構成例を示す図である。 第一の実施形態における安定性評価テーブルの構成例を示す図である。 第一の実施形態におけるハードウェア入出力完了割り込み情報テーブルの構成例を示す図である。 第一の実施形態におけるデバイス障害情報バッファの構成例を示す図である。 第一の実施形態におけるハードウェア障害に関する安定性評価器の処理フロー例を示す図である。 静的カーネル制御パラメータテーブルの構成例を示す図である。 動的カーネル制御パラメータテーブルの構成例を示す図である。 第一の実施形態におけるハードウェア障害に関するカーネル制御パラメータ算出制御器の処理フロー例を示す図である。 第一の実施形態における監視対象プロセスリストテーブルの構成例を示す図である。 第一の実施形態における監視対象プロセスの状態遷移テーブルの構成例を示す図である。 第一の実施形態における監視対象プロセスの沈み込みに関する安定性評価器の処理フロー例を示す図である。 第一の実施形態における過去の実行プロセス優先度の履歴テーブルの構成例を示す図である。 第一の実施形態における監視対象プロセスの沈み込みに関するカーネル制御パラメータ算出制御器の処理例を示すフロー図である。 第一の実施形態におけるOS切替えドライバの処理フロー例を示す図である。 第一の実施形態におけるOS再起動時のフロー例を示す図である。 第2の実施形態におけるプロセススケジューラ切替テーブルの構成例を示す図である。 第2の実施形態におけるプロセススケジューラの切替に関する安定性評価器の処理フロー例を示す図である。 第2の実施形態におけるカーネル制御パラメータ算出制御器2050の処理例を示す図である。 第3の実施形態における二次記憶装置1200に格納されている内容例を示す図である。 第3の実施形態におけるOS初期化後のメモリ上の状態例を示す図である。 第3の実施形態における初期化フロー例を示す図である。 第3の実施形態におけるOS切替えドライバの処理フロー例を示す図である。 第3の実施形態におけるOS再起動後のメモリ上における状態例を示す図である。 第3の実施形態におけるOS再起動時の1例を示す図である。 第4の実施形態におけるシステム構成例を示す図である。 第4の実施形態における計算機起動状態情報テーブルの構成例を示す図である。 第4の実施形態における共有デバイステーブルの構成例を示す図である。 第4の実施形態におけるOS切替えドライバの処理フロー例を示す図である。 第4の実施形態におけるOS再起動時のフロー例を示す図である。
符号の説明
1000…計算機、1010…CPU、1020…主記憶、1030…ビデオアダプタ、1040…ネットワークインタフェース、1050…二次記憶装置インタフェース、1060…シリアルポートインタフェース、1100…ディスプレイ、1200…記憶装置、1300…キーボード、1400…マウス、1500…ネットワーク、1600…計算機。

Claims (13)

  1. プロセッサと、
    主記憶と、
    二次記憶装置を有し、
    前記プロセッサは、自身で実行されるオペレーティングシステム(以下「OS」)の状態を監視し、前記監視結果に基づいて、前記OSの設定パラメータを再計算し、前記再計算された前記設定パラメータを前記二次記憶装置に格納し、前記OSを再起動する際には、前記二次記憶装置に格納された前記設定パラメータに基づいて前記OSを再起動することを特徴とする計算機システム。
  2. 前記パラメータには、動的パラメータと静的パラメータが含まれていることを特徴とする、請求項1記載の計算機システム。
  3. 前記状態とは、前記OSの実行に基づく負荷や障害に関する情報であり、前記プロセッサは、前記設定パラメータを再計算する際に、前記負荷や前記障害を回避するように前記パラメータを再計算することを特徴とする請求項1記載の計算機システム。
  4. 前記プロセッサは、前記監視結果が該計算機システムの運用の継続が不可能であることを示している場合には、前記OSを再起動することを特徴とする請求項1記載の計算機システム。
  5. 前記プロセッサは、前記動的パラメータを再計算した場合、前記主記憶に格納されている前記動的パラメータの値を更新し、更新した前記動的パラメータの値に基づいて前記OSを実行することを特徴とする請求項2記載の計算機システム。
  6. 前記動的パラメータには、プロセッサで実行されるプロセスの優先度が含まれていることを特徴とする請求項2記載の計算機システム。
  7. 前記静的パラメータには、該計算機システムに含まれる装置の障害情報に基づく前記装置の使用の可否に関する情報が含まれることを特徴とする請求項2記載の計算機システム。
  8. プロセッサと、
    主記憶と、
    二次記憶装置を有し、
    前記プロセッサは、第一のオペレーティングシステム(以下「第一のOS」)を起動する際に、前記第一のOSと同種の第二のOS自身の情報を前記主記憶に格納し、前記第一のOSの状態を監視し、前記監視結果に基づいて、前記第一のOSの設定パラメータを再計算し、前記再計算された前記設定パラメータを前記主記憶に格納し、前記第一のOSに障害が発生した場合は、前記主記憶に格納された前記設定パラメータに基づいて前記第二のOSを前記主記憶から起動することを特徴とする計算機システム。
  9. 前記第二のOSを実行するプロセッサは、前記第一のOSが使用していた前記主記憶の領域に格納されているデータを前記第二のOSが使用する装置に格納することを特徴とする請求項8記載の計算機システム。
  10. 前記状態とは、前記第一のOSの実行に基づく負荷や障害に関する情報であり、前記プロセッサは、前記設定パラメータを再計算する際に、前記負荷や前記障害を回避するように前記パラメータを再計算することを特徴とする請求項8記載の計算機システム。
  11. 第一の計算機と、
    第二の計算機と、
    前記第一の計算機及び前記第二の計算機と接続される記憶装置とを有し、
    前記第一の計算機は、
    該第一の計算機で実行されるオペレーティングシステム(以下「OS」)の状態を監視し、前記監視結果に基づいて、前記OSの設定パラメータを再計算し、前記再計算された前記設定パラメータを前記記憶装置に格納し、
    前記第二の計算機は、前記第一の計算機に障害が発生した場合には、前記記憶装置に格納された前記設定パラメータに基づいて、該第二の計算機で実行されるOSを起動することを特徴とする計算機システム。
  12. 前記設定パラメータには、前記第一の計算機と前記第二の計算機とで共用される装置についての情報が含まれていることを特徴とする請求項9記載の計算機システム。
  13. 前記状態とは、前記OSの実行に基づく負荷や障害に関する情報であり、前記第一の計算機は、前記設定パラメータを再計算する際に、前記負荷や前記障害を回避するように前記パラメータを再計算することを特徴とする請求項11記載の計算機システム。
JP2004274339A 2004-09-22 2004-09-22 計算機システム Withdrawn JP2006092055A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004274339A JP2006092055A (ja) 2004-09-22 2004-09-22 計算機システム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004274339A JP2006092055A (ja) 2004-09-22 2004-09-22 計算機システム

Publications (1)

Publication Number Publication Date
JP2006092055A true JP2006092055A (ja) 2006-04-06

Family

ID=36232989

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004274339A Withdrawn JP2006092055A (ja) 2004-09-22 2004-09-22 計算機システム

Country Status (1)

Country Link
JP (1) JP2006092055A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165551A (ja) * 2006-12-28 2008-07-17 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
JP2009295248A (ja) * 2008-06-06 2009-12-17 Panasonic Corp 再生装置、集積回路及び再生方法
WO2016197543A1 (zh) * 2015-06-12 2016-12-15 中兴通讯股份有限公司 网络资源优化方法和装置
CN114625575A (zh) * 2022-05-16 2022-06-14 深圳市科力锐科技有限公司 业务系统同步方法、装置、设备及存储介质

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008165551A (ja) * 2006-12-28 2008-07-17 Sony Corp 情報処理装置および方法、プログラム、並びに記録媒体
JP4544246B2 (ja) * 2006-12-28 2010-09-15 ソニー株式会社 制御装置および方法、プログラム、並びに記録媒体
US8887091B2 (en) 2006-12-28 2014-11-11 Sony Corporation Information processing apparatus, method, processor, and recording medium for determining whether information stored in a memory is incorrectly updated
JP2009295248A (ja) * 2008-06-06 2009-12-17 Panasonic Corp 再生装置、集積回路及び再生方法
WO2016197543A1 (zh) * 2015-06-12 2016-12-15 中兴通讯股份有限公司 网络资源优化方法和装置
CN106304143A (zh) * 2015-06-12 2017-01-04 中兴通讯股份有限公司 基于终端的网络资源优化方法和装置
CN114625575A (zh) * 2022-05-16 2022-06-14 深圳市科力锐科技有限公司 业务系统同步方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
JP4920391B2 (ja) 計算機システムの管理方法、管理サーバ、計算機システム及びプログラム
CN101377750B (zh) 一种用于机群容错的系统和方法
US7574627B2 (en) Memory dump method, memory dump program and computer system
JP5140633B2 (ja) 仮想化環境において生じる障害の解析方法、管理サーバ、及びプログラム
US8074222B2 (en) Job management device, cluster system, and computer-readable medium storing job management program
JP4489802B2 (ja) マルチcpuコンピュータおよびシステム再起動方法
US9335998B2 (en) Multi-core processor system, monitoring control method, and computer product
US7363546B2 (en) Latent fault detector
US20070220323A1 (en) System and method for highly available data processing in cluster system
US20120304184A1 (en) Multi-core processor system, computer product, and control method
JPS62298839A (ja) 障害時に計算機システムを再始動する方法
JP2010086181A (ja) 仮想計算機システム及びその管理方法、プログラム並びに記録媒体
US11157373B2 (en) Prioritized transfer of failure event log data
WO2016000298A1 (zh) 一种系统异常的捕获方法、主系统、影子系统及智能设备
KR20120115426A (ko) 정보 처리 장치, 정보 처리 방법, 및 프로그램을 기록한 컴퓨터 판독가능한 기록 매체
US20040083404A1 (en) Staged startup after failover or reboot
US20090276205A1 (en) Stablizing operation of an emulated system
CN110895487A (zh) 分布式任务调度系统
US9575827B2 (en) Memory management program, memory management method, and memory management device
JPH07311749A (ja) マルチプロセッサシステム及びカーネル置換方法
JP2007133544A (ja) 障害情報解析方法及びその実施装置
US7953914B2 (en) Clearing interrupts raised while performing operating system critical tasks
CN110895486A (zh) 分布式任务调度系统
JP4992740B2 (ja) マルチプロセッサシステム、障害検出方法および障害検出プログラム
US20100085871A1 (en) Resource leak recovery in a multi-node computer system

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20060425

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070302

A761 Written withdrawal of application

Free format text: JAPANESE INTERMEDIATE CODE: A761

Effective date: 20100108