(57)【要約】（課題）ＯＳに障害が発生した場合、確実にメモリダンプを取得することができる情報処理装置及び情報処理装置の処理方法を提供する。（解決手段）  メモリと、メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部と、メモリをアクセスする複数のプロセッサと、複数のプロセッサ各々における利用可能なキャッシュメモリの容量を判定する判定部と、判定部の判定結果、利用可能なキャッシュメモリの容量が最も小さいプロセッサを選択する選択部と、選択部によって選択されたプロセッサに、メモリダンププログラムを実行させ、それ以外のプロセッサには、その他のソフトウエアの処理を実行させる処理部と、を有する。
2012143978.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、
前記メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部と、
前記メモリをアクセスする複数のプロセッサと、
前記複数のプロセッサ各々における利用可能なキャッシュメモリの容量を判定する判定部と、
前記判定部の判定結果、利用可能なキャッシュメモリの容量が最も小さいプロセッサを選択する選択部と、
前記選択部によって選択されたプロセッサに、前記メモリダンププログラムを実行させ、それ以外のプロセッサには、その他のソフトウエアの処理を実行させる処理部と、
を有することを特徴とする情報処理装置。
【請求項２】
前記メモリの領域を前記各プロセッサに割り当てるメモリ割り当て部を有し、
前記選択部は、前記各プロセッサのうち、前記メモリ割り当て部によって割り当てられたメモリの容量が一番小さいプロセッサを選択する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記格納部は、仮想マシンを実現するための仮想マシンプログラムを格納しており、
前記処理部は、前記選択部により選択されなかったプロセッサの各々に、仮想マシンプログラムを実行させる
事を特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
メモリと、
前記メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部と、
前記メモリをアクセスする複数のプロセッサと、
前記複数のプロセッサにおける処理能力を判定する判定部と、
前記判定部の判定結果、一番処理能力が低いプロセッサを選択する選択部と、
前記選択部によって選択されたプロセッサに、前記メモリダンププログラムを実行させ、それ以外の前記プロセッサには、その他のソフトウエアの処理を実行させる処理部と、
を有することを特徴とする情報処理装置。
【請求項５】
前記複数のプロセッサは、各々、キャッシュメモリを有し、
前記判定部は、前記各プロセッサのうち、前記キャッシュメモリの利用可能範囲が一番小さいプロセッサを選択する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記判定部は、前記各プロセッサのうち、対応するメモリの容量が一番小さいプロセッサを選択する
ことを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記格納部は、仮想マシンを実現するための仮想マシンプログラムを格納しており、
前記処理部は、前記選択部により選択されなかったプロセッサの各々に、１以上の仮想マシンプログラムを実行させる
事を特徴とする請求項４乃至６の何れか一項に記載の情報処理装置。
【請求項８】
メモリ、前記メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部、及び、前記メモリをアクセスする複数のプロセッサ、前記メモリに書き込まれているデータを一時的に格納するキャッシュを有する情報処理装置の処理方法であって、
前記複数のプロセッサ各々における利用可能なキャッシュの容量を判定し、
前記判定の結果、利用可能なキャッシュの容量が最も小さいプロセッサを選択し、
選択されたプロセッサに、前記メモリダンププログラムを実行させ、それ以外のプロセッサにはその他のソフトウエアの処理を実行させることを特徴とする情報処理装置の処理方法。
【請求項９】
前記メモリの領域を前記各プロセッサに割り当てるメモリ割り当て部を有し、
前記各プロセッサのうち、前記メモリ割り当て部によって割り当てられたメモリ全域の容量が一番小さいプロセッサを選択する
ことを特徴とする請求項８に記載の情報処理装置の処理方法。
【請求項１０】
仮想マシンを実現するための仮想マシンプログラムを格納しており、
選択されなかったプロセッサの各々に、仮想マシンプログラムを実行させる
ことを特徴とする請求項８又は９に記載の情報処理装置の処理方法。
【請求項１１】
メモリ、前記メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部、及び、前記メモリをアクセスする複数のプロセッサを有する情報処理装置の処理方法であって、
前記複数のプロセッサにおける処理能力を判定し、
前記判定の結果、一番処理能力が低い前記プロセッサを選択し、
選択された前記プロセッサに、前記メモリダンププログラムを実行させ、それ以外の前記プロセッサには、その他のソフトウエアの処理を実行させることを特徴とする情報処理装置の処理方法。
【請求項１２】
前記複数のプロセッサは、各々、キャッシュメモリを有し、
前記各プロセッサのうち、前記キャッシュメモリの利用可能範囲が一番小さいプロセッサを選択する
ことを特徴とする請求項１１に記載の情報処理装置の処理方法。
【請求項１３】
前記メモリの領域を、前記各プロセッサに割り当てるメモリ割り当て部を有し、
前記各プロセッサのうち、対応するメモリの容量が一番小さいプロセッサを選択する
ことを特徴とする請求項１１に記載の情報処理装置の処理方法。
【請求項１４】
仮想マシンを実現するための仮想マシンプログラムを格納しており、
選択されなかったプロセッサの各々に、仮想マシンプログラムを実行させる
ことを特徴とする請求項１１乃至１３の何れか一項に記載の情報処理装置の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、情報処理装置及び情報処理装置の処理方法に関する。
【背景技術】
【０００２】
コンピュータシステムのＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）に、処理を継続できないほど深刻な障害が発生した場合、該ＯＳの障害の原因究明のため、障害時のデータが採取される。採取されたデータは、格納装置に保存される。保存されたデータは、一般的にメモリダンプと呼ばれる。【０００３】
このメモリダンプの採取手段として、予めメモリダンプ採取プログラムを組み込んでおき、障害発生を検出した場合、入力手段などからの割込みにより、メモリダンプ採取プログラムを起動させメモリデータを採取する方法がある。例えばＬｉｎｕｘでは、ＯＳの核であるカーネルにおけるカーネルダンプを出力するためのクラッシュカーネルをあらかじめメモリ上に常駐させている。カーネルパニックが発生すると、通常のカーネルからクラッシュカーネルに処理が移り、カーネルダンプが取得される。【０００４】
また、他のメモリデータ採取手段として，障害時のメモリデータを保持したままコンピュータシステムをリセットし、リセット後に通常運用のＯＳとは異なるメモリデータ採取プログラムを起動して、保持されているメモリデータを採取する方法がある。リセットは、割込みの一種である。このメモリデータを保持したままコンピュータシステムをリセットする為に、通常、リセット時にコンピュータシステムの電源を落とさないＷａｒｍ  Ｒｅｓｅｔという機能が用いられる。【０００５】
従来技術として、下記の文献がある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１２９１０１号公報
【特許文献２】特開２００７−９４５３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、仮想マシンを実行する情報処理装置に於いては、仮想マシンの処理が、基盤となるＯＳと連動していない事から、基盤となるＯＳの割込みで、仮想マシン内で停止できない処理を停止させてしまう事を防止する為に、基盤となるＯＳの割込みを受け付けないようにしているものがある。【０００８】
即ち、仮想マシンを実行する情報処理装置で障害が発生した場合、メモリダンプ採取プログラムの割込みができなくなり、その結果、メモリダンプが取得できないという問題があった。【０００９】
開示の技術は、仮想マシンを実行するＯＳに障害が発生した場合においても、メモリダンプを取得することができる情報処理装置及び情報処理装置の処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の課題を解決するため、開示の技術の第１の側面によれば、
メモリと、
前記メモリのメモリダンプ処理を実行するためのメモリダンププログラムを含むソフトウエアを格納した格納部と、
前記メモリをアクセスする複数のプロセッサと、
前記複数のプロセッサ各々における利用可能なキャッシュメモリの容量を判定する判定部と、
前記判定部の判定結果、利用可能なキャッシュメモリの容量が最も小さいプロセッサを選択する選択部と、
前記選択部によって選択されたプロセッサに、前記メモリダンププログラムを実行させ、それ以外のプロセッサには、その他のソフトウエアの処理を実行させる処理部と、
を有することを特徴とする情報処理装置が提供される。
【発明の効果】
【００１１】
開示の技術によれば、専用のプロセッサがＯＳと独立して、メモリダンプ処理を行なうことができる。そのため、ＯＳに割り込み処理が効かない仮想マシンを実行している情報処理装置に於いても、メモリダンプを実行することができる。更に、キャッシュメモリを有する複数のプロセッサを備え、利用可能なキャッシュメモリが一番小さいＣＰＵをメモリダンプ用として選択する。他のプロセッサには通常処理を行わせることにより、メモリダンプを行う際の処理能力の低減を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】本実施の形態における情報処理装置の構成の一例を示す図である。
【図２】本実施の形態におけるメインメモリの構成の一例を示す図である。
【図３】本実施の形態におけるブートファームウエアの構成の一例を示す図である。
【図４】本実施の形態におけるダンプ専用ＣＰＵ選択要因を説明する図を示す。
【図５】本実施の形態におけるダンプ専用ＣＰＵ選択要因を説明する表を示す。
【図６】本実施の形態における情報処理装置の起動時のダンププログラム制御部の図を示す図である。
【図７】本実施の形態におけるダンププログラム制御部のフローチャートである。
【図８】本実施の形態におけるダンプ専用ＣＰＵの選択処理のフローチャートである。
【図９】本実施の形態における障害発生時の割込み処理を説明する図を示す。
【図１０】本実施の形態における障害発生時のメインメモリの割込み処理を説明する図を示す。
【図１１】本実施の形態における障害発生時のダンププログラム制御部の処理を説明する図を示す。
【図１２】本実施の形態における障害発生時のＳＭＭ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｍｏｄｅ）に移行した後の制御処理を示すフローチャートである。
【図１３】本実施の形態における障害発生時のメモリダンプ処理を示すフローチャートである。
【図１４】本実施の形態における障害発生時のＳＢＳＰ、ＡＰ及びダンプ専用ＣＰＵの処理を示すシーケンス図である。
【図１５】本実施の形態における障害発生時のＳＢＳＰ、ＡＰ及びダンプ専用ＣＰＵの処理を示すシーケンス図である。
【発明を実施するための形態】
【００１３】
以下、開示の技術について、図面を用いて詳細に説明する。
【００１４】
図１は、本実施の形態における情報処理装置１０００の構成の一例を示す図である。図１に示すように、情報処理装置１０００は、ノード１０〜１３、ハードディスク４００、ＮＶＲＡＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５００及び通信インタフェース７００を有する。
【００１５】
ノード１０は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００Ａ、メインメモリ２００Ａ及びキャッシュメモリ３００Ａを有する。ノード１１は、ＣＰＵ１００Ｂ、メインメモリ２００Ｂ及びキャッシュメモリ３００Ｂを有する。ノード１２は、ＣＰＵ１００Ｃ、メインメモリ２００Ｃ及びキャッシュメモリ３００Ｃを有する。ノード１３は、ＣＰＵ１００Ｄ、メインメモリ２００Ｄ及びキャッシュメモリ３００Ｄを有する。ノード１０〜１３は、バス８００によって互いに接続されている。情報処理装置１０００は、ＮＵＭＡ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）が採用されている。なお、ノード１０〜１３は同一の構造を備える。以下、ノード１０について説明し、ノード１１〜１３においてノード１０で説明した構成と同様の構成には同一符号を付し、説明を省略する。
【００１６】
ＣＰＵ１００Ａは、バス８００を介してキャッシュメモリ３００Ａと接続されている。ＣＰＵ１００Ａは、ノード１０の各種処理を実行する。
【００１７】
メインメモリ２００Ａは、バス８００を介して、キャッシュメモリ３００Ａと接続されている。メインメモリ２００Ａは、ＣＰＵ１００Ａが実行するＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラム、ノード１０を制御するプログラム２０１Ａの少なくとも一部を格納する。また、メインメモリ２００Ａは、ＣＰＵ１００Ａにおける処理に必要な各種データを格納する。
【００１８】
キャッシュメモリ３００Ａは、例えばＣＰＵ１００Ａとメインメモリ２００ＡとのＲＥＡＤ／ＷＲＩＴＥ  Ｉ／Ｏ処理（以下、単に「アクセス」という）を高速にする目的で設けられている。キャッシュメモリ３００Ａは、ＣＰＵ１００Ａのアクセスに応じてメインメモリ２００Ａに書き込むデータの一部を記憶する。キャッシュメモリ３００Ａは、ＣＰＵ１００Ａのアクセスに応じてメインメモリ２００Ａから読み出したデータの一部を記憶する。キャッシュメモリ３００Ａにデータの一部を記憶しておくことで、ＣＰＵ１００Ａは、メインメモリ２００Ａにアクセスすることなくデータをキャッシュメモリ３００Ａから読み出すことができる。なお、図１において、キャッシュメモリ１００Ａは、ＣＰＵ１００Ａと物理的に異なるキャッシュメモリとして図示されている。しかし、キャッシュメモリ３００Ａは、ＣＰＵ１００Ａに内蔵される構成にしてもよい。
【００１９】
ハードディスク４００は、バス８００を介して、ノード１０〜１３、ＮＶＲＡＭ５００及び通信インタフェース７００と接続する。ハードディスク４００は、ＯＳローダ４１０、ＯＳイメージ４２０及びダンプディスク４３０を格納する。
【００２０】
ＯＳローダ４１０は、ハードディスク４００に格納されているＯＳをメインメモリ２００Ａ〜２００Ｄに読み込ませるためのプログラムである。
【００２１】
ＯＳイメージ４２０は、メインメモリ２００Ａ〜２００Ｄのファイルの内容と構造が、それぞれ１つのファイルに格納されたデータである。
【００２２】
ダンプディスク４３０には、ＣＰＵ１００Ａ〜１００Ｄが実行するＯＳ２４０に動作を継続できないほど深刻な障害が発生した場合に、メインメモリ２００Ａ〜２００Ｄ、及び、キャッシュメモリ３００Ａ〜３００Ｄが記憶しているデータの内容が格納される。ダンプディスク４３０には、ＯＳ２４０の障害発生時に、ＣＰＵ１００Ａ〜１００Ｄのコンテキスト情報を含むデータが格納される。メインメモリ２００Ａ〜２００Ｄ、及び、キャッシュメモリ３００Ａ〜３００Ｄが格納しているデータ内容は、障害調査のための資料として使用される。ＣＰＵ１００Ａ〜１００Ｄのコンテキスト情報は、動作していた全てのＣＰＵ１００Ａ〜１００Ｄの実行状態を回復するために使用される。ダンプディスク４３０に保存されたデータは、一般的にメモリダンプと呼ばれる。
【００２３】
ＮＶＲＡＭ５００は、バス８００を介して、ノード１０〜１３、ハードディスク４００及び通信インタフェース７００と接続されている。ＮＶＲＡＭ５００は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ファームウエア５０１を格納する。
【００２４】
ＲＯＭファームウエア５０１は、ＮＶＲＡＭ５００の所定のアドレスから読み出されたブートファームウエアをメインメモリ２００Ａ〜２００Ｄに格納する。ＲＯＭファームウエア５０１は、図２に後述するブートファームウエア２１０をメインメモリ２００Ａ〜２００Ｄ上に実行可能なブートファームウエア２１０として展開する。
【００２５】
通信インタフェース７００は、情報処理装置１０００がネットワーク９００を介してシステム監視装置２０００と接続するために設けられる。通信インタフェース７００は、ノード１０〜１３、及びシステム監視装置２０００間のデータの送受信を行うインタフェースの機能を提供する。
【００２６】
システム監視装置２０００は、ネットワーク９００を介して情報処理装置１０００の通信インタフェース７００と接続されている。システム監視装置２０００は、情報処理装置１０００の電源のＯＮ又はＯＦＦを遠隔操作によって行う。システム監視装置２０００は、情報処理装置１０００のノード１０〜１３のパーティションの設定及び解除を行う。システム監視装置２０００は、ノード１０〜１３の装置情報の表示を行う。システム監視装置２０００は、ノード１０〜１３の故障箇所の指摘を行う。システム監視装置２０００は、ノード１０〜１３が有するキャッシュメモリ３００Ａ〜３００Ｄの縮退処理を、ＣＰＵ１００Ａ〜１００Ｄを使用して実行する。
【００２７】
なお、ＳＢＳＰ（Ｓｙｓｔｅｍ  Ｂｏｏｔｓｔｒａｐ  Ｐｒｏｃｅｓｓｏｒ）として動作するＣＰＵ１００Ａは、メインメモリ２００Ａ〜２００Ｄの領域を、ＣＰＵ１００Ａ〜１００Ｄにそれぞれ割り当てるメモリ割り当て部として動作する。ＳＢＳＰは、情報処理装置１０００の起動時のメイン処理を実行するＣＰＵであり、複数のＣＰＵ１００Ａ〜１００Ｄの中の１つがＳＢＳＰとして選択される。又、ＣＰＵ１００Ａ〜１００Ｄは、キャッシュメモリ３００Ａ〜３００Ｄの障害の状態に応じて、キャッシュメモリ３００Ａ〜３００Ｄの利用可能範囲を制限して使用する縮退機能を有する。
【００２８】
図２は、本実施の形態における情報処理装置１０００におけるノード１０のメインメモリ２００Ａの構成を示す図である。メインメモリ２００Ａは、ブートファームウエア２１０、ＳＭＩ（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ）ハンドラ２２０、ＯＳローダ２３０及びＯＳ２４０を格納する。なお、ノード１０のメインメモリ２００Ａは、ノード１１のメインメモリ２００Ｂ、ノード１２のメインメモリ２００Ｃ及びノード１３のメインメモリ２００Ｄと同じ構成を有する。図２において、図１で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００２９】
ブートファームウエア２１０は、ノード１０〜１３が有するメインメモリ２００Ａ〜２００Ｄの実装状態を認識する。ブートファームウエア２１０は、ＯＳローダ２３０及びＯＳ２４０をメインメモリ２００Ａ〜２００Ｄの実装環境下で動作させる。
【００３０】
ＳＭＩハンドラ２２０は、システム管理割込み（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｉｎｔｅｒｒｕｐｔ、以下「ＳＭＩ」）という割込みの一種により、ＣＰＵ１００Ａ〜１００Ｄの動作モードの一つであるシステム管理モード（Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｍｏｄｅ、以下「ＳＭＭ」）に移行する機能を備える。ＳＭＭとは、Ｉｎｔｅｌ社のｘ８６アーキテクチャに導入されているＣＰＵ１００Ａ〜１００Ｄの動作モードのうちの一つである。ＣＰＵ１００Ａ〜１００Ｄは、ＳＭＩを受信するとＳＭＭに移行する。ＳＭＭに移行したＣＰＵ１００Ａ〜１００Ｄは、ＳＭＩを実行する。ＳＭＩは、他の動作モードからはアクセスできないメインメモリ２００Ａ〜２００Ｄのメモリ空間内の独立したアドレス空間内で、ＳＭＩを処理するプログラムである。ＣＰＵ１００Ａ〜１００Ｄは、ＳＭＩの処理が完了すると、ＳＭＭ移行前のモードに戻る。
【００３１】
ＯＳローダ２３０は、ハードディスク４００に格納されているＯＳをメインメモリ２００Ａ〜２００Ｄに読み込ませるためのプログラムである。
【００３２】
ＯＳ２４０は、ＣＰＵ１００Ａが実行するプログラムである。ＯＳ２４０は、複数の種類が含まれる。ＯＳ２４０は、ＯＳ２４０上で物理マシンをエミュレートした複数の仮想マシンが動作する仮想マシンプログラムを含む。
【００３３】
ＯＳ２４０の障害発生時、ＯＳ２４０とは異なるメモリダンプ採取プログラムを起動させるためのＳＭＩが行われる。しかしながら、仮想マシンを実行させるＯＳ２４０に障害が検出された場合、ＯＳ２４０がメモリダンプ採取プログラムを起動させる為の割込みを行うと、仮想マシン内で中断されてはいけない処理が中断される事態が発生する。仮想マシン内の処理は、基盤となっているＯＳ２４０と連動していないためである。このような事態を回避するために、仮想マシンには、ＩＮＩＴによって、ＯＳ２４０上で動作する仮想マシンの処理が中断されるのを防ぐためのプロテクトが掛けられている。
【００３４】
図６に後述するダンプ専用ＣＰＵ切離し部２１１Ｂは、選択されたダンプ専用ＣＰＵを、通常運用系ＣＰＵから切り離し、ＯＳ２４０に使用させない処理を行う。ダンプ専用ＣＰＵ切離し部２１１Ｂによって、ダンプ専用ＣＰＵとして動作するＣＰＵ１００ＤがＯＳ２４０と独立して、メモリダンプ処理を行なうことができる。そのため、ＯＳ２４０に割り込み処理が効かない仮想マシンを実行している情報処理装置１０００に於いても、メモリダンプを実行することができる。
【００３５】
図３は、本実施の形態における情報処理装置１０００におけるノード１０のブートファームウエア２１０の構成を示す図である。ブートファームウエア２１０は、ダンププログラム制御部２１１及びメモリダンププログラム２１０Ｂを有する。なお、ノード１０のブートファームウエア２１０は、ノード１１〜１３のブートファームウエアと同じ構成を有する。図３において、図１及び図２で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００３６】
ダンププログラム制御部２１１は、ダンプ専用ＣＰＵ選択部２１１Ａ及びダンプ専用ＣＰＵ切離し部２１１Ｂを有する。
【００３７】
ダンプ専用ＣＰＵ選択部２１１Ａは、情報処理装置１０００の起動時にダンプ専用ＣＰＵを選択し、ダンプ専用ＣＰＵの制御を行う。
【００３８】
ダンプ専用ＣＰＵ切離し部２１１Ｂは、ＡＣＰＩ（Ａｄｖａｎｃｅｄ  Ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  Ｐｏｗｅｒ  Ｉｎｔｅｒｆａｃｅ）テーブル作成部２１１Ｂ１及びダンプ専用ループ実行部２１１Ｂ２を有する。
【００３９】
ＡＣＰＩテーブル作成部２１１Ｂ１は、ＡＣＰＩテーブルを作成する。ＡＣＰＩテーブルは、ノード１０〜１３に含まれるＣＰＵ１００Ａ〜１００Ｄ、メインメモリ２００Ａ〜２００Ｄ、及びキャッシュメモリ３００Ａ〜３００Ｄを含む情報処理装置１０００のハードウエア情報を含む。ＡＣＰＩテーブルは、ノード間の距離を表すＳＬＩＴ（Ｓｙｓｔｅｍ  Ｌｏｃａｌｉｔｙ  Ｄｉｓｔａｎｃｅ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｔａｂｌｅ）を含む。ＡＣＰＩテーブル作成部２１１Ｂ１は、作成されたＡＣＰＩテーブルを、ＯＳ２４０に通知する。
【００４０】
ダンプ専用ループ実行部２１１Ｂ２は、選択されたダンプ専用ＣＰＵに対して、ブートファームウエア２１０から待機ループする指示を行う。
【００４１】
メモリダンププログラム２１０Ｂは、選択されたダンプ専用ＣＰＵがメモリダンプを行うための機能の処理内容を記述したプログラムである。選択されたダンプ専用ＣＰＵは、メモリダンププログラム２１０Ｂを実行することにより、メモリダンプ処理を実行する。
【００４２】
図４は、本実施の形態における情報処理装置１０００のダンプ専用ＣＰＵの選択要因を説明する図である。図４において、図１〜図３で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００４３】
図４に示すように、ＮＵＭＡを適用したシステムは、ＣＰＵ１００Ａ〜１００Ｄ、メインメモリ２００Ａ〜２００Ｄ及びキャッシュメモリ３００Ａ〜３００Ｄを含むノード１０〜１３を有する。ＮＵＭＡにおいて、ノード１０〜１３は、インターコネクトとして機能するバス８００によって接続される。ＣＰＵ１００Ａ〜１００Ｄは、ノード１０〜１３に含まれるメインメモリ２００Ａ〜２００Ｄを使用することができる。
【００４４】
ＳＢＳＰとして動作するＣＰＵ１００Ａを基準とした場合、ノード１０内のメインメモリ２００Ａは、ローカルメモリと呼ばれる。また、ノード１１〜１３のメインメモリ２００Ｂ〜２００Ｄは、ＣＰＵ１００Ａから見たリモートメモリと呼ばれる。ＮＵＭＡにおいて、ＣＰＵ１００Ａを基準とした場合、ローカルメモリであるメインメモリ２００Ａに対するアクセス時間は、リモートメモリであるメインメモリ２００Ｂ〜２００Ｄに対するアクセス時間よりも短くなる。また、ＣＰＵ１００Ａのリモートメモリであるメインメモリ２００Ｂ〜２００Ｄに対するアクセス時間は、ＳＢＳＰを含むノードから各ノードまでの距離に比例して長くなる。
【００４５】
また、ノード１０〜１３の各メインメモリ２００Ａ、２００Ｂ、２００Ｃ及び２００Ｄそれぞれのメモリ全域の容量及びＣＰＵ１００Ａ〜１００Ｄの状態が均一である場合がある。このような場合、上述したＮＵＭＡの特性を考慮した上で、ＳＢＳＰのＣＰＵ１００Ａを含むノードから一番離れたノードであるノード１３にあるＣＰＵ１００Ｄがダンプ専用ＣＰＵとして選択される。ＣＰＵ１００Ａを基準としてダンプ専用ＣＰＵが選択される理由は、ＯＳ２４０のカーネルを運用する際の核となるデータが、ＣＰＵ１００Ａのローカルメモリを中心に、ＳＢＳＰとして動作するＣＰＵ１００Ａから近いリモートメモリに格納されるからである。更に、ＯＳ２４０のカーネルへのアクセス時間の長短が、ノード１０〜１２の性能に直接影響を与えるためである。即ち、ダンプ専用ＣＰＵは、メモリアクセス遅延等を考慮した上で決定される。また、ＣＰＵに対応するキャッシュメモリが縮退して性能的に劣ったＣＰＵを、通常運用系ＣＰＵで使用する代わりにダンプ専用ＣＰＵとして使用した方がよい場合もある。
【００４６】
なお、ノード１０のＣＰＵ１００Ａは、ＳＢＳＰとして動作する。ＳＢＳＰとして動作するＣＰＵ１００Ａと、ダンプ専用として動作するＣＰＵ１００Ｄ以外のＣＰＵ１００Ｂ〜１００Ｃは、ＳＢＳＰに従って動作するＡＰ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｃｅｓｓｏｒ）となる。
【００４７】
ノードのメインメモリのメモリ実装容量が他のノードに比べて少ない場合、又は、ノード１１〜１３のキャッシュメモリ３００Ｂ〜３００Ｄが縮退している場合も考慮してダンプ専用ＣＰＵを選択する。ノード１２のメインメモリ２００Ｃのメモリ全域の容量が、ノード１１のメインメモリ２００Ｂ及びノード１３のメインメモリ２００Ｄのメモリ全域の容量よりも小さい場合がある。ローカルメモリの容量が小さいとリモートメモリに対するアクセスが増加するため、メモリ容量を考慮してダンプ専用ＣＰＵを選択する。又、ノード１３のキャッシュメモリ３００Ｄが縮退している場合がある。キャッシュメモリが縮退していると、縮退が存在しないキャッシュメモリに対するアクセスが増加するため、キャッシュメモリの縮退の有無を考慮してダンプ専用として動作するＣＰＵを選択する。キャッシュメモリ３００Ｄの縮退は、キャッシュメモリ３００Ｄのキャッシュブロックの部分故障に伴い、故障箇所が縮退されることにより発生する。ダンプ専用ＣＰＵは、上述したノード１１〜１３のキャッシュメモリ３００Ｂ〜３００Ｄの縮退の有無、メインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量の大小、ＡＣＰＩのＳＬＩＴに基づいて選択される。なお、ノード１０〜１３は同一の構造を備える。ノード１０〜１３にある全ＣＰＵのうち、何れか１つがダンプ専用ＣＰＵとして選択されても、運用ＯＳに依存せずにメモリダンプを実行することができる。
【００４８】
図５は、本実施の形態における情報処理装置１０００におけるダンプ専用ＣＰＵの選択要因を説明する表を示す。図５における各データは、図４において前述した本実施の形態におけるダンプ専用ＣＰＵ選択要因に対応している。図５において、図１〜図４で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００４９】
図５に示すように、ノード１０のＳＬＩＴで表すＳＢＳＰからの距離は１０である。ノード１０のメインメモリ２００Ａにおけるメモリ全域の容量は２５６ＧＢである。ノード１０のキャッシュメモリ３００Ａにおけるキャッシュメモリ容量は２４ＭＢである。ノード１１のＳＬＩＴで表すＳＢＳＰからの距離は１１である。ノード１１のメインメモリ２００Ｂにおけるメモリ全域の容量は２５６ＧＢである。ノード１１のキャッシュメモリ３００Ｂにおけるキャッシュメモリ容量は２４ＭＢである。ノード１２のＳＬＩＴで表すＳＢＳＰからの距離は１３である。ノード１２のメインメモリ２００Ｃにおけるメモリ全域の容量は６４ＧＢである。ノード１２のキャッシュメモリ３００Ｃにおけるキャッシュメモリ容量は２４ＭＢである。ノード１３のＳＬＩＴで表すＳＢＳＰからの距離は１２である。ノード１３のメインメモリ２００Ｄにおけるメモリ全域の容量は１２８ＧＢである。ノード１３のキャッシュメモリ３００Ｄは、縮退している。そのため、キャッシュメモリ３００Ｄにおけるキャッシュメモリ容量は２１ＭＢである。
【００５０】
図５に示すように、ノード１１〜１３において、キャッシュメモリ３００Ｂ〜３００Ｄの縮退の有無を比較すると、ノード１３のキャッシュメモリ３００Ｄが縮退していることが分かる。キャッシュメモリ３００Ｂ〜３００Ｄの縮退の有無をダンプ専用ＣＰＵの選択基準とした場合、ノード１３のＣＰＵ１００Ｄがダンプ専用ＣＰＵとして選択される。即ち、キャッシュメモリを有する複数のプロセッサを備え、利用可能なキャッシュメモリが一番小さいＣＰＵをメモリダンプ用として選択する。他のプロセッサには通常処理を行わせることにより、メモリダンプを行う際の処理能力の低減を抑制できる。
【００５１】
また、ノード１１〜１３において、メインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量を比較すると、ノード１２のメインメモリ２００Ｃのメイン全域の容量が一番小さいことが分かる。メインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量の大小をダンプ専用ＣＰＵの選択基準とした場合、ノード１２のＣＰＵ１００Ｃがダンプ専用ＣＰＵとして選択される。また、ノード１１〜１３において、ＳＢＳＰを含むノードから一番遠いノードに含まれるＣＰＵは、ノード１３のＣＰＵ１００Ｄである。ＡＣＰＩのＳＬＩＴに基づいてダンプ専用ＣＰＵが選択される場合、一番遠いＣＰＵ１００Ｄがダンプ専用ＣＰＵとして選択される。
【００５２】
図６は、本実施の形態における情報処理装置１０００の起動時におけるダンププログラム制御部の処理を説明する図である。図６において、図１〜図５で説明した構成と同様の構成には同一の符号を付し、説明を省略する。図６は、ブートファームウエア２１０について説明する図である。
【００５３】
図６に示すように、ダンププログラム制御部２１１のダンプ専用ＣＰＵ選択部２１１Ａは、情報処理装置１０００の電源投入後、ノード１１〜１３のＣＰＵ１００Ｂ〜１００Ｄから、ダンプ専用ＣＰＵを１つ選択する。
【００５４】
ダンプ専用ＣＰＵ切離し部２１１Ｂは、選択されたダンプ専用ＣＰＵを、通常運用系ＣＰＵから切り離し、ＯＳ２４０に使用させない処理を行う。ＡＣＰＩテーブル作成部２１１Ｂ１は、ＡＣＰＩテーブルを作成する際に、ダンプ専用ＣＰＵを除いたＡＣＰＩテーブルを作成する。次いで、ダンプ専用ループ実行部２１１Ｂ２は、選択されたダンプ専用ＣＰＵに対して、ブートファームウエア２１０から待機ループする指示を行う。
【００５５】
ダンプ専用ＣＰＵ切離し部２１１Ｂによって、ダンプ専用ＣＰＵとして動作するＣＰＵ１００ＤがＯＳ２４０と独立して、メモリダンプ処理を行なうことができる。そのため、ＯＳ２４０に割り込み処理が効かない仮想マシンを実行している情報処理装置１０００に於いても、メモリダンプを実行することができる。
【００５６】
次いで、ＯＳローダ２３０は、ハードディスク４００に格納されているＯＳをメインメモリ２００Ａ〜２００Ｄに読み込ませる。メインメモリ２００Ａ〜２００Ｄに読み込まれたＯＳ２４０は、ＣＰＵ１００Ａによって実行される。実行されるＯＳ２４０は、複数の種類が含まれる。ＯＳ２４０は、ＯＳ２４０上で物理マシンをエミュレートした複数の仮想マシンが動作する仮想マシンプログラムを含む。
【００５７】
図７は、本実施の形態におけるダンププログラム制御部２１１の処理を説明する図である。図７において、図１〜図６で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００５８】
図７に示すように、ダンププログラム制御部２１１は、ダンプ専用ＣＰＵを選択する（ＯＰ１）。次いで、ダンププログラム制御部２１１は、ＡＣＰＩテーブルを作成する（ＯＰ２）。
【００５９】
図８は、本実施の形態におけるダンププログラム制御部２１１のダンプ専用ＣＰＵの選択処理を説明する図である。なお、本実施の形態において、ＣＰＵ１００ＡはＳＢＳＰとして予め選択されている。図８において、図１〜図７で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００６０】
図８に示すように、ダンププログラム制御部２１１は、ノード１１〜１３におけるメインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量を確認する（ＯＰ１１）。次いで、ダンププログラム制御部２１１は、ノード１１〜１３におけるメインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量が全て同じであるか判断する（ＯＰ１２）。メインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量が全て同じである場合（ＯＰ１２  Ｙ）、ダンププログラム制御部２１１は、ノード１１〜１３のキャッシュメモリ３００Ｂ〜３００Ｄにおける縮退の有無を確認する（ＯＰ１３）。なお、メインメモリ２００Ｂ〜２００Ｄのメモリ全域の容量が全て同じではない場合（ＯＰ１２  Ｎ）、ダンププログラム制御部２１１は、メインメモリ２００Ｂ〜２００Ｄのうち、メモリ全域の容量が最小であるメインメモリが複数あるか確認する（ＯＰ１８）。
【００６１】
ノード１１〜１３のキャッシュメモリ３００Ｂ〜３００Ｄにおける縮退の有無を確認した後（ＯＰ１３）、ダンププログラム制御部２１１は、ノード１１〜１３のキャッシュメモリ３００Ｂ〜３００Ｄにおける縮退が存在するか確認する（ＯＰ１４）。キャッシュメモリ３００Ｂ〜３００Ｄにおける縮退が存在しない場合（ＯＰ１４  Ｎ）、ダンププログラム制御部２１１は、メモリ全域の容量が最小である複数のメインメモリ間において、ＳＬＩＴを確認する（ＯＰ１５）。キャッシュメモリ３００Ｂ〜３００Ｄのいずれかに縮退が存在する場合（ＯＰ１４  Ｙ）、ダンププログラム制御部２１１は、縮退しているキャッシュメモリが複数存在するか確認する（ＯＰ２０）。
【００６２】
キャッシュメモリ３００Ｂ〜３００Ｄにおける縮退が存在しない場合（ＯＰ１４  Ｎ）、ダンププログラム制御部２１１は、ＳＢＳＰのＣＰＵ１００ＡであるＳＬＩＴ番号を確認する（ＯＰ１５）。ダンププログラム制御部２１１は、ＣＰＵ１００Ｂ〜１００Ｄのうち、ＳＢＳＰのＣＰＵ１００Ａから一番遠いＣＰＵを選択する（ＯＰ１６）。次いで、ダンププログラム制御部２１１は、ＳＢＳＰのＣＰＵ１００Ａから一番遠いＣＰＵを、ダンプ専用ＣＰＵとして選択する（ＯＰ１７）。
【００６３】
なお、メインメモリ２００Ｂ〜２００Ｄのうち、メモリ全域の容量が最小であるメインメモリが複数ある場合（ＯＰ１８  Ｙ）、ダンププログラム制御部２１１は、メモリ全域の容量が最小であるメインメモリを含むノードのキャッシュメモリの中で、縮退しているキャッシュメモリがあるか確認する（ＯＰ１９）。メモリ全域の容量が最小であるメインメモリが複数存在しない場合（ＯＰ１８  Ｎ）、ダンププログラム制御部２１１は、ＯＰ１７の処理に移行する。
【００６４】
また、縮退しているキャッシュメモリが複数存在する場合（ＯＰ２０  Ｙ）、ダンププログラム制御部２１１は、メモリ全域の容量が最小である複数のメインメモリ、且つ縮退しているキャッシュメモリが存在するノードの中で、ＳＢＳＰのＣＰＵ１００Ａから一番遠いＣＰＵを選択する（ＯＰ２１）。縮退しているキャッシュメモリが複数存在しない場合（ＯＰ２０  Ｎ）、ダンププログラム制御部２１１は、縮退しているキャッシュメモリが存在するノード内のＣＰＵをダンプ専用ＣＰＵとして選択する（ＯＰ１７）。
【００６５】
図９は、本実施の形態における障害発生時の割込み処理を説明する図を示す。図９において、図１〜図８で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００６６】
図９において、ノード１０のＣＰＵ１００ＡがＳＢＳＰとして動作する。ノード１１のＣＰＵ１００Ｂ及びノード１２のＣＰＵ１００Ｃは、ＡＰとして動作する。ＡＰとして動作するＣＰＵ１００Ｂ及びＣＰＵ１００Ｃは、仮想マシンがＯＳ上で動作する。ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄには、ブートファームウエア２１０によって、ＳＩＰＩ（Ｓｔａｒｔｕｐ  Ｉｎｔｅｒ−Ｐｒｏｃｅｓｓｏｒ  Ｉｎｔｅｒｒｕｐｔ）の発行待ちの指示が発行される。ＳＩＰＩは、情報処理装置１０００のマルチプロセッサ構成において、ＳＢＳＰとして動作するＣＰＵ１００Ａが、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄを起動する為に使用される割込みである。
【００６７】
図９に示すように、ノード１０において仮想マシンがＯＳ上で稼動している時に、ＯＳの障害により、情報処理装置１０００の処理が停止したとする。このような場合、システム監視装置２０００は、情報処理装置１０００の全ＣＰＵに対し、メモリダンプを実行させるためにＳＭＩを発行する。
【００６８】
図１０は、本実施の形態における障害発生時のメインメモリの割込み処理を説明する図を示す。図１０において、図１〜図９で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００６９】
図１０に示すように、ノード１０においてＯＳに障害が発生した後、システム監視装置２０００は、全ＣＰＵに対し、メモリダンプを実行させるためにＳＭＩを発行する。ＳＭＩの発行を受けたＣＰＵは、情報処理装置１０００の制御をＳＭＭへ移行させる。ＳＭＭに移行したＳＢＳＰであるＣＰＵ１００Ａは、ＳＭＩを実行する。ＳＭＩは、他の動作モードからはアクセスできないメインメモリ２００Ａ〜２００Ｄのメモリ空間内の独立したアドレス空間内でＳＭＩを処理するプログラムである。全ＣＰＵは、ＳＭＩハンドラ２２０の処理が完了すると、ＳＭＭ移行前のモードに戻る。
【００７０】
図１１は、本実施の形態における障害発生時のダンププログラム制御部の処理を説明する図を示す。ＳＭＩハンドラ２２０は、割込み要因判定部２２１、ＳＢＳＰ切換え部２１２、及びＩＮＩＴ発行部２１３を有する。ブートファームウエア２１０は、メモリメモリ２１０Ｂを有する。ハードディスク４００は、ダンプディスク４３０を有する。図１１において、図１〜図１０で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００７１】
ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、ノード１０のＯＳ２４０において処理を継続できないほど深刻な障害であるシステムハングやＯＳパニックの発生を検出すると、ＯＳの障害の原因究明のため、必要となるシステムメモリのダンプを行う。システムメモリのダンプが必要な場合、最初に、システム監視装置２０００がＳＭＩを発生させてＳＭＩハンドラ２２０へと制御を移行させる。
【００７２】
割込み要因判定部２２１は、最初に，割込み要因判定処理を実行する。割込み要因判定部２２１は、割込みが何の要因で発生したか確認する。具体的には、割込み要因判定部２２１は、割込みが、ダンプ指示の割込みで発生したか確認する。
【００７３】
ＳＢＳＰ切換え部２１２は、今まで待機ループしていたダンプ専用ＣＰＵであるＣＰＵ１００ＤをＳＢＳＰに切り替える処理を行う。また，ＳＢＳＰ切換え部２１２は、通常運用系ＣＰＵ（１００Ａから１００Ｃ）を全て待機ループするように切り替える処理を行う。ＳＢＳＰとして動作するＣＰＵ１００Ａは、仮想マシンモードで動作していないダンプ専用ＣＰＵであるＣＰＵ１００Ｄのみ動作するように切り替える指示を、ＣＰＵ１００Ｄに対して発行する。そのため、ＳＢＳＰ切換え部２１２は、ＣＰＵ１００Ｄによって、ＩＮＩＴ割込みを実行できる環境を創出できる。ＩＮＩＴ割込み処理は、システムハングやＯＳパニックなどの障害が発生したノード１０のＯＳ２４０を初期化するための割込み処理である。
【００７４】
ＩＮＩＴ発行部２１３は、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄに対してＩＮＩＴ割込みを発行する。ＣＰＵ１００Ｄは、ＩＮＩＴ割込みによって実行アドレスがリセットエントリに移行される。つまり，ＣＰＵ１００Ｄは、情報処理装置１０００のリセット時に情報処理装置１０００の電源を落とさないＷａｒｍ  Ｒｅｓｅｔを実施せずに、メモリダンプ処理をブートファームウエア２１０に移行できる。Ｘｅｎなどの仮想ＯＳが動作していた環境では、ＣＰＵ１００Ｄのみがリセットエントリに移行される。リセットエントリは、ＳＭＩハンドラ２２０のＩＮＩＴ発行部２１３によって起動される。リセットエントリは、障害が発生したノード１０のＣＰＵ１００Ａ、及び、リセット時に初期化が必要であるノード１０の周辺デバイスであるメインメモリ２００Ａ及びキャッシュメモリ３００Ａに対して初期化を実行する処理である。
【００７５】
ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、ブートファームウエア２１０におけるメモリダンププログラム２１０Ｂを実行する。ＣＰＵ１００Ｄは、メモリダンププログラム２１０Ｂを実行することにより、障害が発生したノード１０のメインメモリ２００Ａのデータを、予め指定されているダンプディスク４３０にダンプする。
【００７６】
図１２は、本実施の形態における障害発生時のＳＭＭに移行した後の制御処理を示すフローチャートである。図１２において、図１〜図１１で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００７７】
図１２に示すように、ＳＭＭに移行したＣＰＵは、最初にＣＰＵコンテキスト情報を退避する処理を実行する（ＯＰ３１）。ＣＰＵがＣＰＵコンテキスト情報を退避させる領域は、障害が発生したノード１０のＯＳ２４０から存在が見えないメモリ空間である。
【００７８】
ＳＢＳＰは、割込みの要因を特定する為の割込み要因判定処理を実行する（ＯＰ３２）。割込み要因判定処理は、メモリダンプが指示されたか否かを判定する処理である。割込み要因がメモリダンプ指示であることが特定されると、ＳＢＳＰは、最初に、ＮＶＲＡＭ５００に、メモリダンプ指示フラグを作成する。メモリダンプ指示フラグは、ノード１０のＯＳ２４０のリセット実行後の起動がノーマル起動なのか、又はメモリダンプ用の起動なのかを特定する為に使用される。又、ＳＢＳＰは、ＣＰＵコンテキストが退避した領域のメモリアドレスをＮＶＲＡＭ５００に格納する。
【００７９】
ＳＢＳＰであるＣＰＵ１００Ａは、ＳＢＳＰ切換え処理を実行する（ＯＰ３３）。ＳＢＳＰ切換え処理は、ＳＢＳＰとして動作していたＣＰＵ１００Ａを待機ループさせ、ダンプ専用ＣＰＵとして動作するＣＰＵ１００ＤをＳＢＳＰとして動作させる処理である。
【００８０】
ＣＰＵ１００Ｄは、ＩＮＩＴ発行処理を実行する（ＯＰ３４）。ＩＮＩＴ発行処理は、ダンプ専用ＣＰＵとして動作するＣＰＵ１００ＤがＩＮＩＴを発行し、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄの処理をリセットエントリに移行させる処理である。
【００８１】
図１３は、本実施の形態における障害発生時のメモリダンプ処理を示すフローチャートである。図１３は、リセットエントリからメモリダンプまでの処理を示すフローチャートである。図１３において、図１〜図１２で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００８２】
図１３に示すように、ＣＰＵ１００Ｄは、リセットエントリへ処理が移ると、始めにメモリダンプ判定処理を実行する（ＯＰ４１）。ＣＰＵ１００Ｄは、ＮＶＲＡＭ５００に保存されたメモリダンプ指示フラグを確認する。ＣＰＵ１００Ｄは、メモリダンプ指示フラグを確認することによって、ＯＳ２４０のリセット実行後の起動がノーマル起動なのか、又はメモリダンプ用の起動なのかを確認する。
【００８３】
ＣＰＵ１００Ｄは、メモリ初期化スキップ処理を実行する（ＯＰ４２）。ＣＰＵ１００Ｄは、ＯＳ２４０のリセット実行後の起動がメモリダンプのための起動であることを確認すると、ノーマル起動の場合に行われるメインメモリ２００Ａ〜２００Ｄの初期化を行わずにスキップする。
【００８４】
ＣＰＵ１００Ｄは、メモリダンププログラムを実行する（ＯＰ４３）。ＣＰＵ１００Ｄは、不図示のＩ／Ｏの初期化などが行われた後、メモリダンププログラムを実行する。ＣＰＵ１００Ｄは、メインメモリ２００Ａ〜２００Ｄのメモリダンプを実行する。ＣＰＵ１００Ｄは、メモリダンプを実行する際に、予め退避させたＣＰＵコンテキスト情報を採取する。メモリダンプの完了後、ＣＰＵ１００Ｄは、ＮＶＲＡＭ５００に格納されたメモリダンプ指示フラグをクリアする。
【００８５】
図１４〜図１５は、本実施の形態における障害発生時のＳＢＳＰとして動作するＣＰＵ１００Ａ、ＡＰとして動作するＣＰＵ１００Ｂ及びダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄの処理を示すシーケンス図である。図１４のＡに示す処理は図１５のＡに続いている。図１４〜図１５において、ＳＢＳＰとして動作するＣＰＵ１００Ａ、ＡＰとして動作するＣＰＵ１００Ｂは、ＯＳ２４０を運用する。図１４〜図１５において、図１〜図１３で説明した構成と同様の構成には同一の符号を付し、説明を省略する。
【００８６】
図１４に示すように、ＯＳ２４０の運用時（ＯＰ５１）、ＳＢＳＰとして動作するＣＰＵ１００Ａは通常動作を行う（ＯＰ５２）。ＯＳ２４０の運用時（ＯＰ５１）、ＡＰとして動作するＣＰＵ１００Ｂは、ＳＢＳＰとして動作するＣＰＵ１００Ａと同様に通常動作を行う（ＯＰ５３）。ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄには、ブートファームウエア２１０によって、ＳＩＰＩの発行待ちの指示が発行される（ＯＰ５４）。
【００８７】
ＯＳ２４０に、システムハングやＯＳパニックなどの障害が発生すると（ＯＰ５５）、ＳＢＳＰとして動作するＣＰＵ１００Ａは、ＯＳ２４０上でハングアップする（ＯＰ５６）。ＡＰとして動作するＣＰＵ１００Ｂは、システムハングやＯＳパニックなどの障害が発生すると（ＯＰ５５）、ＳＢＳＰとして動作するＣＰＵ１００Ａと同様に、ＯＳ２４０上でハングアップする（ＯＰ５７）。
【００８８】
システム監視装置２０００は、ＯＳ２４０の障害を検出すると、ＳＢＳＰとして動作するＣＰＵ１００Ａ、ＡＰとして動作するＣＰＵ１００Ｂ、及び、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄに対してＳＭＩを発行する（ＯＰ５８）。ＳＭＩが発行されたＳＢＳＰとして動作するＣＰＵ１００Ａ、ＡＰとして動作するＣＰＵ１００Ｂ、及び、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、ＳＭＭに移行する（ＯＰ５９）。
【００８９】
ＳＭＭにおいて、ＳＢＳＰとして動作するＣＰＵ１００Ａは、図１２のＯＰ３２で前述した割込み要因判定処理を実行する（ＯＰ６０）。なお、ＯＰ６０において、割込み要因がメモリダンプではないと判定された場合は，ＳＭＭではＳＢＳＰとして動作するＣＰＵ１００Ａのみ動作する。ＣＰＵ１００Ａのメモリダンプ完了後、ＣＰＵ１００Ｂ及びＣＰＵ１００Ｄは、ＮＶＲＡＭ５００に格納されたＣＰＵコンテキストのリストアを実施したあと、割込み前の処理へと復帰する。
【００９０】
ＳＭＭに移行したＡＰとして動作するＣＰＵ１００Ｂは、待機ループに移行する（ＯＰ６１）。ＳＭＭに移行したダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、ＡＰとして動作するＣＰＵ１００Ｂと同様に、待機ループに移行する（ＯＰ６２）。
【００９１】
ＳＢＳＰとして動作するＣＰＵ１００Ａは、図１２のＯＰ３３で前述したＳＢＳＰの切換え処理を実行する（ＯＰ６３）。ＳＢＳＰとして動作するＣＰＵ１００Ａは、ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄに対して、ＳＢＳＰとして動作する切換え命令を発行する。ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、ＣＰＵ１００Ａから発行された切換え命令に基づいて、ＳＢＳＰとしての動作を開始する（ＯＰ６４）。切換え命令を発行したＣＰＵ１００Ａは、待機ループに移行する（ＯＰ６５）。
【００９２】
ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、全ＣＰＵに対して、図１２のＯＰ３４で前述したＩＮＩＴ命令を発行する（ＯＰ７１）。ＣＰＵ１００Ｄは、ＩＮＩＴ命令の発行後、図１１で前述したリセットエントリ処理に移行する（ＯＰ７２）。
【００９３】
ダンプ専用ＣＰＵとして動作するＣＰＵ１００Ｄは、図１３のＯＰ４１で前述したメモリダンプ判定処理を行う（ＯＰ７３）。次いで、ＣＰＵ１００Ｄは、図１３のＯＰ４２で前述したメモリ初期化スキップ処理を実行する（ＯＰ７４）。ＣＰＵ１００Ｄは、図１３のＯＰ４３で前述したメモリダンププログラムを実行する（ＯＰ７５）。
【産業上の利用可能性】
【００９４】
本実施の形態に開示の技術によれば、ダンプ専用ＣＰＵとして動作するＣＰＵ１００ＤがＯＳ２４０と独立して、メモリダンプ処理を行なうことができる。そのため、ＯＳ２４０に割り込み処理が効かない仮想マシンを実行している情報処理装置１０００に於いても、メモリダンプを実行することができる。【００９５】
更に、キャッシュメモリを有する複数のプロセッサを備え、利用可能なキャッシュメモリが一番小さいＣＰＵをメモリダンプ用として選択する。他のプロセッサには通常処理を行わせることにより、メモリダンプを行う際の処理能力の低減を抑制できる。
【符号の説明】
【００９６】
１０〜１３  ノード
１００Ａ〜１００Ｄ  ＣＰＵ
２００Ａ〜２００Ｄ  メインメモリ
２０１Ａ〜２０１Ｄ  プログラム
２１０  ブートファームウエア
２１０Ｂ  メモリダンププログラム
２１１  ダンププログラム制御部
２１１Ａ  ダンプ専用ＣＰＵ選択部
２１１Ｂ１  ＡＣＰＩテーブル作成部
２１１Ｂ２  ダンプ専用ループ実行部
２１２  ＳＢＳＰ切換え部
２１３  ＩＮＩＴ発行部
２２０  ＳＭＩハンドラ
２２１  割込み要因判定部
２３０  ＯＳローダ
２４０  ＯＳ
３００Ａ〜３００Ｄ  キャッシュメモリ
４００  ハードディスク
４１０  ＯＳローダ
４２０  ＯＳイメージ
４３０  ダンプディスク
５００  ＮＶＲＡＭ
５０１  ＲＯＭファームウエア
７００  通信インタフェース
８００  バス
９００  ネットワーク
１０００  情報処理装置
２０００  システム監視装置
【図１】
2012143978.tif 000003
【図２】
2012143978.tif 000004
【図３】
2012143978.tif 000005
【図４】
2012143978.tif 000006
【図５】
2012143978.tif 000007
【図６】
2012143978.tif 000008
【図７】
2012143978.tif 000009
【図８】
2012143978.tif 000010
【図９】
2012143978.tif 000011
【図１０】
2012143978.tif 000012
【図１１】
2012143978.tif 000013
【図１２】
2012143978.tif 000014
【図１３】
2012143978.tif 000015
【図１４】
2012143978.tif 000016
【図１５】
2012143978.tif 000017
【手続補正書】
【提出日】平成25年11月29日(2013.11.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
メモリと、
キャッシュメモリを有し、前記メモリをアクセスする複数のプロセッサと、
前記複数のプロセッサのうち、前記キャッシュメモリの容量が最も小さいプロセッサを選択する選択部と、
を有し、前記選択部によって選択された前記プロセッサが、前記メモリのメモリダンプ処理を実行することを特徴とする情報処理装置。
【請求項２】
前記メモリの領域を前記各プロセッサに割り当てるメモリ割り当て部を有し、
前記選択部は、前記各プロセッサのうち、前記メモリ割り当て部によって割り当てられたメモリの容量が一番小さいプロセッサを選択することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択部により選択されなかったプロセッサの各々が、仮想マシンプログラムを実行することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
メモリと、
前記メモリをアクセスする複数のプロセッサと、
前記メモリの領域を前記各プロセッサに割り当てるメモリ割り当て部と、
前記複数のプロセッサのうち、割り当てられた前記メモリの容量が最も小さいプロセッサを選択する選択部と
を有し、前記選択部によって選択された前記プロセッサが、前記メモリのメモリダンプ処理を実行することを特徴とする情報処理装置。
【請求項５】
前記複数のプロセッサは、各々、キャッシュメモリを有し、
前記選択部は、前記各プロセッサのうち、前記キャッシュメモリの利用可能範囲が一番小さいプロセッサを選択することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記メモリの領域を前記各プロセッサに割り当てるメモリ割り当て部を更に有することを特徴とする請求項４に記載の情報処理装置。
【請求項７】
前記選択部により選択されなかったプロセッサの各々が、１以上の仮想マシンプログラムを実行する事を特徴とする請求項４乃至６の何れか一項に記載の情報処理装置。
【請求項８】
メモリ、及び、前記メモリをアクセスする複数のプロセッサ、前記メモリに書き込まれているデータを一時的に格納するキャッシュを有する情報処理装置の処理方法であって、
利用可能なキャッシュの容量が最も小さいプロセッサを選択し、
選択されたプロセッサに、前記メモリのメモリダンプ処理を実行させることを特徴とする情報処理装置の処理方法。
【請求項９】
前記メモリの領域を前記各プロセッサに割り当て、
前記各プロセッサのうち、割り当てられたメモリ全域の容量が一番小さいプロセッサを選択することを特徴とする請求項８に記載の情報処理装置の処理方法。
【請求項１０】
選択されなかったプロセッサの各々に、仮想マシンプログラムを実行させることを特徴とする請求項８又は９に記載の情報処理装置の処理方法。
【請求項１１】
メモリ、及び、前記メモリをアクセスする複数のプロセッサを有する情報処理装置の処理方法であって、
前記複数のプロセッサのうち、一番処理能力が低い前記プロセッサを選択し、
選択された前記プロセッサに、前記メモリのメモリダンプ処理を実行させることを特徴とする情報処理装置の処理方法。
【請求項１２】
前記複数のプロセッサは、各々、キャッシュメモリを有し、
前記各プロセッサのうち、前記キャッシュメモリの利用可能範囲が一番小さいプロセッサを選択することを特徴とする請求項１１に記載の情報処理装置の処理方法。
【請求項１３】
前記メモリの領域を、前記各プロセッサに割り当て、
前記各プロセッサのうち、割り当てられたメモリの容量が一番小さいプロセッサを選択することを特徴とする請求項１１に記載の情報処理装置の処理方法。
【請求項１４】
選択されなかったプロセッサの各々に、仮想マシンプログラムを実行させることを特徴とする請求項１１乃至１３の何れか一項に記載の情報処理装置の処理方法。
【国際調査報告】
2012143978.tif 000018
2012143978.tif 000019
2012143978.tif 000020
2012143978.tif 000021