IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 株式会社富士通エフサスの特許一覧

特開2025-6761情報処理装置、ログ保存方法およびプログラム
<>
  • 特開-情報処理装置、ログ保存方法およびプログラム 図1
  • 特開-情報処理装置、ログ保存方法およびプログラム 図2
  • 特開-情報処理装置、ログ保存方法およびプログラム 図3
  • 特開-情報処理装置、ログ保存方法およびプログラム 図4
  • 特開-情報処理装置、ログ保存方法およびプログラム 図5
  • 特開-情報処理装置、ログ保存方法およびプログラム 図6
  • 特開-情報処理装置、ログ保存方法およびプログラム 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2025006761
(43)【公開日】2025-01-17
(54)【発明の名称】情報処理装置、ログ保存方法およびプログラム
(51)【国際特許分類】
   G06F 11/07 20060101AFI20250109BHJP
【FI】
G06F11/07 181
G06F11/07 140A
G06F11/07 178
【審査請求】未請求
【請求項の数】9
【出願形態】OL
(21)【出願番号】P 2023107745
(22)【出願日】2023-06-30
(71)【出願人】
【識別番号】598057291
【氏名又は名称】エフサステクノロジーズ株式会社
(74)【代理人】
【識別番号】110004185
【氏名又は名称】インフォート弁理士法人
(72)【発明者】
【氏名】坂上 洋一
(72)【発明者】
【氏名】山口 博史
【テーマコード(参考)】
5B042
【Fターム(参考)】
5B042JJ36
5B042KK02
5B042KK07
5B042KK20
5B042MA06
5B042MA08
5B042MC40
(57)【要約】
【課題】初期化処理に関するログの保存領域の効率的な使用を可能にする。
【解決手段】NVRAM60に格納されているBIOS100は、情報処理装置1を初期化する処理と、初期化におけるエラーの発生を検知する処理と、初期化における情報処理装置1の稼働状況のログを取得する処理とをCPU10に行わせる。但し、ログを取得する処理では、エラーの発生が検知された場合には、当該エラーの種別に予め対応付けられているレベルに応じた詳細度でログを取得する。BMC50は、情報処理装置1により取得されたログを保存する。
【選択図】 図1
【特許請求の範囲】
【請求項1】
情報処理装置であって、
プロセッサと、
BIOSであって、
前記情報処理装置を初期化する処理と、
前記初期化におけるエラーの発生を検知する処理と、
前記初期化における前記情報処理装置の稼働状況のログを取得し、前記エラーの発生が検知された場合には、前記エラーの種別に予め対応付けられているレベルに応じた詳細度で前記ログを取得する処理と、
を前記プロセッサに行わせる前記BIOSが格納されている記憶部と、
前記プロセッサにより取得された前記ログを保存する保存部と、
を備えることを特徴とする情報処理装置。
【請求項2】
前記ログを取得する処理では、前記エラーの発生が検知された場合には、前記情報処理装置における前記エラーの発生が検知された位置について、前記レベルに応じた詳細度で前記ログを取得することを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記エラーの発生が検知された場合に取得される前記ログには、前記情報処理装置における前記エラーの発生が検知された位置を特定する情報が含まれることを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記BIOSは、前記エラーの発生が検知された場合には、前記情報処理装置を初期化する処理を前記プロセッサに再度行わせ、
前記ログを取得する処理では、前記エラーの発生が検知された場合には、前記レベルに応じた詳細度の前記ログを、再度の前記初期化における前記情報処理装置の稼働状況から取得する
ことを特徴とする請求項1から3のうちのいずれか一項に記載の情報処理装置。
【請求項5】
前記プロセッサに接続されるメモリを更に備え、
前記情報処理装置を初期化する処理は、前記メモリを初期化する処理を含み、
前記エラーの発生を検知する処理は、前記メモリでのメモリエラーの発生を検知する処理を含み、
前記ログは、前記メモリの前記初期化における前記メモリの稼働状況のログを含む
ことを特徴とする請求項1から3のうちのいずれか一項に記載の情報処理装置。
【請求項6】
前記エラーの発生を検知する処理において発生が検知される前記メモリエラーについての前記エラーの種別は、誤り訂正不能なエラーを含み、
前記BIOSは、前記誤り訂正不能なエラーである前記メモリエラーの発生が検知された前記メモリを縮退する処理を、該メモリについての前記レベルに応じた詳細度での前記ログを取得した後に前記プロセッサに更に行わせる
ことを特徴とする請求項5に記載の情報処理装置。
【請求項7】
前記BIOSは、前記メモリの複数で前記メモリエラーの発生が検知された場合であって、且つ、複数の前記メモリのそれぞれで発生が検知された前記メモリエラーについての前記エラーの種別毎の発生数のいずれかが所定の制限数を超えた場合には、前記エラーの種別と前記レベルとの対応付けを、予め定められている対応付けから変更する処理を前記プロセッサに更に行わせることを特徴とする請求項5に記載の情報処理装置。
【請求項8】
情報処理装置を初期化し、
前記初期化におけるエラーの発生を検知し、
前記初期化における前記情報処理装置の稼働状況のログを取得すると共に、前記エラーの発生が検知された場合には、前記エラーの種別に予め対応付けられているレベルに応じた詳細度で前記ログを取得し、
前記ログを保存部に保存させる
処理をプロセッサが行うことを特徴とするログ保存方法。
【請求項9】
情報処理装置を初期化し、
前記初期化におけるエラーの発生を検知し、
前記初期化における前記情報処理装置の稼働状況のログを取得すると共に、前記エラーの発生が検知された場合には、前記エラーの種別に予め対応付けられているレベルに応じた詳細度で前記ログを取得し、
前記ログを保存部に保存させる
処理をプロセッサに行わせることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、ログ保存方法およびプログラムに関する。
【背景技術】
【0002】
情報処理装置で発生した障害の検知を、BIOS(Basic Input/Output System)の処理によって行う技術が知られている(例えば特許文献1~特許文献2参照)。
【0003】
例えば、コンピュータに取得ステップと縮小ステップとを実行させるための障害情報処理プログラムの技術が知られている。なお、取得ステップは、当該コンピュータのBIOSによって生成された、自装置に発生した障害に関する第1障害情報を取得するステップである。また、縮小ステップは、第1障害情報のデータ量を縮小することで、管理装置に送信するための障害情報である第2障害情報を生成するステップである。
【0004】
また、BIOSプログラムを記憶したメモリと、エラー情報記憶手段と、報知方法記憶手段と、制御手段と、を備えている電子機器の技術が知られている。なお、エラー情報記憶手段は、BIOSプログラムによる起動処理にて検知され得るエラーの種別に当該エラーの重度を対応付けて記憶した手段である。また、報知方法記憶手段は、当該記重度に対応付けてエラーの報知方法を記憶した手段である。そして、制御手段は、システム起動時においてBIOSプログラムを実行し、エラーを検知したならばエラー情報記憶手段から当該エラーの重度を特定し、特定した重度に対応付けて報知方法記憶手段に記憶された報知方法にて当該エラーを報知する手段である。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2018-160009号公報
【特許文献2】特開2010-231381号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
情報処理装置におけるBIOSによる初期化処理において出力される当該初期化処理の処理状況についてのログの保存を、情報処理装置が備えているBMC(Baseboard Management Controller)で行う場合には、当該ログの出力量を減らす必要がある。このようなログのために使用可能なBMCのデータ保存領域は少量であるためである。
【0007】
しかしながら、当該ログの出力量を単純に減らしてしまうと、初期化処理において発生した障害の原因を突き止めるために必要な情報のログが保存されていない等といった事態が生じ得る。
【0008】
1つの側面において、本発明は、初期化処理に関するログの保存領域の効率的な使用を可能にすることを目的とする。
【課題を解決するための手段】
【0009】
1つの案では、情報処理装置が、プロセッサと、BIOSが格納されている記憶部と、保存部とを備える。BIOSは、情報処理装置を初期化する処理と、初期化におけるエラーの発生を検知する処理と、初期化における情報処理装置の稼働状況のログを取得する処理とをプロセッサに行わせる。但し、ログを取得する処理では、エラーの発生が検知された場合には、当該エラーの種別に予め対応付けられているレベルに応じた詳細度でログを取得する。保存部は、プロセッサにより取得されたログを保存する。
【発明の効果】
【0010】
1つの側面によれば、初期化処理に関するログの保存領域を効率的に使用できる。
【図面の簡単な説明】
【0011】
図1】情報処理装置のハードウェア構成例を示す図である。
図2】情報処理装置に格納されている各ソフトウェアの第1の構成例を示した図である。
図3】情報処理装置に格納されている各ソフトウェアの第2の構成例を示した図である。
図4】ログレベル情報のデータ構造例を示した図である。
図5】メモリエラー情報のデータ構造例を示した図である。
図6】起動時処理の処理内容を示すフローチャートである。
図7】メモリトレーニング処理の処理内容を示すフローチャートである。
【発明を実施するための形態】
【0012】
以下、図面を参照しながら、実施形態を詳細に説明する。
【0013】
[1:ハードウェア構成例]
【0014】
まず、図1について説明する。図1は、実施形態に係る情報処理装置1のハードウェア構成例を示している。この情報処理装置は、例えばサーバ装置である。
【0015】
情報処理装置1は、プロセッサとしてCPU10を備えている。なお、「CPU」はCentral Processing Unitの略称である。以下の説明では、CPU10を「CPU(0)」と表記することもある。
【0016】
情報処理装置1は、更に、メモリとしてDIMM20を8つ備えている。なお、「DIMM」はDual Inline Memory Moduleの略称である。
【0017】
CPU(0)はメモリコントローラ11を2つ内蔵している。メモリコントローラ11は、2つのDIMM20を接続するチャネル30を2つずつ有しており、DIMM20はメモリコントローラ11を介してCPU(0)に接続されている。
【0018】
以下の説明では、CPU(0)が内蔵している2つのメモリコントローラ11を区別する場合には、当該2つのメモリコントローラ11を、それぞれ、「MC(0)」及び「MC(1)」と表記することとする。
【0019】
また、MC(0)が有している2つのチャネル30を区別する場合には、当該2つのチャネル30を、それぞれ、「CH(00)」及び「CH(01)」と表記することとする。そして、MC(1)が有している2つのチャネル30を区別する場合には、当該2つのチャネル30を、それぞれ、「CH(10)」及び「CH(11)」と表記することとする。
【0020】
更に、情報処理装置1が備えている8つのDIMM20を区別する場合には、CH(00)に接続されている2つのDIMM20を、それぞれ、「DIMM(000)」及び「DIMM(001)」と表記することとする。また、CH(01)に接続されている2つのDIMM20を、それぞれ、「DIMM(010)」及び「DIMM(011)」と表記することとする。そして、CH(10)に接続されている2つのDIMM20を、それぞれ、「DIMM(100)」及び「DIMM(101)」と表記することとする。更に、CH(11)に接続されている2つのDIMM20を、それぞれ、「DIMM(110)」及び「DIMM(111)」と表記することとする。
【0021】
情報処理装置1は、更に、SB40を備えている。SB40はサウスブリッジと称される集積回路であり、CPU(0)に接続されている。SB40は、情報処理装置1が備えている各種のハードウェアとCPU(0)との間で行われる各種のデータの授受の管理を行う。
【0022】
情報処理装置1は、更に、BMC50とNVRAM60とを備えている。
【0023】
BMC50はベースボード管理コントローラと称される集積回路であり、SB40に接続されている。BMC50は、情報処理装置1のハードウェアの監視や電源の制御などの機能をCPU(0)とは独立して提供する。BMC50にはソフトウェアであるBMC-FW200が格納されており、BMC50が備えている不図示のプロセッサがBMC-FW200を実行することによって、当該機能の提供を実現する。なお、「FW」はFirmwareの略称である。
【0024】
NVRAM60は不揮発性ランダムアクセスメモリ(Non-Volatile Random Access Memory)であって、例えばフラッシュメモリである。このNVRAM60は、ソフトウェアであるBIOS100が格納されている記憶部であり、SB40に接続されている。
【0025】
情報処理装置1は上述したハードウェア構成を備えている。なお、図1に示されている構成はあくまでも一例であり、他の構成としてもよい。例えば、情報処理装置1が備えるCPU10の個数、CPU10が備えるメモリコントローラ11の数、メモリコントローラ11が有するチャネル30の数、1つのチャネル30に接続されるDIMM20の数などが図1の構成と異なっていてもよい。
【0026】
[2:ログの取得と保存の手法の第1の例]
【0027】
次に、図1の情報処理装置1の起動時におけるログの取得と保存の手法の第1の例について説明する。
【0028】
初めに図2について説明する。図2は、情報処理装置1に格納されている各ソフトウェアの第1の構成例を示したものである。
【0029】
BIOS100は、情報処理装置1の電源がオンとされて電力の供給が開始されたときにCPU(0)によって実行される。CPU(0)は、BIOS100を実行することによって情報処理装置1を初期化する処理を行う。この初期化の処理により、例えば、メモリ初期化部110、メモリエラー処理部120、及びログ送信部130などの各機能がCPU(0)によって提供される。
【0030】
メモリ初期化部110は、DIMM20の初期化とDIMM20に対するトレーニングとを行う。トレーニングとは、メモリコントローラ11に設定される、DIMM20に対するデータの入出力のタイミングや当該データの信号波形などに関する各種のパラメータを調整して、メモリコントローラ11とDIMM20との間の通信を最適化する作業である。また、メモリ初期化部110は、上述した初期化とトレーニングとの実行に関するログの取得も行う。
【0031】
メモリエラー処理部120は、DIMM20で発生したエラーについてのログを取得する。
【0032】
ログ送信部130は、情報処理装置1の稼働状況のログ、例えばメモリ初期化部110やメモリエラー処理部120などの機能の実行時におけるログをBMC50へ送信する。ログ送信部130は、通信方式として例えばUART(Universal Asynchronous Receiver/Transmitter)を用いて、当該ログのBMC50への送信を行う。
【0033】
BMC-FW200は、前述したように、BMC50が備えているプロセッサによって実行され、例えばログ受信部210などの各機能が提供される。
【0034】
ログ受信部210は、BIOS100を実行するCPU(0)から送られてくるログを受信し、受信したログを、複数のログデータ220として、BMC50が備えている不図示の不揮発性記憶領域で保存する。
【0035】
図2に示されている第1の構成例では、情報処理装置1に格納されている各ソフトウェアによって、以上のような機能が提供される。
【0036】
次に、図1の情報処理装置1の起動時におけるログの取得と保存の手法の第1の例における、ログの取得及び保存の手順について説明する。
【0037】
まず、情報処理装置1の電源がオンとされて電力の供給が開始されると、CPU(0)がBIOS100をNVRAM60から読み出して実行し、情報処理装置1を初期化する処理を開始する。
【0038】
このとき、メモリ初期化部110は、DIMM20の初期化を行うと共に、DIMM20に対するトレーニングとを行う。このトレーニングはメモリコントローラ11毎、チャネル30毎、且つDIMM20毎に行われて、メモリコントローラ11のそれぞれにおける各種のパラメータが適切な値に調整される。また、メモリ初期化部110は、上述した初期化とトレーニングとの実行に関するログの取得を行う。
【0039】
メモリ初期化部110によって取得されるログは、BMC50が備えている不揮発性記憶領域で保存される。しかしながら、この不揮発性記憶領域で保存可能なデータ量は少量である。このため、この第1の例では、メモリ初期化部110によるログの取得対象を、例えば、トレーニングでの実施項目名や実施項目毎の実施結果などといった情報に限定する。
【0040】
ところで、メモリ初期化部110による初期化やトレーニングの実行中に、メモリエラーがDIMM20で発生することがある。メモリエラー処理部120は、このメモリエラーの発生を検知した場合には、当該メモリエラーの発生に関するログの取得を行う。
【0041】
図1の情報処理装置1では、メモリコントローラ11は、DIMM20の記憶データについてのECC(Error Checking and Correction)機能を有しているものとする。すなわち、メモリコントローラ11は、DIMM20の記憶データについての誤り(メモリエラー)を検出し、可能な場合には検出した記憶データの誤りを訂正する機能を有しているものとする。
【0042】
メモリエラー処理部120は、メモリコントローラ11の動作を監視することによってDIMM20でのメモリエラーの発生の検知を行う。また、メモリエラー処理部120は、メモリエラーの発生が検知された場合に、当該メモリエラーが、誤り訂正可能なエラーと誤り訂正不能なエラーとのどちらかを示す情報をメモリコントローラ11から取得してログに含める。なお、以下の説明では、誤り訂正可能なエラーを「CE」(Correctable Error)と表記し、誤り訂正不能なエラーを「UE」(Uncorrectable Error)と表記する。これらのCEやUEは、メモリエラーについてのエラーの種別の一例である。
【0043】
なお、BIOS100を実行中のCPU(0)は、DIMM20でのUEの発生をメモリコントローラ11が検知した場合には、当該DIMM20を縮退させて当該DIMM20を使用しないようにする処理が行われる。
【0044】
以上のようにしてメモリ初期化部110やメモリエラー処理部120により取得されたログは、ログ送信部130によりBMC50へ送信される。BMC-FW200が実行されているBMC50では、送られてきたログをログ受信部210が受信し、当該ログを複数のログデータ220としてBMC50の不揮発性記憶領域に保存する。なお、BMC50の不揮発性記憶領域で保存するログデータ220のデータ量にはBMC-FW200によって制限がかけられており、当該制限を超えた場合には、最も古くに保存されたデータの消去(最新のデータの上書き)が行われる。
【0045】
図2に示した第1の例のように構成されている各ソフトウェアが格納されている図1の情報処理装置1では、以上のようにして起動時におけるログの取得と保存とが行われる。このようにしてBMC50に保存されているログデータ220は、DIMM20で発生したメモリエラーについての後日に行われる原因の解析や改善策の検討に利用される。
【0046】
[3:ログの取得と保存の手法の第2の例]
【0047】
次に、図1の情報処理装置1の起動時におけるログの取得と保存の手法の第2の例について説明する。
【0048】
前述した第1の例の手法では、メモリ初期化部110は、初期化やトレーニングの成否の結果などといった情報に限定したログを取得する。このため、BMC50に保存されているログデータ220では、DIMM20で発生したメモリエラーの原因の解析に有益な情報が不足しているために、当該解析が困難となってしまうことがある。
【0049】
そこで、これより説明する第2の例では、情報処理装置1の初期化の処理においてエラーの発生が検知された場合には、第1の例で説明したような情報に限定されているログの詳細度を高めるようにする。但し、このときのログの詳細度を、当該エラーの種別に予め対応付けられているログレベルに応じた詳細度として、当該エラーの深刻度が低い場合における当該ログが過度に詳細なものにはならないようにして、当該ログの保存領域の効率的な使用を可能にする。
【0050】
[3-1:各ソフトウェアの構成]
【0051】
まず図3について説明する。図3は、情報処理装置1に格納されている各ソフトウェアの第2の構成例を示したものである。
【0052】
図3に示した第2の構成例において、図2に示した第1の構成例に示されている構成要素と同一の名称の構成要素には同一の符号を付している。図3に示したこれらの構成要素によって提供される機能には、図2において同一の符号を付した構成要素によって提供される機能が含まれる。これらの機能についての説明はここでは省略する。
【0053】
図3に示した第2の構成例では、図2に示した第1の構成例に、ログレベル情報70とメモリエラー情報80とが追加されている。なお、ログレベル情報70及びメモリエラー情報80は、NVRAM60(図1参照)で保存されることが示されている。また、BIOS100は、メモリ初期化部110、メモリエラー処理部120、及びログ送信部130の各機能に加えて、エラー重度判定部140、及びログレベル情報管理部150の各機能を更に有している。また、メモリ初期化部110にログ制御部111の機能が追加されており、メモリエラー処理部120にエラー情報保存部121の機能が追加されている。
【0054】
エラー重度判定部140はログレベル情報70の作成を行う。
【0055】
ここでログレベル情報70について説明する。図4は、ログレベル情報70のデータ構造例を示したものである。ログレベル情報70は、「CPU」、「MC」、「CH」、及び「DIMM」の各データに「level」のデータが対応付けられた情報である。
【0056】
図4においてテーブルとして示されているログレベル情報70の各列の情報について説明する。
【0057】
なお、「No.」の列は、ログレベル情報70の各行を特定するために付した番号である。また、「補足説明」の列は、ログレベル情報70の各行の状況についての補足説明を記載したものである。これらの「No.」及び「補足説明」のデータは図4において便宜的に付した情報であって、ログレベル情報70には含まれない情報である。
【0058】
「CPU」の列にはCPU10を特定する情報が配置される。この列におけるデータ「0」は、CPU(0)を特定している。
【0059】
「MC」の列にはメモリコントローラ11を特定する情報が配置される。この列におけるデータ「0」及び「1」は、それぞれ、MC(0)及びMC(1)を特定している。
【0060】
「CH」の列にはチャネル30を特定する情報が配置される。この列におけるデータ「00」、「01」、「10」、及び「11」は、それぞれ、CH(00)、CH(01)、CH(10)、及びCH(11)を特定している。
【0061】
「DIMM」の列にはDIMM20を特定する情報が配置される。この列におけるデータ「000」、「001」、「010」、及び「011」は、それぞれ、DIMM(000)、DIMM(001)、DIMM(010)、及びDIMM(011)を特定している。また、この列におけるデータ「100」、「101」、「110」、及び「111」は、それぞれ、DIMM(100)、DIMM(101)、DIMM(110)、及びDIMM(111)を特定している。
【0062】
以上の「CPU」、「MC」、「CH」、及び「DIMM」の各データによって、情報処理装置1における対象ポイント、すなわち、DIMM20のメモリ動作についてのログの取得を行う情報処理装置1上の位置が特定される。
【0063】
「level」の列には、「CPU」、「MC」、「CH」、及び「DIMM」の各データで特定される対象ポイントについてのログを取得するときのログレベルの情報が配置される。ログレベルとは、取得するログの詳細度を示す情報である。
【0064】
本実施形態では、ログレベルとして、「0」から「3」までの4段階のレベルが定義されている。
【0065】
ログレベル「0」はログの取得は行わないことを表している。
【0066】
ログレベル「1」は、前述したログの取得と保存の手法の第1の例で取得されるログと同等の詳細度のログの取得、すなわち、例えば、トレーニングでの実施項目名や実施項目毎の実施結果などといった情報に限定したログの取得を表している。
【0067】
ログレベル「2」は、ログレベル「1」で取得されるログよりも高い詳細度でのログの取得を表している。本実施形態では、ログレベル「2」は、ログレベル「1」で取得されるログに加えて、当該対象ポイントで特定されるDIMM20に対するトレーニングの実行に関するより詳細な情報のログの取得を表している。なお、より詳細な情報とは、例えば、当該トレーニングでの実施項目毎の、実施時の各パラメータ値や当該パラメータ値毎の実施結果などといった情報である。
【0068】
ログレベル「3」は、ログレベル「2」で取得されるログよりも更に高い詳細度でのログの取得を表している。すなわち、ログレベル「3」は、ログレベル「1」及びログレベル「2」で取得されるログに加えて、当該対象ポイントでの更に詳細な情報のログの取得を表している。更に詳細な情報とは、例えば、当該対象ポイントで特定されるDIMM20のSPDのダンプ、当該対象ポイントで特定されるメモリコントローラ11が備えているレジスタのダンプなどの情報である。なお、「SPD」とは、Serial Presence Detectの略称である。
【0069】
図4に例示したログレベル情報70は以上のようなデータ構造を有している。エラー重度判定部140は、メモリエラー情報80を参照することによって、発生が検知されたエラーの深刻度を判定し、その深刻度に応じたログレベル情報70の作成を行う。
【0070】
ここでメモリエラー情報80について説明する。図5は、メモリエラー情報80のデータ構造例を示したものである。メモリエラー情報80は、「CPU」、「MC」、「CH」、及び「DIMM」の各データに、「CE回数」、「UE回数」、及び「UE発生時間」の各データが対応付けられた情報である。
【0071】
図5においてテーブルとして示されているメモリエラー情報80の各列の情報について説明する。
【0072】
なお、「No.」の列は、メモリエラー情報80の各行を特定するために付した番号であって、図5において便宜的に付した情報であり、メモリエラー情報80には含まれない情報である。
【0073】
「CPU」、「MC」、「CH」、及び「DIMM」の各列には、それぞれ、図4に例示したログレベル情報70における「CPU」、「MC」、「CH」、及び「DIMM」の各列と同じデータが配置される。これらの「CPU」、「MC」、「CH」、及び「DIMM」の各列のデータによって、メモリエラーの発生が検知された対象ポイントが特定される。
【0074】
「CE回数」は、DIMM20で検知されたCEの発生回数のデータであり、CEの発生が検知された対象ポイントを特定する「CPU」、「MC」、「CH」、及び「DIMM」の各データに対応づけて「CE回数」のデータが配置される。
【0075】
「UE回数」は、DIMM20で検知されたUEの発生回数のデータであり、UEの発生が検知された対象ポイントを特定する「CPU」、「MC」、「CH」、及び「DIMM」の各データに対応づけて「UE回数」のデータが配置される。
【0076】
「UE発生時間」は、DIMM20で検知されたUEが発生した時を示すデータであって、UEの発生が検知された対象ポイントを特定する「CPU」、「MC」、「CH」、及び「DIMM」の各データに対応付けて「UE発生時間」のデータが配置される。本実施形態では、この時を示すデータとして、CPU(0)に内蔵されているカウンタであって、CPU(0)に供給されたクロック数をCPU(0)の動作開始から計数するカウンタであるTSC(Time Stamp Counter)の値のデータを用いることとする。
【0077】
図5に例示したメモリエラー情報80は以上のようなデータ構造を有している。このメモリエラー情報80はエラー情報保存部121によって作成される。
【0078】
メモリエラー処理部120は、DIMM20でのメモリエラーの発生を検知すると、エラー情報保存部121を機能させて、メモリエラー情報80の作成と保存とをエラー情報保存部121に行わせる。エラー情報保存部121は、メモリコントローラ11を内蔵するCPU(0)から得られる情報に基づいて、メモリエラー処理部120により発生が検知されたメモリエラーについてのメモリエラー情報80を作成してNVRAM60に格納し、保存させる。
【0079】
エラー重度判定部140は、NVRAM60で保存されているメモリエラー情報80を参照し、発生が検知されたメモリエラーについての「CE回数」及び「UE回数」に基づき、当該メモリエラーについてのログレベルを決定してログレベル情報70を作成する。
【0080】
ログレベル情報管理部150は、エラー重度判定部140により作成されたログレベル情報70をNVRAM60で保存してNVRAM60の管理を行う。
【0081】
ログ制御部111は、NVRAM60で保存されているログレベル情報70で示されている対象ポイントについてのログを、当該ログレベル情報70において当該対象ポイントに対応付けられているログレベルに応じた詳細度で取得する。ログ制御部111によって取得されたログも、ログ送信部130によってBMC50に送信される。
【0082】
BMC50では、BIOS100を実行するCPU(0)から送られてくるログが受信されて、BMC50が備えている不図示の不揮発性記憶領域において複数のログデータ220として保存される点は、前述したログの取得と保存の手法の第1の例と同様である。
【0083】
情報処理装置1の起動時におけるログの取得と保存の手法の第2の例では、以上のようにしてログの取得と保存とが行われる。
【0084】
[3-2:ログレベルの決定の手法]
【0085】
次に、エラー重度判定部140によるログレベルの決定の手法の一例について説明する。
【0086】
エラー重度判定部140は、DIMM20のメモリ動作で発生が検知されたメモリエラーがCEであった場合には、CEの発生が検知されたDIMM20についての対象ポイントのログレベルを「2」に決定する。また、エラー重度判定部140は、DIMM20のメモリ動作で発生が検知されたメモリエラーが、CEよりもエラーの深刻度が高いUEであった場合には、UEの発生が検知されたDIMM20についての対象ポイントのログレベルを「3」に決定する。このように、エラー重度判定部140は、DIMM20のメモリエラーの発生が検知された場合には、発生が検知されたエラーの種別に予め対応付けられているログレベルを、エラーの発生が検知されたDIMM20についての対象ポイントに対して決定する。
【0087】
なお、エラー重度判定部140は、メモリエラーの発生が検知されていないDIMM20についての対象ポイントに対してはログレベルを「1」に決定する。
【0088】
但し、情報処理装置1の複数のDIMM20でメモリエラーの発生が検知された場合には、上述の手法に従ったログレベルでのログの取得を行うと、ログの総量が過大となり、BMC50の不揮発性記憶領域で全てのログを保存できなくなることが考えられる。そこで、このような状況を未然に防止するために、エラー重度判定部140は、これより説明するルールに従ってログレベルの決定を行うようにする。
【0089】
まず、比較的高い詳細度でのログを取得することになるログレベル「2」及び「3」について、当該レベルをログレベルとしてエラー重度判定部140が決定することができる対象ポイントの数(エラーの発生数)を制限する。本実施形態では、ログレベル「3」と決定することができる対象ポイントを、情報処理装置1におけるいずれか1箇所のみに制限し、ログレベル「2」と決定することができる対象ポイントを、情報処理装置1におけるいずれか3箇所までに制限する。
【0090】
ここで、ログレベル「3」若しくはログレベル「2」と決定することができる対象ポイントの数が、上述した制限数を超えた場合には、エラーの種別とレベルとの対応付けの変更を行う。
【0091】
まず、CEが情報処理装置1の複数のDIMM20で検知された場合には、エラー重度判定部140は、メモリエラー情報80の「CE回数」のデータに基づき、ログレベル「2」と決定する対象ポイントを選択する。本実施形態では、CEの発生が検知された複数のDIMM20のそれぞれについての対象ポイントのうち、ログレベル「2」と決定する対象ポイントを、「CE回数」の多い順に選択する。この「CE回数」の多い順の選択の結果、ログレベル「2」と決定する対象ポイントの数が上述した制限数を超えた場合には、制限数を超えた対象ポイントについてログレベル「1」と決定する。
【0092】
また、UEが情報処理装置1の複数のDIMM20で検知された場合には、エラー重度判定部140は、メモリエラー情報80の「UE発生時間」のデータに基づき、UEが最初に発生したDIMM20についての対象ポイントのみをログレベル「3」と決定する。ここで、エラー重度判定部140は、UEの発生が最初ではないDIMM20についての対象ポイントは、UEの発生順にログレベル「2」と決定する対象ポイントを選択する。但し、このUEの発生順の選択の結果、ログレベル「2」と決定する対象ポイントの数が上述した制限数を超えた場合には、エラー重度判定部140は、制限数を超えた対象ポイントについてはログレベル「1」と決定する。
【0093】
また、DIMM20でのメモリエラーの発生の検知が特定のメモリコントローラ11のみに集中している場合には、エラー重度判定部140は、エラーの発生が検知されない残余のメモリコントローラ11についての対象ポイントをログレベル「0」と決定する。つまり、エラーの発生が検知されない残余のメモリコントローラ11についての対象ポイントは、ログの取得の優先度が低いと判断してログの取得を行わないようにして、ログの総量を削減する。
【0094】
エラー重度判定部140は、上述したルールに従ってログレベルを決定し、決定されたログレベルの情報と、メモリ動作においてメモリエラーの発生が検知された対象ポイントの情報とを対応付けることによってログレベル情報70を作成する。
【0095】
なお、エラー重度判定部140が、更なる別のルールに従ってログレベルの決定を行うようにしてもよい。例えば、複数のDIMM20で検知されたメモリエラーが全てCEの場合には、エラー重度判定部140は、CEが検知されたDIMM20についての対象ポイントのうちメモリエラー情報80の「CE回数」が最多のものをログレベル「3」と決定してもよい。なお、当該別のルールは、本実施形態においては採用していない。
【0096】
[3-3:起動時処理]
【0097】
次に、情報処理装置1の起動時にCPU(0)により行われる起動時処理について説明する。図6は起動時処理の処理内容を示すフローチャートであり、上述したログの取得と保存の手法の第2の例によるログの取得及び保存を情報処理装置1で実現するためのものである。
【0098】
BIOS100には、図6のフローチャートに示した処理をCPU(0)に行わせる起動時処理プログラムが含まれている。情報処理装置1の電源がオンとされて電力の供給が開始されると、CPU(0)が起動してBIOS100をNVRAM60から読み出して実行し、情報処理装置1の初期化の処理を開始する。すると、図6の起動時処理が開始される。
【0099】
図6において、S101及びS102の処理は、エラー重度判定部140としての機能を提供する処理である。すなわち、S101において、メモリエラー情報80とログレベル情報70とをNVRAM60から読み出して取得する処理が行われる。そして、続くS102において、S101の処理により取得したログレベル情報70を、S101の処理により取得したメモリエラー情報80により更新すると共に、メモリエラー情報80を初期化する処理が行われる。
【0100】
ログレベル情報70の更新では、エラー重度判定部140による、メモリエラー情報80に基づいたログレベル情報70の作成が前述したようにして行われる。そして、ログレベル情報管理部150による、NVRAM60で保存されているログレベル情報70についての、作成されたログレベル情報70への置き換えが行われる。
【0101】
また、メモリエラー情報80の初期化では、全ての対象ポイントについて、「CE回数」、「UE回数」、及び「UE発生時間」の各データがいずれも「0」とされる。
【0102】
S102に続いて、S103ではメモリトレーニング処理が行われる。メモリトレーニング処理は、メモリ初期化部110として、DIMM20の初期化とDIMM20に対するトレーニングとを実行し、当該トレーニングに関するログをログレベル情報70に従った詳細度で取得する処理である。また、メモリトレーニング処理では、メモリエラー処理部120として、当該トレーニングが行われているDIMM20を監視してメモリエラーの発生を検知し、当該メモリエラーに関するメモリエラー情報80を作成する処理も行われる。このメモリトレーニング処理の詳細は後述する。
【0103】
S103に続くS104からS110までの各処理は、メモリエラー処理部120としての機能を提供する処理である。
【0104】
まず、S104では、S103のメモリトレーニング処理におけるメモリエラー情報80の更新の有無を調べることによって、メモリエラーの発生が検知されたか否かを判定する処理が行われる。この判定処理において、メモリエラーの発生が検知されたと判定されたとき(判定結果がYESのとき)にはS105に処理を進める。一方、この判定処理において、メモリエラーの発生が検知されなかったと判定されたとき(判定結果がNOのとき)には、この起動時処理を終了する。
【0105】
S105では、メモリエラー情報80を参照して、S103のメモリトレーニング処理において発生が検知されたメモリエラーのうちに、UEが含まれていたか否かを判定する処理が行われる。この判定処理において、UEの発生が検知されていたと判定されたとき(判定結果がYESのとき)にはS106に処理を進める。一方、この判定処理において、メモリエラーの発生が検知されなかったと判定されたとき(判定結果がNOのとき)にはS108に処理を進める。
【0106】
S106では、UEの発生が検知されていたDIMM20についての対象ポイントにおいて、ログレベル「3」による高い詳細度のログの取得が既に済んでいるか否かを判定する処理が行われる。
【0107】
詳細は後述するが、S103のメモリトレーニング処理では、直近のS102の処理によるログレベル情報70の更新後のログレベルでのログの取得が行われ、メモリトレーニング処理にはログレベル情報70を更新する処理は含まれていない。従って、S106の判定処理は、この処理の時点でのNVRAM60で保存されているログレベル情報70を参照し、UEの発生が検知されていたDIMM20についての対象ポイントがログレベル「3」とされているか否かを判定すればよい。
【0108】
このS106の判定処理において、UEの発生が検知されていたDIMM20についての対象ポイントでログレベル「3」による高い詳細度のログの取得が済んでいると判定されたとき(判定結果がYESのとき)にはS107に処理を進める。一方、このS106の判定処理において、このような高い詳細度のログの取得が行われていないと判定されたとき(判定結果がNOのとき)にはS110に処理を進める。
【0109】
S107では、UEの発生が検知されているDIMM20であって、ログレベル「3」による高い詳細度のログの取得が済んでいる対象ポイントについてのDIMM20を縮退させて使用しないようにする処理が行われ、その後はS110に処理を進める。
【0110】
S108では、S103のメモリトレーニング処理においてメモリエラーの発生が検知されたDIMM20についての対象ポイントのうちに、詳細ログの取得が行われていないものが残されているか否かを判定する処理が行われる。詳細ログの取得が行われていないものとは、ログレベル「0」であるもの、若しくは、対象ポイント数がログレベル「2」の制限数を超えていない場合のログレベル「1」であるものである。この判定処理において、メモリエラーの発生が検知されたDIMM20についての対象ポイントのうちに、詳細ログの取得が行われていないものが残されていると判定されたとき(判定結果がYESのとき)にはS109に処理を進める。一方、この判定処理において、メモリエラーの発生が検知されたDIMM20についての対象ポイントのうちに、詳細ログの取得が行われていないものは残されていないと判定されたとき(判定結果がNOのとき)には、この起動時処理を終了する。
【0111】
S109では、装置再起動カウンタのカウント値が、予め定めておいた規定値を超えたか否かを判定する処理が行われる。この判定処理において、カウント値が規定値を超えたと判定されたとき(判定結果がYESのとき)には、この起動時処理を終了する。一方、この判定処理において、カウント値が未だ規定値を超えてはいないと判定されたとき(判定結果がNOのとき)にはS110に処理を進める。
【0112】
ここで装置再起動カウンタについて説明する。
【0113】
情報処理装置1の再起動の度にCEの発生が、異なるDIMM20、あるいは、同一のDIMM20の異なるメモリ領域で検知される場合がある。装置再起動カウンタは、このような場合に生じ得る情報処理装置1の再起動の度重なる繰り返しを解消するためのものであって、情報処理装置1の再起動の回数を計数するカウンタである。なお、装置再起動カウンタのカウント値は、情報処理装置1の初めての起動時にリセットされる。
【0114】
S110では、装置再起動カウンタのカウント値を1つ進めると共に、情報処理装置1を再起動させる処理が行われる。この処理により、CPU(0)は、BIOS100を再度実行して情報処理装置1の初期化の処理を開始し、図6の処理をS101から再度実行する。但し、この再起動では、NVRAM60で保存されているログレベル情報70及びメモリエラー情報80の初期化は行わない。従って、図6の処理の再度の実行では、このS110の処理の時点においてNVRAM60で保存されているログレベル情報70及びメモリエラー情報80が用いられる。
【0115】
以上までの処理が起動時処理である。
【0116】
[3-4:メモリトレーニング処理]
【0117】
次に、上述した図6の起動時処理におけるS103の処理である、メモリトレーニング処理の詳細について説明する。図7は、メモリトレーニング処理の処理内容を示すフローチャートである。
【0118】
図7の処理は、メモリ初期化部110によるDIMM20の初期化処理とDIMM20に対するトレーニングの実行の開始と並行してCPU(0)により開始される処理である。この図7の処理は、S207の判定処理の結果がYESとなるまでS201からS206までの処理が繰り返し実行される。
【0119】
図7の処理が開始されると、まず、S201では、初期化及びトレーニングが実行されているDIMM20についての対象ポイントでのログを、当該対象ポイントについてのログレベルに従った詳細度で取得してBMC50へ出力する処理が行われる。当該対象ポイントについてのログレベルは、NVRAM60で保存されているログレベル情報70で示されている。この処理は、ログ制御部111とメモリエラー処理部120とによるログの取得の機能を提供する処理である。
【0120】
なお、このS201処理によりBMC50へ出力されるログには、当該対象ポイントの情報処理装置1における位置を特定する情報を含めるようにする。従って、メモリエラーの発生が検知されていた場合には、当該メモリエラーの発生が検知された対象ポイントの位置を特定する情報を含むログが当該対象ポイントについてのログレベルに従った詳細度で取得されてBMC50へ出力される。出力されたログは、ログデータ220としてBMC50で保存される。
【0121】
次に、S202では、初期化及びトレーニングが実行されているDIMM20のメモリ領域でメモリエラーの発生を検知したか否かを判定する処理が行われる。この処理はメモリエラー処理部120としての機能を提供する処理である。
【0122】
このS202の判定処理において、メモリエラーの発生を検知したと判定されたとき(判定結果がYESのとき)にはS203に処理を進め、メモリエラーの発生を検知してはいないと判定されたとき(判定結果がNOのとき)にはS207に処理を進める。
【0123】
S203からS206の処理は、メモリエラー処理部120のうちのエラー情報保存部121としての機能を提供する処理である。
【0124】
まず、S203では、NVRAM60で保存されている、メモリエラーの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80を更新する処理が行われる。この処理では、S202の処理により発生を検知したと判定されたメモリエラーがCEである場合には、メモリエラー情報80における当該対象ポイントについての「CE回数」の値をインクリメントする(1増加させる)処理が行われる。また、S202の処理により発生を検知したと判定されたメモリエラーがUEである場合には、メモリエラー情報80における当該対象ポイントについての「UE回数」の値をインクリメントする(1増加させる)処理が行われる。
【0125】
次に、S204では、S202の処理により発生を検知したと判定されたメモリエラーがUEであるか否かを判定する処理が行われる。この判定処理において、当該メモリエラーがUEであると判定されたとき(判定結果がYESのとき)には、S205に処理を進めて、UEの発生が検知されたDIMM20でのUEの発生は1回目(初めて)か否かを判定する処理が行われる。
【0126】
このS205の判定処理において、UEの発生が検知されたDIMM20でのUEの発生は1回目であると判定されたとき(判定結果がYESのとき)には、S206に処理を進める。そして、S206において、NVRAM60で保存されている、UEの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80を更新する処理が行われる。この処理では、メモリエラー情報80における当該対象ポイントについての「UE発生時間」として、S202の処理により発生を検知したと判定されたUEの発生時間の値を代入する処理が行われる。前述したように、この値としては、例えば、初めてのUEの発生が検知されたときにおけるCPU(0)におけるTSCの値が用いられる。
【0127】
上述したS206の処理を終えたときにはS207に処理を進める。また、S204及びS205の判定処理のどちらかでの判定結果がNOのときにもS207に処理を進める。
【0128】
S207では、メモリ初期化部110による初期化及びトレーニングが、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かを判定する処理が行われる。この処理はメモリエラー処理部120としての機能を提供する処理である。
【0129】
S207の判定処理において、全てのメモリ領域に対する初期化及びトレーニングの実施が完了したと判定されたとき(判定結果がYESのとき)には、この図7の処理を終了する。一方、この判定処理において、初期化及びトレーニングが実施されていないメモリ領域が残っていると判定されたとき(判定結果がNOのとき)にはS201へ処理を戻し、上述したS201以降の各処理が再度行われる。
【0130】
以上までの処理がメモリトレーニング処理である。
【0131】
図1の情報処理装置1の起動時におけるログの取得と保存の手法の第2の例では、図6及び図7に示した処理をCPU(0)が行うことによって、ログの取得と保存とが行われる。
【0132】
[3-5:実施例]
【0133】
次に、図6及び図7に示した処理に従ってログの取得と保存とを行う具体的な実施例について説明する。
【0134】
この実施例に係る情報処理装置1は図1に示したハードウェア構成を備えており、情報処理装置1に格納されている各ソフトウェアは、図3に示した第2の構成例に従うものとする。
【0135】
また、この実施例では、NVRAM60で保存されているログレベル情報70は、初期状態として、図4に示したテーブルにおけるNo.1からNo.8の全てについてログレベル「1」が設定されているものとする。更に、NVRAM60で保存されているメモリエラー情報80は、初期状態として、図5に示したテーブルにおけるNo.1からNo.8の全てについて、「CE回数」、「UE回数」、及び「UE発生時間」の各データがいずれも「0」とされているものとする。
【0136】
[3-5-1:1回目の起動時処理]
【0137】
情報処理装置1の電源がオンとされて電力の供給が開始されると、CPU(0)が起動してBIOS100をNVRAM60から読み出して実行する。すると、CPU(0)が情報処理装置1の初期化の処理を開始して図6の起動時処理(1回目の起動時処理)を開始する。
【0138】
このとき、S101の処理により、メモリエラー情報80とログレベル情報70とがNVRAM60から取得される。なお、このときにNVRAM60で保存されているメモリエラー情報80及びログレベル情報70は、どちらも上述した初期状態のデータである。
【0139】
続くS102の処理では、メモリエラー情報80に基づいたログレベル情報70の更新とメモリエラー情報80の初期化とが行われる。但し、このときのメモリエラー情報80は、前述したように初期状態の情報であって、メモリエラーの発生が検知されていない状態の情報であるから、ログレベル情報70が更新されることはない。つまり、この処理では初期状態のデータがそのまま維持される。また、この処理による初期化後のメモリエラー情報80も初期状態のデータと同一である。
【0140】
次に、S103のメモリトレーニング処理により、メモリ初期化部110によるDIMM20に対する初期化とトレーニングの実行が開始され、並行して図7の処理が開始される。
【0141】
図7の処理が開始されると、まず、S201の処理により、初期化とトレーニングとが実行されているDIMM20についての対象ポイントでのログが、当該対象ポイントのログレベルに応じた詳細度で取得されてBMC50へ出力される。このとき、NVRAM60で保存されているログレベル情報70は初期状態のデータが維持されており、全ての対象ポイントについてログレベル「1」に設定されている。従って、このときのS201の処理では、初期化及びトレーニングが実行されているDIMM20についての対象ポイントにて、前述したようなログレベル「1」の詳細度でのログの取得が行われる。
【0142】
この処理に続くS202の判定処理により、初期化及びトレーニングが実行されているDIMM20のメモリ領域でメモリエラーの発生を検知したか否かが判定される。ここでは、このときにはメモリエラーが発生していないものとする。従って、この判定処理の結果としてS207に処理が進む。
【0143】
すると、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでは、このときには初期化及びトレーニングが実施されていないメモリ領域が残っているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。
【0144】
その後、初期化及びトレーニングが実行されているDIMM20においてCEが発生したとする。すると、上述した各処理の繰り返しにおけるS202の判定処理により、メモリエラーの発生が検知されたと判定されて、S203に処理が進む。なお、CEが発生したDIMM20についての対象ポイントは、CPU(0)、MC(0)、CH(01)、DIMM(011)で特定される対象ポイントであったとする。
【0145】
このとき、S203の処理により、NVRAM60で保存されている、メモリエラーの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新により、図5に示したテーブルにおける、CPU(0)、MC(0)、CH(01)、DIMM(011)で特定される対象ポイントの行、すなわち、No.4の行における「CE回数」のデータが、初期状態の値である「0」から「1」へと変更される。
【0146】
その後、S204の判定処理により、S202の処理で発生を検知したと判定されたメモリエラーはUEではない(CEである)と判定されて、S207に処理が進む。
【0147】
すると、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでは、このときには初期化及びトレーニングが実施されていないメモリ領域が依然として残されているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。
【0148】
その後、初期化及びトレーニングが実行されているDIMM20においてCEが新たに発生したとする。すると、上述した各処理の繰り返しにおけるS202の判定処理により、メモリエラーの発生が検知されたと判定されて、S203に処理が進む。なお、この新たなCEの発生が検知されたDIMM20についての対象ポイントは、CPU(0)、MC(0)、CH(01)、DIMM(011)で特定される対象ポイントであったとする。すなわち、新たなCEの発生が検知されたDIMM20についての対象ポイントは、先にCEの発生が検知されたDIMM20についての対象ポイントと同一であったとする。
【0149】
このとき、S203の処理により、NVRAM60で保存されている、メモリエラーの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新により、図5に示したテーブルにおける、CPU(0)、MC(0)、CH(01)、DIMM(011)で特定される対象ポイントの行、すなわち、No.4の行における「CE回数」のデータが、「1」から「2」へと変更される。
【0150】
その後、S204の判定処理により、S202の処理により発生を検知したと判定されたメモリエラーがUEではない(CEである)と判定されて、S207に処理が進む。
【0151】
すると、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでも、このときには初期化及びトレーニングが実施されていないメモリ領域が依然として残されているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。
【0152】
その後、初期化及びトレーニングが実行されているDIMM20において今度はUEが発生したとする。すると、上述した各処理の繰り返しにおけるS202の判定処理により、メモリエラーの発生が検知されたと判定されて、S203に処理が進む。なお、このUEの発生が検知されたDIMM20についての対象ポイントは、CPU(0)、MC(0)、CH(00)、DIMM(001)で特定される対象ポイントであったとする。
【0153】
このとき、S203の処理により、NVRAM60で保存されている、メモリエラーの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新では、図5に示したテーブルにおける、CPU(0)、MC(0)、CH(00)、DIMM(001)で特定される対象ポイントの行、すなわち、No.2の行における「UE回数」のデータが、初期状態の値である「0」から「1」へと変更される。
【0154】
その後、S204の判定処理により、S202の処理により発生を検知したと判定されたメモリエラーがUEであると今度は判定されるので、S205に処理が進む。すると、S205の判定処理により、UEの発生が検知されたDIMM20でのUEの発生は1回目(初めて)であると判定されるので、S206に処理が進む。
【0155】
このとき、S206の処理により、NVRAM60で保存されている、UEの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新では、図5に示したテーブルのNo.2の行における「UE発生時間」のデータとして、S202の処理により発生を検知したと判定されたUEの発生時間の値が代入される。本実施例では、この「UE発生時間」のデータとして、「12300000」が代入されるものとする。
【0156】
その後、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでも、このときには初期化及びトレーニングが実施されていないメモリ領域が依然として残されているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。この各処理の繰り返しにおいて、今度は、メモリエラーへの発生が検知されないまま、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対する初期化及びトレーニングの実施が終了したとする。すると、S207の判定処理の結果がYESとなって図7の処理が終了する。
【0157】
なお、図5に示したメモリエラー情報80のデータ例は、このときの図7のメモリトレーニング処理の終了時点においてNVRAM60で保存されているものである。
【0158】
メモリトレーニング処理が終了すると、図6の起動時処理におけるS104に処理が戻る。このときのS104の判定処理により、メモリエラーの発生が検知されたと判定されてS105に処理が進む。すると、S105の判定処理により、S103のメモリトレーニング処理において発生が検知されたメモリエラーのうちに、UEが含まれていたと判定されて、S106に処理が進む。
【0159】
このときのS106の判定処理では、UEの発生が検知されていたDIMM20についての対象ポイントではログレベル「3」による高い詳細度のログの取得は行われていないと判定されるので、S110に処理が進む。
【0160】
すると、このときのS110の処理により、装置再起動カウンタのカウント値が進められて「0」から「1」とされると共に、情報処理装置1の再起動が行われる。すると、CPU(0)が情報処理装置1の初期化の処理を開始して図6の起動時処理を再度開始する。
【0161】
[3-5-2:2回目の起動時処理]
【0162】
2回目の起動時処理が開始されると、まず、S101の処理により、メモリエラー情報80とログレベル情報70とがNVRAM60から取得される。なお、このときにNVRAM60で保存されているログレベル情報70は初期状態のデータのままであるが、このときにNVRAM60で保存されているメモリエラー情報80は図5に例示したデータとなっている。
【0163】
続くS102の処理では、メモリエラー情報80に基づいたログレベル情報70の更新とメモリエラー情報80の初期化とが行われる。
【0164】
ログレベル情報70の更新では、エラー重度判定部140による前述したルールに従ったログレベルの決定が行われる。前述したように、このときのメモリエラー情報80は図5に例示されているデータである。このデータに対して前述したルールを適用する。
【0165】
図5のデータ例では、No.2の行において示されている対象ポイントについてのDIMM20でのUEの発生、及び、No.4の行において示されている対象ポイントについてのDIMM20でのCEの発生が示されている。従って、前述したルールに従い、No.2の行において示されている対象ポイントについてはログレベル「3」との決定がなされ、No.4の行において示されている対象ポイントについてはログレベル「2」との決定がなされる。なお、この決定によってログレベル「3」と決定された対象ポイントは1か所のみであり、ログレベル「2」と決定された対象ポイントも1か所のみであり、どちらも対象ポイントの数が前述した制限数の範囲内に収まっている。
【0166】
ところで、図5のデータ例を参照すると、発生が検知されているメモリエラーはMC(0)に集中しており、MC(1)についてはメモリエラーの発生は検知されていないことが分かる。従って、前述したルールに従い、MC(1)についての対象ポイントである、No.5からNo.8までの各対象ポイントについてはログレベル「0」とする決定がなされる。
【0167】
上述したログレベルの決定の結果に従った更新後のログレベル情報70が、図4に示されているデータ例である。また、メモリエラー情報80の初期化により、メモリエラー情報80は、図5に示したテーブルにおけるNo.1からNo.8の全てについて、「CE回数」、「UE回数」、及び「UE発生時間」の各データがいずれも「0」とされる。
【0168】
次に、S103のメモリトレーニング処理により、メモリ初期化部110によるDIMM20に対する初期化及びトレーニングの実行が開始され、並行して図7の処理が開始される。
【0169】
図7の処理が開始されると、まず、S201の処理により、初期化及びトレーニングが実行されているDIMM20についての対象ポイントでのログが取得されてBMC50へ出力される。このログは、図4に示されているログレベル情報70のデータ例で示されている、当該対象ポイントについてのログレベルに応じた詳細度で取得される。従って、図4のNo.2の行において示されている対象ポイントでは、前述したようなログレベル「3」の詳細度でのログの取得が行われる。また、図4のNo.4の行において示されている対象ポイントでは、前述したようなログレベル「2」の詳細度でのログの取得が行われる。そして、図4のNo.1及びNo.3の行においてそれぞれ示されている対象ポイントでは、前述したようなログレベル「1」の詳細度でのログの取得が行われる。一方、図4のNo.5からNo.8までの各対象ポイントでは、ログレベル「0」とされているので、ログの取得は行われない。
【0170】
この処理に続くS202の判定処理により、初期化及びトレーニングが実行されているDIMM20のメモリ領域でメモリエラーの発生を検知したか否かが判定される。ここでは、このときにはメモリエラーは発生していないものとする。従って、この判定処理の結果としてS207に処理が進む。
【0171】
すると、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでは、このときには初期化及びトレーニングが実施されていないメモリ領域が残っているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。
【0172】
その後、初期化及びトレーニングが実行されているDIMM20においてUEが発生したとする。すると、上述した各処理の繰り返しにおけるS202の判定処理により、メモリエラーの発生が検知されたと判定されて、S203に処理が進む。なお、UEが発生したDIMM20についての対象ポイントは、1回目の起動時処理のときと同一の対象ポイント、すなわち、CPU(0)、MC(0)、CH(00)、DIMM(001)で特定される対象ポイントであったとする。
【0173】
このとき、S203の処理により、NVRAM60で保存されている、メモリエラーの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新では、図5に示したテーブルにおけるNo.2の行における「UE回数」のデータが、初期状態の値である「0」から「1」へと変更される。
【0174】
その後、S204の判定処理により、S202の処理により発生を検知したと判定されたメモリエラーがUEであると判定されるので、S205に処理が進む。すると、S205の判定処理により、UEの発生が検知されたDIMM20でのUEの発生は1回目(2回目の起動時処理の開始後初めて)であると判定されるので、S206に処理が進む。
【0175】
このとき、S206の処理により、NVRAM60で保存されている、UEの発生が検知されたDIMM20についての対象ポイントのメモリエラー情報80が更新される。この更新では、図5に示したテーブルのNo.2の行における「UE発生時間」のデータとして、S202の処理により発生を検知したと判定されたUEの発生時間の値が代入される。
【0176】
その後、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでも、このときには初期化及びトレーニングが実施されていないメモリ領域が依然として残されているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。この各処理の繰り返しにおいて、今度は、メモリエラーへの発生が検知されないまま、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対する初期化及びトレーニングの実施が終了したとする。すると、S207の判定処理の結果がYESとなって図7の処理が終了する。
【0177】
メモリトレーニング処理が終了すると、図6の起動時処理におけるS104に処理が戻る。このときのS104の判定処理により、メモリエラーの発生が検知されたと判定されてS105に処理が進む。すると、S105の判定処理により、S103のメモリトレーニング処理において発生が検知されたメモリエラーのうちに、UEが含まれていたと判定されて、S106に処理が進む。
【0178】
このときには、UEの発生が検知されていたDIMM20についての対象ポイントにて、ログレベル「3」による高い詳細度でのログの取得が行われている。従って、S106の判定処理の判定結果はYESとなり、S107に処理が進む。すると、S107の処理により、当該対象ポイントに関するDIMM20を縮退させて非使用とされ、その後はS110に処理が進む。
【0179】
すると、このときのS110の処理により、装置再起動カウンタのカウント値が進められて「1」から「2」とされると共に、情報処理装置1の再起動が行われる。すると、CPU(0)が情報処理装置1の初期化の処理を開始して図6の起動時処理を再度開始する。
【0180】
[3-5-3:3回目の起動時処理]
【0181】
3回目の起動時処理が開始されると、まず、S101の処理により、メモリエラー情報80とログレベル情報70とがNVRAM60から取得される。なお、このときにNVRAM60で保存されているログレベル情報70は図4に例示したデータとなっている。一方、このときにNVRAM60で保存されているメモリエラー情報80は、図5に示したテーブルのNo.2の行における「UE回数」のデータが「1」となっている。また、当該No.2の行における「UE発生時間」のデータが、直近に実行された図7のS206の処理によって代入された値となっている。
【0182】
続くS102の処理では、メモリエラー情報80に基づいたログレベル情報70の更新とメモリエラー情報80の初期化とが行われる。
【0183】
上述したメモリエラー情報80のデータに対して前述したルールを適用すると、No.2の行において示されている対象ポイントについてはログレベル「3」との決定がなされる。但し、この時点でのログレベル情報70が示されている図4のデータ例を参照すると、No.2の行において示されている対象ポイントは既にログレベル「3」とされている。この場合には、当該対象ポイントについてのログレベル「3」に相当する詳細度の高いログが取得されていると判断され、当該対象ポイントについてはログレベルが初期状態に戻されてログレベル「1」とされる。また、この他の対象ポイントついては、メモリエラーの発生が検知されていないので、いずれも初期状態であるログレベル「1」との決定がなされる。
【0184】
以上の結果、各対象ポイントについてのログレベル情報70は、いずれもログレベル「1」とされる。また、メモリエラー情報80の初期化により、メモリエラー情報80は、図5に示したテーブルにおけるNo.1からNo.8の全てについて、「CE回数」、「UE回数」、及び「UE発生時間」の各データがいずれも「0」とされる。
【0185】
次に、S103のメモリトレーニング処理により、メモリ初期化部110によるDIMM20に対する初期化及びトレーニングの実行が開始され、並行して図7の処理が開始される。
【0186】
図7の処理が開始されると、まず、S201の処理により、初期化及びトレーニングが実行されているDIMM20についての対象ポイントでのログが、当該対象ポイントのログレベルに応じた詳細度で取得されてBMC50へ出力される。このとき、NVRAM60で保存されているログレベル情報70は、全ての対象ポイントについてログレベル「1」に設定されている。従って、このときのS201の処理では、初期化及びトレーニングが実行されているDIMM20についての対象ポイントにて、ログレベル「1」の詳細度でのログの取得が行われる。
【0187】
この処理に続くS202の判定処理により、初期化及びトレーニングが実行されているDIMM20のメモリ領域でメモリエラーの発生を検知したか否かが判定される。ここでは、このときにはメモリエラーが発生していないものとする。従って、この判定処理の結果としてS207に処理が進む。
【0188】
すると、S207の判定処理により、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対して実施されたか否かが判定される。ここでは、このときには初期化及びトレーニングが実施されていないメモリ領域が残っているものとする。従って、この判定処理の結果としてS201に処理が戻り、その後はS201、S202、及びS207の順序で各処理が暫く繰り返される。この各処理の繰り返しにおいて、メモリエラーへの発生が検知されないまま、情報処理装置1が備えている全てのDIMM20の全てのメモリ領域に対する初期化及びトレーニングの実施が終了したとする。すると、S207の判定処理の結果がYESとなって図7の処理が終了する。
【0189】
メモリトレーニング処理が終了すると、図6の起動時処理におけるS104に処理が戻る。このときのS104の判定処理により、メモリエラーの発生が検知されてないと判定されて、図6の処理が終了する。
【0190】
ログの取得と保存の手法の第2の例では、以上のようにして、情報処理装置1の起動時におけるログが取得されて保存される。従って、初期化処理に関するログの保存領域の効率的な使用が可能になる。
【0191】
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができるであろう。
【符号の説明】
【0192】
10 CPU
11 メモリコントローラ
20 DIMM
30 チャネル
40 SB
50 BMC
60 NVRAM
70 ログレベル情報
80 メモリエラー情報
100 BIOS
110 メモリ初期化部
111 ログ制御部
120 メモリエラー処理部
121 エラー情報保存部
130 ログ送信部
140 エラー重度判定部
150 ログレベル情報管理部
200 BMC-FW
210 ログ受信部
220 ログデータ
図1
図2
図3
図4
図5
図6
図7