(57)【特許請求の範囲】
【請求項１】
複数のプロセッサが複数のパーティションに専用であり当該複数のパーティションが環状態様で同じバッファにデータの書き込みを行う構成をなす論理パーティション・データ処理システムにおいてトレース・データを処理するための方法であって、
例外の検出に応答して、前記論理パーティション・データ処理システムにおける前記複数のパーティション内の前記例外に関連したパーティションを識別するステップであって、前記複数のパーティションに対する単一の同じトレース・バッファの最新のトレース・データ・エントリにおけるパーティション識別子をパーティション・データ・フィルタによって識別する、前記パーティションを識別するステップと、
前記識別されたパーティションに対するトレース・データを、当該トレース・データの書き込みが行われた前記トレース・バッファから、マシンチェック割込みハンドラが有するエラー・ログに記憶するステップと、
を含む方法。
【請求項２】
前記エラー・ログを不揮発性ストレージに記憶するステップを更に含む、請求項１に記載の方法。
【請求項３】
前記不揮発性ストレージが不揮発性ランダム・アクセス・メモリである、請求項２に記載の方法。
【請求項４】
前記識別するステップ及び前記記憶するステップがプラットフォーム・ファームウェアによって遂行される、請求項１に記載の方法。
【請求項５】
前記記憶するステップがマシンチェック割込みハンドラによって遂行される、請求項１に記載の方法。
【請求項６】
前記識別されたパーティションに対するトレース・データだけが前記エラー・ログに記憶される、請求項１に記載の方法。
【請求項７】
複数のプロセッサが複数のパーティションに専用であり当該複数のパーティションが環状態様で同じバッファにデータの書き込みを行う構成をなすトレース・データを処理するための論理パーティション・データ処理システムであって、
識別されたパーティションを形成するために、例外の検出に応答して、前記論理パーティション・データ処理システムにおける前記複数のパーティション内の前記例外に関連したパーティションを識別するための識別手段であって、前記複数のパーティションに対する単一の同じトレース・バッファの最新のトレース・データ・エントリにおけるパーティション識別子を識別する、パーティション・データ・フィルタによって構成される前記識別手段と、
前記識別されたパーティションに対するトレース・データを、当該トレース・データの書き込みが行われた前記トレース・バッファから、マシンチェック割込みハンドラが有するエラー・ログに記憶するための記憶手段と、
を含む、データ処理システム。
【請求項８】
複数のプロセッサが複数のパーティションに専用であり当該複数のパーティションが環状態様で同じバッファにデータの書き込みを行う構成をなす論理パーティション・データ処理システムにおいてトレース・データを処理するためのコンピュータ・プログラムであって、
コンピュータに、
識別されたパーティションを形成するために、例外の検出に応答して、前記論理パーティション・データ処理システムにおける前記複数のパーティション内の前記例外に関連したパーティションを識別するための第１命令であって、前記複数のパーティションに対する単一の同じトレース・バッファの最新のトレース・データ・エントリにおけるパーティション識別子をパーティション・データ・フィルタによって識別する、前記第１命令と、
前記識別されたパーティションに対するトレース・データを、当該トレース・データの書き込みが行われた前記トレース・バッファから、マシンチェック割込みハンドラが有するエラー・ログに記憶するための第２命令と、
を実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、データ処理システムの改良に関し、特に、データを処理するための方法及び装置に関するものである。更に詳しく言えば、本発明は、論理パーティション・データ処理システムにおいてトレース・データを管理するための方法、装置、及びコンピュータ命令に関するものである。
【背景技術】
【０００２】
インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能な IBM eServer P690、ヒューレット・パッカード・カンパニーから入手可能な DHP9000 SuperdomeEnterprise Server、及びサン・マイクロシステムズ・インコーポレーテッドから入手可能な Sunfire 15K サーバのような益々大型化した対称マルチプロセッサ・データ処理システムは単一の大型データ処理システムとして使用されてはいない。その代わり、これらのタイプのデータ処理システムはパーティション化され、小型システムとして使用されている。これらのシステムは、論理パーティション（ＬＰＡＲ）・データ処理システムと呼ばれることもある。データ処理システム内の論理的にパーティション化された機能性は、単一のオペレーティング・システムの複数コピー又は複数の異種オペレーティング・システムが単一のデータ処理システム・プラットフォーム上で同時に稼動することを可能にしている。１つのオペレーティング・システムのイメージが内部で稼動するパーティションは、プラットフォーム・リソースが重畳しないサブセットを割り当てられる。これらのプラットフォームの割り振り可能なリソースは、割り込み管理エリア、システム・メモリの領域、入出力（Ｉ／Ｏ）アダプタ・バス・スロットを有する１つ又は複数の体系的に別個のプロセッサを有する。そのパーティションのリソースは、オペレーティング・システム・イメージに対するプラットフォームのファームウェアによって表される。
【０００３】
１つのプラットフォーム内で稼動する各個別のオペレーティング・システム又は１つのオペレーティング・システムのイメージは、１つの論理パーティションにおけるソフトウェア・エラーが他のいずれのパーティションにおける正しいオペレーションにも影響しないように、相互に保護されている。この保護は、各オペレーティング・システムのイメージによって直接管理されるようにプラットフォーム・リソースの結合解除済みセットを割り振ることによって、及びそのイメージに割り振られていないいずれのリソースも種々のイメージが制御し得ないことを保証するための機構を設けることによって、行われる。更に、オペレーティング・システムの割り振られたリソースを制御するときのソフトウェア・エラーは、他の如何なるイメージのリソースにも影響を与えないようにされる。
【０００４】
従って、オペレーティング・システムの各イメージ又は異なる各オペレーティング・システムは、プラットフォームにおける割り振り可能なリソースの異なるセットを直接に制御する。論理パーティション・データ処理システムにおけるハードウェア・リソースに関して、これらのリソースは種々のパーティション間で相互に無関係状態で共用される。これらのリソースは、例えば、入出力（Ｉ／Ｏ）アダプタ、メモリＤＩＭＭ、不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）、及びハードディスク・ドライブを含んでもよい。ＬＰＡＲデータ処理システム内の各パーティションは、そのデータ処理システム全体をパワー・サイクルすることを必要とせずに何度もブート及びシャット・ダウンすることが可能である。
【０００５】
論理パーティション・データ処理システムが障害に遭遇するとき、プロセス及びシステム状態に関連するデータは、その障害の識別及び分析を援助する必要がある。現在の論理パーティション・データ処理システムでは、そのシステムの現設計ために、障害を診断するに必要なデータのうちのあるものが利用し得ない。プラットフォーム・ファームウェアは、例えば、そのファームウェアにおけるコード・パスのトレースを可能にするためのトレース機構を含む。論理パーティション・データ処理システムにおいて使用されるプラットフォーム・ファームウェアの例は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なハイパーバイザである。
【０００６】
現在使用されているトレース機構の場合、各パーティションがプラットフォーム・ファームウェア・コールを行うとき、そのプラットフォーム・ファームウェアにおいて必要なコード・パスを示すトレース情報及び臨界的なデータ値がトレース・バッファに書き込まれる。このトレース情報は、パーティションがエラーに遭遇し、そのエラー・パスが臨界的なデータ値と共にトレースされるとき、特に重要なものである。
【０００７】
現在、すべての論理パーティション・モードのデータ処理システム・プラットフォームがハイパーバイザ・トレース機構をサポートしている。そのハイパーバイザ・トレース機構は、ハイパーバイザ実行時にハイパーバイザ・スペースに設けられたトレース・バッファにハイパーバイザ・コード実行トレース・ポイント・データを書き込むために使用される。このハイパーバイザ・トレース・データは、システム障害の場合にそのフィールドにおける効果的な障害分析にとって不可欠なものである。
【０００８】
この状況は、プロセッサが複数のパーティションに専用のものであり、これらのパーティションが同じバッファに書き込みを行うという構成の場合に問題を生じる。これらのバッファは、一般に、環状態様に編成される。従って、パーティション・クラッシュが生じる場合、トレース・データが、論理パーティション・データ処理システムにおける他のパーティションによって素早く上書きされることがある。その結果、その問題の診断を援助するために必要な重要データが失われることがある。
【０００９】
１つの解決方法は、より大きなバッファを作成することである。更に、パーティションの数が増加するにつれて、このトレース・バッファのサイズは、更なるデータを収容するように大きくなる必要がある。各論理パーティション・データ処理システムが個々に構成され、動的な構成が可能にされるので、バッファ構造は、意図的に最大の構成を事前割振りされなければならない。その結果、不用なメモリ・スペースがより小さい構成として存在することになる。更に、システム・メモリが高額であるシステムでは、その不用なメモリ・スペースがその論理パーティション・データ処理システムのコストを増大させている。
【００１０】
したがって、トレース・データを保存するための改良された方法、装置、及びコンピュータ命令を持つことは有利なことであろう。
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明の目的は、論理パーティション・データ処理システムにおいてトレース・データを処理するための方法、装置、及びコンピュータ命令を提供することにある。
【課題を解決するための手段】
【００１２】
例外を生じさせるパーティションがその例外の検出に応答して識別される。そのパーティションは、論理パーティション・データ処理システムにおける一組のパーティション内の１つである。識別されたパーティションに対するトレース・データが、マシンチェック割込みハンドラに対するエラー・ログ又は他のデータ構造体に記憶される。
【発明を実施するための最良の形態】
【００１３】
図面、特に、図１を参照すると、本発明を実施し得るデータ処理システム１００のブロック図が示される。データ処理システム１００は、システム・バス１０６に接続された複数のプロセッサ１０１、１０２、１０３、及び１０４を含む対称マルチプロセッサ（ＳＭＰ）システムであってもよい。例えば、データ処理システム１００は、米国ニューヨーク州アーモンクにあるインターナショナル・ビジネス・マシーンズ・コーポレーションの製品であって、ネットワークにおけるサーバとして具現化された IBM eServer であってもよい。それとは別に、単一のプロセッサ・システムが使用されてもよい。更に、システム・バス１０６には、メモリ・コントローラ／キャッシュ１０８が接続される。メモリ・コントローラ／キャッシュ１０８は、複数のローカル・メモリ１６０〜１６３に対するインターフェースを提供する。システム・バス１０６には、Ｉ／Ｏバス・ブリッジ１１０が接続され、それはＩ／Ｏバス１１２に対するインターフェースを提供する。メモリ・コントローラ／キャッシュ１０８及びＩ／Ｏバス・ブリッジ１１０は、図示のように、一体化されてもよい。
【００１４】
データ処理システム１００は、論理パーティション（ＬＰＡＲ）データ処理システムである。従って、データ処理システム１００は、同時に実行される複数の異種オペレーティング・システム（または、単一オペレーティング・システムの複数インスタンス）を有してもよい。これらの複数のオペレーティング・システムの各々は、それの内部で実行される任意の数のソフトウェア・プログラムを有することが可能である。データ処理システム１００は、種々のＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１、１２８〜１２９、１３６、グラフィックス・アダプタ１４８、及びハード・ディスク・アダプタ１４９が種々の論理パーティションに割り当てられるよう、論理的にパーティション化される。この場合、グラフィックス・アダプタ１４８はディスプレイ装置（図示されてない）に対する接続を提供し、一方、ハード・ディスク・アダプタ１４９はハード・ディスク１５０に対する接続を提供する。
【００１５】
従って、例えば、データ処理システム１００が３つの論理パーティションＰ１、Ｐ２、及びＰ３に分割されるものと仮定する。ＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１、１２８〜１２９、１３６、グラフィックス・アダプタ１４８、及びハード・ディスク・アダプタ１４９の各々、ホスト・プロセッサ１０１〜１０４の各々、及びローカル・メモリ１６０〜１６３のメモリがそれら３つの論理パーティションの各々に割り当てられる。これらの例では、ローカル・メモリ１６０〜１６３は、デュアル・インライン・メモリ・モジュール（ＤＩＭＭ）の形式を取るものでもよい。ＤＩＭＭは、いつもＤＩＭＭ毎にパーティションに割り当てられるとは限らない。その代わり、プラットフォームから見たメモリ全体の一部分を、１つのパーティションが得るであろう。例えば、プロセッサ１０１と、ローカル・メモリ１６０〜１６３からのメモリのある部分と、ＰＣＩ  Ｉ／Ｏアダプタ１２０、１２８、及び１２９が論理パーティションＰ１に割り当てられ、プロセッサ１０２〜１０３と、ローカル・メモリ１６０〜１６３からのメモリのある部分と、ＰＣＩ  Ｉ／Ｏアダプタ１２１及び１３６が論理パーティションＰ２に割り当てられ、そしてプロセッサ１０４と、ローカル・メモリ１６０〜１６３からのメモリのある部分と、グラフィックス・アダプタ１４８と、ハード・ディスク・アダプタ１４９が論理パーティションＰ３に割り当てられてもよい。
【００１６】
データ処理システム１００において実行される各オペレーティング・システムは異なる論理パーティションに割り当てられる。従って、データ処理システム１００において実行される各オペレーティング・システムは、それの各論理パーティション内にあるＩ／Ｏ装置だけをアクセスすることが可能である。従って、例えば、拡張対話式エグゼクティブ（ＡＩＸ）オペレーティング・システムの１つのインスタンスが論理パーティションＰ１内で実行中であり、ＡＩＸオペレーティング・システムの第２インスタンス(イメージ)が論理パーティションＰ２内で実行中であり、そして Linux または OS/400 オペレーティング・システムが論理パーティションＰ３内で実行中であってもよい。
【００１７】
Ｉ／Ｏバス１１２に接続されたペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）ホスト・ブリッジ１１４がＰＣＩローカル・バス１１５に対するインターフェースを提供する。多数のＰＣＩ入出力アダプタ１２０〜１２１がＰＣＩ-ＴＯ-ＰＣＩブリッジ１１６、ＰＣＩバス１１８、ＰＣＩバス１１９、Ｉ／Ｏスロット１７０、及びＩ／Ｏスロット１７１を介してＰＣＩバス１１５に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１１６は、ＰＣＩバス１１８及びＰＣＩバス１１９に対するインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１２０及び１２１が、それぞれ、Ｉ／Ｏスロット１７０及び１７１に設けられる。代表的なＰＣＩを具現化したものは、４個及び８個のＩ／Ｏアダプタ（即ち、アド・イン・コネクタのための拡張スロット）の間をサポートするであろう。各ＰＣＩ  Ｉ／Ｏアダプタ１２０〜１２１は、データ処理システム１００と、例えば、データ処理システム１００にとってはクライアントである他のネットワーク・コンピュータのような入出力装置との間のインターフェースを提供する。
【００１８】
更なるＰＣＩホスト・ブリッジ１２２が更なるＰＣＩバス１２３に対するインターフェースを提供する。ＰＣＩバス１２３は、複数のＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９に接続される。ＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９は、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１２４、ＰＣＩバス１２６、ＰＣＩバス１２７、Ｉ／Ｏスロット１７２、及びＩ／Ｏスロット１７３を介してＰＣＩバス１２３に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１２４は、ＰＣＩバス１２６及びＰＣＩバス１２７に対するインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１２８及び１２９は、それぞれ、Ｉ／Ｏスロット１７２及び１７３に設けられる。このように、例えば、モデムまたはネットワーク・アダプタのような更なるＩ／Ｏ装置がＰＣＩ  Ｉ／Ｏアダプタ１２８〜１２９の各々を介してサポートされてもよい。このように、データ処理システム１００は、複数のネットワーク・コンピュータへの接続を可能にする。
【００１９】
Ｉ／Ｏスロット１７４に挿入されたメモリ・マップ・グラフィックス・アダプタ１４８がＰＣＩバス１４４、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１４２、ＰＣＩバス１４１、及びＰＣＩホスト・ブリッジ１４０を介してＩ／Ｏバス１１２に接続される。ハード・ディスク・アダプタ１４９がＩ／Ｏスロット１７５に挿入され、Ｉ／Ｏスロット１７５はＰＣＩバス１４５に接続される。更に、このバス１４５は、ＰＣＩ-ＴＯ-ＰＣＩブリッジ１４２に接続され、そのブリッジ１４２は、ＰＣＩバス１４１によってＰＣＩホスト・ブリッジ１４０に接続される。
【００２０】
ＰＣＩホスト・ブリッジ１３０が、ＰＣＩバス１３１をＩ／Ｏバス１１２に接続するためのインターフェースを提供する。ＰＣＩ  Ｉ／Ｏアダプタ１３６がＩ／Ｏスロット１７６に接続される。そのＩ／Ｏスロット１７６はＰＣＩバス１３３によってＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２に接続される。ＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２はＰＣＩバス１３１に接続される。このＰＣＩバス１３１は、ＰＣＩホスト・ブリッジ１３０をサービス・プロセッサ・メールボックス・インターフェース及びＩＳＡバス・アクセス・パススルー・ロジック１９４、並びにＰＣＩ-ＴＯ-ＰＣＩブリッジ１３２にも接続する。サービス・プロセッサ・メールボックス・インターフェース及びＩＳＡバス・アクセス・パススルー・ロジック１９４は、ＰＣＩ／ＩＳＡブリッジ１９３を宛先とするＰＣＩアクセスを搬送する。ＮＶＲＡＭストレージ１９２がＩＳＡバス１９６に接続される。サービス・プロセッサ１３５がＰＣＩバス１９５を介してサービス・プロセッサ・メールボックス・インターフェース及びＩＳＡバス・アクセス・パススルー・ロジック１９４に接続される。サービス・プロセッサ１３５は、複数のＪＴＡＧ／Ｉ２Ｃバス１３４を介してプロセッサ１０１〜１０４にも接続される。ＪＴＡＧ／Ｉ２Ｃバス１３４は、ＪＴＡＧ／スキャン・バス（ＩＥＥＥ  １１４９.１参照）及びＰｈｉｌｌｉｐｓＩ２Ｃバスの結合体である。しかし、ＪＴＡＧ／Ｉ２Ｃバス１３４は、その代替として、Ｐｈｉｌｌｉｐｓ Ｉ２Ｃバスのみ、またはＪＴＡＧ／スキャン・バスのみによる置換も可能である。ホスト・プロセッサ１０１、１０２、１０３、及び１０４のＳＰ−ＡＴＴＮ信号が、すべて、サービス・プロセッサの割込み入力信号に結合される。サービス・プロセッサ１３５は、それ自身のローカル・メモリ１９１を有し、ハードウェアＯＰパネル１９０に対するアクセスも行う。
【００２１】
データ処理システム１００が最初に電源投入されるとき、サービス・プロセッサ１３５が、ＪＴＡＧ／Ｉ２Ｃバス１３４を使用してシステム（ホスト）プロセッサ１０１〜１０４、メモリ・コントローラ／キャッシュ１０８、及びＩ／Ｏブリッジ１１０に問い合わせを行う。このステップの終了時に、サービス・プロセッサ１３５が、データ処理システム１００に関するインベントリ及びトポロジを理解する。サービス・プロセッサ１３５は、更に、ホスト・プロセッサ１０１〜１０４、メモリ・コントローラ／キャッシュ１０８、及びＩ／Ｏブリッジ１１０に問い合わせを行うことによってわかったすべての素子に関して、組込み自己診断テスト（ＢＩＳＴ）、基本保証テスト（ＢＡＴ）、およびメモリ・テストを実行する。ＢＩＳＴ、ＢＡＴ、及びメモリ・テスト中に検出された障害に関するすべてのエラー情報がサービス・プロセッサ１３５によって収集され、報告される。
【００２２】
ＢＩＳＴ、ＢＡＴ、及びメモリ・テスト中に障害があることがわかった素子を取り除いた後、依然として、システムリソースの有意義な／有効な構成が可能である場合、データ処理システム１００は、実行可能なコードをローカル（ホスト）メモリ１６０〜１６３にロードするように進行することを可能にされる。そこで、サービス・プロセッサ１３５が、ローカル・メモリ１６０〜１６３にロードされたコードを実行するためにホスト・プロセッサ１０１〜１０４を解放する。ホスト・プロセッサ１０１〜１０４はデータ処理システム１００におけるそれぞれのオペレーティング・システムからのコードを実行するが、サービス・プロセッサ１３５はエラーを監視及び報告するモードに入る。サービス・プロセッサ１３５によって監視される項目のタイプは、例えば、冷却ファンの速度及び動作、温度センサ、電源調整器を含み、更に、プロセッサ１０１〜１０４、ローカル・メモリ１６０〜１６３、及びＩ／Ｏブリッジ１１０によって報告された回復可能エラー及び回復不能エラーを含む。
【００２３】
サービス・プロセッサ１３５は、データ処理システム１００におけるすべての監視された項目に関するエラー情報を保存及び報告する責任を負っている。更に、サービス・プロセッサ１３５は、エラーのタイプ及び定義された閾値に基づいてアクションを取る。例えば、サービス・プロセッサ１３５は、プロセッサのキャッシュ・メモリに関する過度の回復可能なエラーを注目し、これが難しい障害を予測するものであることを決定することがある。この決定に基づいて、サービス・プロセッサ１３５は、現在稼動しているセッション時及び将来の初期プログラム・ロード（ＩＰＬ）時に構成解除するようにそのリソースにマークを付することも可能である。なお、ＩＰＬは、時には「ブート」または「ブートストラップ」と呼ばれることもある。
【００２４】
データ処理システム１００は、種々の商業的に入手可能なコンピュータ・システムを使用して具現化することが可能である。例えば、データ処理システム１００は、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能な IBM eServer iSeries Model 840 システムを使用して具現化することができる。そのようなシステムは、OS/400オペレーティング・システムを使用して論理パーティションをサポートすることが可能である。なお、OS/400 オペレーティング・システムも、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。
【００２５】
図１に示されたハードウェアが変更可能なものであることは当業者には明らかであろう。例えば、光ディスク・ドライブ等のような他の周辺装置が、図示のハードウェアに加えて、またはそのハードウェアに代わって、使用されてもよい。図示の例は、本発明に関してアーキテクチャ上の限定を暗に示すことを意図するものではない。
【００２６】
図２を参照すると、本発明を実装することが可能である例示的な論理パーティション・プラットフォームのブロック図が示される。論理パーティション・プラットフォーム２００におけるハードウェアは、例えば、図１におけるデータ処理システム１００として実装することが可能である。論理パーティション・プラットフォーム２００は、パーティション・ハードウェア２３０、オペレーティング・システム２０２、２０４、２０６、２０８、及びパーティション管理ファームウェア（プラットフォーム・ファームウェア）２１０を含む。オペレーティング・システム２０２、２０４、２０６、及び２０８は、論理パーティション・プラットフォーム２００において同時に稼動する単一のオペレーティング・システムの複数コピー、または複数の異種のオペレーティング・システムであってもよい。これらのオペレーティング・システムは、ハイパーバイザのようなパーティション管理ファームウェアとインターフェースするように設計された OS/400 を使用して具現化することが可能である。OS/400 は、これらの実施例では単に１つの例として使用される。もちろん、特定の具現化方法次第で、AIX及び Linux のような他のタイプのオペレーティング・システムを使用することも可能である。オペレーティング・システム２０２、２０４、２０６、及び２０８がパーティション２０３、２０５、２０７、及び２０９に設けられる。ハイパーバイザ・ソフトウェアは、パーティション管理ファームウェア２１０を具現化するために使用可能なソフトウェアの一例であり、それは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。ファームウェアは、例えば、リード・オンリ・メモリ（ＲＯＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能プログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的消去可能プログラマブルＲＯＭ（ＥＥＰＲＯＭ）、及び不揮発性ランダム・アクセス・メモリ（不揮発性ＲＡＭ）のような、電力がなくても内容を保持するメモリ・チップに記憶された「ソフトウェア」である。
【００２７】
更に、これらのパーティションは、パーティション・ファームウェア２１１、２１３、２１５、及び２１７を含む。パーティション・ファームウェア２１１、２１３、２１５、及び２１７は、初期ブート・ストラップ・コード、ＩＥＥＥ−１２７５スタンダード・オープン・ファームウェア、及びランタイム・アブストラクション・ソフトウェア（ＲＴＡＳ）を使用して具現化可能である。なお、ＲＴＡＳは、インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能である。パーティション２０３、２０５、２０７、及び２０９がインスタンス化されるとき、ブート・ストラップ・コードのコピーがプラットフォーム・ファームウェア２１０によってパーティション２０３、２０５、２０７、及び２０９にロードされる。しかる後、ブート・ストラップ・コードがその後オープン・ファームウェア及びＲＴＡＳをロードすることによって、そのブート・ストラップ・コードに制御が移される。次に、それらのパーティションに関連した又は割り当てられたプロセッサが、パーティション・ファームウェアを実行するためにそれらのパーティションのメモリにディスパッチされる。
【００２８】
パーティション・ハードウェア２３０は、複数のプロセッサ２３２〜２３８、複数のシステム・メモリ・ユニット２４０〜２４６、複数の入出力（Ｉ／Ｏ）アダプタ２４８〜２６２、及びストレージ・ユニット２７０を含む。プロセッサ２３２〜２３８、メモリ・ユニット２４０〜２４６、ＮＶＲＡＭ２９８、及びＩ／Ｏアダプタ２４８〜２６２の各々は論理パーティション・プラットフォーム２００における複数のパーティションの１つに割り当て可能である。なお、それらのパーティションの各々は、オペレーティング・システム２０２、２０４、２０６、及び２０８の１つに対応する。
【００２９】
パーティション管理ファームウェア２１０は、論理パーティション・プラットフォーム２００のパーティション化をもたらし且つ強化するために、パーティション２０３、２０５、２０７、及び２０９に対する多数の機能及びサービスを遂行する。パーティション管理ファームウェア２１０は、基本的なハードウェアと同様のファームウェア実装の仮想マシンである。従って、パーティション管理ファームウェア２１０は、論理パーティション・プラットフォーム２００のすべてのハードウェア・リソースを仮想化することによって、独立したオペレーティング・システム２０２、２０４、２０６、及び２０８の同時実行を可能にする。
【００３０】
パーティションにおけるプラットフォーム・エラーの処理のような種々のサービスを提供するためにサービス・プロセッサ２９０を使用することが可能である。これらのサービスは、インターナショナル・ビジネス・マシーンズ・コーポレーションのような製造業者にエラーを報告するためのサービス・エージェントとして作用することも可能である。種々なパーティションの操作がハードウェア管理コンソール２８０を介して制御可能である。ハードウェア管理コンソール２８０は、種々のパーティションに対するリソースの再割り振りを含む種々の機能をシステム管理者が遂行することを可能にする別のデータ処理システムである。
【００３１】
次に、図３を参照すると、トレース・データを処理するために使用される現在入手可能な論理パーティション・データ処理システムにおけるコンポーネントを表す図が示される。この実施例では、パーティション３００がオペレーティング・システム３０２及びＲＴＡＳ３０４を含む。パーティション３０６が、オペレーティング・システム３０８及びＲＴＡＳ３１０を含む。これらの図示された例では、２５５個までのパーティションが存在可能である。これらのパーティションは、すべて、ハイパーバイザ３１２のようなプラットフォーム・ファームウェアを通して管理される。
【００３２】
パーティション３００がハイパーバイザ３１２に対してコールを行うとき、ハイパーバイザ・コード・パス３１８が生成される。これらのコールから生成されたトレース・データがハイパーバイザ・トレース・バッファ３１６に記憶される。このトレース・データは、図４におけるハイパーバイザ・トレース・バッファ４１８におけるエントリに記憶される。トレース・データは、これらの実施例では、得られたコード・パスを示すトレース情報及び重要なデータ値を含む。トレース情報のほかに、各エントリは、そのトレース・データを生じさせたコールを行ったパーティションを識別するためのパーティション識別子を含む。パーティション・マネージャ３１４は、コード・パスが生じたとき、ハイパーバイザ・トレース・バッファ３１６にトレース情報を書き込む。このトレース情報は、このパーティション・マネージャ３１４がハイパーバイザ３１２に対してコールを行うときに書き込まれる。パーティション・マネージャ３１４はハイパーバイザ３１２における１つのコンポーネントである。このコンポーネントはパーティションを管理するために使用され、パーティションを開始及び終了させるというような機能を含む。パーティション・マネージャ３１４によって行われたコールがハイパーバイザ・トレース・バッファ３１６に記憶される。
【００３３】
同様に、ハイパーバイザ３１２に対するコールがパーティション３０６によって行われるとき、ハイパーバイザ・コード・パス３２０が形成され、これらのコールに対するトレース・データがハイパーバイザ・トレース・バッファ３１６に記憶される。同様に、ハイパーバイザ・コード・パス３２０は、ハイパーバイザ３１２がパーティション３０６によるコールを受けるときに形成される。このパスに対するトレース・データもハイパーバイザ・トレース・バッファ３１６に記憶される。
【００３４】
各パーティションが活性化されるとき、オペレーティング・システムがロードされ、実行を開始する。オペレーティング・システム３０２のようなオペレーティング・システムがプラットフォーム・リソースを必要とするとき、そのオペレーティング・システムはＲＴＡＳ３０４に対してＲＴＡＳコールを行う。一方、ＲＴＡＳ３０４は、ハイパーバイザ３１２に対してハイパーバイザ・コールを行う。ハイパーバイザ・コールが実行されるとき、パーティション・データを分離することなく、トレース・データがハイパーバイザ・トレース・バッファ３１６に書き込まれるという特別の「トレース・ポイント」が実行される。換言すると、すべてのパーティションによるすべてのコールに対するすべてのトレース・データがこのバッファに書き込まれる。
【００３５】
パーティションを代表してハイパーバイザ・コールを実行するハイパーバイザ・データが単一のバッファに書き込まれるのみならず、ハイパーバイザ機構であるパーティション・マネージャ３１４もそれのトレース・データを同じトレース・バッファに書き込む。更に、マシンチェック割り込みハンドラ３２２が同じトレース機構を使用し、ハイパーバイザ・トレース・バッファ３１６に情報を記憶する。
【００３６】
しかし、この現在のシステムは、すべての情報をハイパーバイザ・トレース・バッファ３１６に記憶する。その結果、これらのタイプのバッファにおける制限されたスペースのために、現在のシステムでは、データが上書きされることがある。問題は、すべてのプロセッサが複数のパーティションに専用であるとき、同様に編成された同じバッファに書き込む構成が大きくなることである。パーティション・クラッシュが生じる場合、その問題の診断を助けることがあり得る重要なデータの喪失を他のパーティションが生じさせることによって、ハイパーバイザ・コード・パス３１８におけるトレース・データが直ちに上書きされる。
【００３７】
次に、図４を参照すると、セキュリティ上の弱点を排除するようにトレース・データを管理するための構成を表す図が本発明の好適な実施例に従って示される。この実施例では、パーティション４００及びパーティション４０２が存在し、ハイパーバイザ４０４を通して管理される。パーティション４００はオペレーティング・システム４０６及びＲＴＡＳ４０８を含み、一方、パーティション４０２はオペレーティング・システム４１０及びＲＴＡＳ４１２を含む。パーティション４００又はパーティション４０２がハイパーバイザ４０４にコールを発生するとき、トレース・データがハイパーバイザ・トレース・バッファ４１８に記憶されることによって、ハイパーバイザ・コード・パス４１４及びハイパーバイザ・コード・パス４１６が生成される。
【００３８】
更に、パーティション・マネージャ４２０は、トレース・データをハイパーバイザ・トレース・バッファ４１８に記憶するコールを生成することが可能である。マシンチェック割り込みハンドラ４２２もハイパーバイザ・トレース・バッファ４１８にデータを記憶する。
【００３９】
ハイパーバイザ・トレース・バッファ４２２はエラー・バッファ４２６を含む。このバッファには、エラー・ログ４２８がある。このエラー・ログは、選択された又は特定の分析プログラムが使用し得るフォーマットを持ったエラー特有の部分を含む。なお、このログは、図示の実施例ではトレース・データを記憶するために使用し得るユーザ・エリアも含む。
【００４０】
図示の実施例では、マシンチェック例外が生じるときには、いつも、ハイパーバイザ・トレース・バッファ４１８におけるトレース・データがエラー・バッファ４２６におけるエラー・ログ４２８にコピーされる。そのコピー動作は、これらの実施例では、マシンチェック割込みハンドラ４２２によって遂行される。例外は、プログラムにおける正規の制御フローを変更する１つのエラー条件である。例外は、ハードウェア又はソフトウェアによって生成又は引き起こされることがある。ハードウェア例外は、例えば、リセット、割込み、又はメモリ管理ユニットからの信号を含む。例外は、ゼロによる除算、オーバフロー、又はアンダーフローのような数値エラーに対する演算論理ユニット又は浮動小数点ユニットによって、或いは、特権命令、予約命令、トラップ命令、又は未定義の命令のようなエラーをデコードする命令によって発生されることがある。
【００４１】
パーティション・クラッシュの大多数がマシンチェック例外を発生する。本発明の機構は、トレース・データの喪失を回避する方法でそのトレース・データを獲得及び記憶するためにこのタイプの事象を使用する。更に詳しく言えば、エラー・ログ４２８のユーザ部分はこれらの実施例では使用されない。この部分は、トレース・データを記憶するために使用される。エラー・ログの如何なる未使用部分も、又はエラー・バッファ４２６における他の未使用スペースも、ハイパーバイザ・トレース・バッファ４１８からのトレース・データを記憶するために使用可能である。マシンチェック例外が生じるたびに、マシンチェック割込みハンドラ４２２がトレース・バッファ・データをエラー・ログ４２８の未使用部分に書き込む。この特徴は、エラー・ログがすべての稼動パーティションに送られるとき、それらのデータをデバッグのために容易に利用し得るようにすることを可能にする。
【００４２】
この追加の特徴を含むためには、マシンチェック割込みハンドラ４２２に対するわずかな簡単なコーディングの変更しか必要ない。例外によって開始されるマシンチェックの間、マシンチェックを生じさせる最後のパーティション・データをハイパーバイザ・トレース・バッファ４１８からエラー・ログ４２８にコピーするために、トレース・データに対する現在のポインタが使用される。そのトレース・データは、例外が生じたパーティションからのトレース・データだけがエラー・ログ４２８にコピーされるように、フィルタされる。このフィルタリングは、これらの実施例ではハイパーバイザ４０４内のパーティション・データ・フィルタ４２４において実施される。パーティション・データ・フィルタ４２４は、ハイパーバイザ・トレース・バッファ４１８における最後のトレース・エントリにおいて見つかったパーティション識別子を調べることによって、例外が生じたパーティションを識別する。この識別子（ＩＤ）は、マシンチェック割込みハンドラ４２２によって要求されたトレース・データを弁別するために使用される。もちろん、このフィルタは、マシンチェック割込みハンドラ４２２内のような他の場所でも実装することが可能である。
【００４３】
パーティションが終了した場合、マシンチェック割込みハンドラ４２２が呼び出されるとき、パーティション・データは、依然として、ハイパーバイザ・トレース・バッファ４１８に存在するであろう。マシンチェック割込みハンドラ４２２は、デバッグを目的としてトレース・データを保存するために、トレース・データをエラー・ログ４２８にコピーする。エラー・ログ４２８における使用可能なスペースの量次第で、すべてのトレース・データがハイパーバイザ・トレース・バッファ４１８からエラー・ログ４２８にコピー可能であるわけではない。マシンチェック割込みハンドラ４２２は、すべてのトレース・データがコピーされてしまうまで、又はエラー・ログ４２８における使用可能なそれ以上のスペースがなくなるまで、データをエラー・ログ４２８にコピーする。
【００４４】
マシンチェック割込みハンドラ４２２がパーティション・トレース・データをエラー・ログ４２８にコピーした後、このログはＮＶＲＡＭ４３０のような不揮発性ストレージに書き込まれる。このログは、特殊エラー収集ルーチンによってコピーされる。そこで、このルーチンは、分析のためにこのログをすべてのアクティブなパーティションにコピーする。これらの実施例では、そのルーチンは、マシンチェック割込みハンドラの一部である。
【００４５】
次に、図５を参照すると、本発明の好適な実施例に従ってトレース・データを弁別するためのプロセスのフローチャートが示される。図５に示されたプロセスは、図４におけるパーティション・データ・フィルタ４２４のようなフィルタ・プロセスにおいて実施することが可能である。このプロセスは、図４におけるハイパーバイザ・トレース・バッファ４１８のようなトレース・バッファからのデータに対するリクエストが受領されるときに開始される。これらの実施例では、マシンチェック割込みハンドラからのリクエストが受領される。
【００４６】
プロセスは、トレース・データに対するリクエストを受けることによって開始する（ステップ５００）。次に、最後のトレース・データ・エントリにおけるパーティション識別子（ＰＩＤ）が識別される（ステップ５０２）。しかる後、そのトレース・データ・エントリが選択される（ステップ５０４）。選択されたエントリは、要求者に送られなかったエントリである。これらの実施例におけるエントリは、最も新しいものから最も古いものへと選択される。換言すると、最も新しいエントリが転送のために最初に選択される。
【００４７】
次に、選択されたトレース・データ・エントリに対するデータが検索される（ステップ５０６）。次に、データが、識別されたＰＩＤに対するものであるかどうかに関する決定が行われる（ステップ５０８）。データがその識別されたＰＩＤに対するものである場合、データはマシンチェック割込みハンドラに戻される（ステップ５１０）。次に、トレース・データに対する更なるリクエストが存在するかどうかに関する決定が行われる（ステップ５１２）。トレース・データに対する更なるリクエストが存在しない場合、プロセスは終了する。
【００４８】
ステップ５０８を再び参照すると、識別されたＰＩＤに対するデータが使用可能でない場合、次のトレース・データ・エントリが選択されてそのプロセスを処理し（ステップ５１４）、しかる後、上述のステップ５０６に戻る。ステップ５１２において、トレース・データに対する更なるリクエストが行われる場合、プロセスは、上述のステップ５１４に戻る。
【００４９】
次に図６を参照すると、本発明の好適な実施例に従って、トレース・データをエラー・ログに保存するためのプロセスのフローチャートが示される。図６に示されたプロセスは、図４におけるマシンチェック割込みハンドラ４２２のようなマシンチェック割込みハンドラにおいて具現化することが可能である。このプロセスは、マシンチェック割込みハンドラが処理すべき例外が存在するときに開始される。
【００５０】
プロセスは、プラットフォーム・ファームウェア・トレース・データに対するポインタを識別することによって開始する（ステップ６００）。このポインタは、トレース・データ・バッファにおける現在のレコードを指す。次に、トレース・データ・バッファにおけるレコードに対するトレース・データがそのトレース・データ・バッファからリクエストされる（ステップ６０２）。このポインタは、検査のためにトレース・バッファにおける種々のレコードをリクエストするようデクリメントすることが可能である。そのリクエストに応答して、トレース・データが受領されたかどうかに関する決定が行われる（ステップ６０４）。これらの例では、そのリクエストに応答して、トレース・データが戻されるか又はそれ以上のデータが存在しないという表示が戻される。そこで、トレース・データが受領された場合、このトレース・データがエラー・ログにコピーされる（ステップ６０６）。次に、エラー・ログにおいて使用可能な更なる空きがあるかどうかに関する決定が行われる（ステップ６０８）。エラー・ログにおいて使用可能な更なる空きがない場合、プロセスは終了する。
【００５１】
ステップ６０８を再び参照すると、エラー・ログにおいて使用可能な更なる空きがある場合、プロセスは、前述のステップ６０２に戻る。ステップ６０４を再び参照すると、トレース・データが受領されない場合、プロセスは終了する。
【００５２】
従って、本発明は、トレース・データを処理するための改良された方法、装置、及びコンピュータ命令を提供する。本発明の機構は、トレース・データを記憶するための存在するエラー・ログ・スペースを使用することによって、トレース・データを保存する。これらの例では、エラー・ログは、マシンチェック割込みハンドラによる使用に関連したもの又はその使用のために作成されたものである。マシンチェック割込みハンドラによって処理されるべき例外が生じるたびに、データが検索される。この機構は、パーティションからのデータのうち例外を生じさせるデータだけが戻されるように、検索されたデータを弁別する。
【００５３】
十分に機能するデータ処理システムに関連して本発明を説明したけれども、本発明のプロセスがコンピュータ可読媒体という形式で及び種々の形式で命令を配布することができること、及び、その配布を行うために実際に使用される信号保持媒体の特定のタイプに関係なく、本発明が等しく適用し得ることは当業者には明らかであろう。コンピュータ可読媒体の例は、フロッピ（商標）・ディスク、ハードディスク・ドライブ、ＲＡＭ、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭのような記録可能タイプの媒体、及び、例えば、無線周波伝送及び光波伝送のような伝送形式を使用するディジタル及びアナログ通信リンク、有線又は無線通信リンクのような伝送タイプの媒体を含む。コンピュータ可読媒体は、特定のデータ処理システムにおける実際の使用のためにデコードされるコード化フォーマットの形式を取ることも可能である。
【００５４】
図解及び説明を目的として本発明を記述した。それは、網羅的であることを意図するものではなく、開示された形式の発明に限定することを意図するものでもない。当業者には、多くの修正及び変更が明らかであろう。例えば、図示の実施例はトレース・データをエラー・ログに記憶している。このデータは、例外を処理するプロセスによってアクセス可能な任意のデータ構造で記憶されることも可能である。実施例は、発明の原理及び実用的な応用を最もよく理解するために、及び、意図する特定の用途に適した種々の修正によって当業者が種々の実施例に関して発明を理解することを可能にするために、選択及び開示したものである。
【図面の簡単な説明】
【００５５】
【図１】本発明を実装し得るデータ処理システムのブロック図である。
【図２】本発明を実装し得る例示的な論理パーティション・プラットフォームのブロック図である。
【図３】トレース・データを処理するために使用される現時点で利用可能な論理パーティション・データ処理システムにおけるコンポーネントを示す図である。
【図４】本発明の好適な実施例に従ってセキュリティ上の弱点を排除するためにトレース・データを管理するための構成を示す図である。
【図５】本発明の好適な実施例に従ってセキュリティ上の弱点を排除するためにトレース・データを管理する構成を示す図である。
【図６】本発明の好適な実施例に従ってトレース・データをエラー・ログに保存するためのプロセスを表すフローチャートを示す図である。
【図１】
0005579354.tif 000002
【図２】
0005579354.tif 000003
【図３】
0005579354.tif 000004
【図４】
0005579354.tif 000005
【図５】
0005579354.tif 000006
【図６】
0005579354.tif 000007