以下に、本願の開示する情報処理装置、情報処理システム、情報処理装置制御プログラム及び情報処理装置制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理システム、情報処理装置制御プログラム及び情報処理装置制御方法が限定されるものではない。
図1は、サーバの構成図である。情報処理装置であるサーバ1は、図1に示すように、システムボード10、ファン11、管理ボード12、フレキシブルI/Oスイッチ13、I/Oユニット14及び電源15を有する。
ファン11は、本実施例ではサーバ1内に複数配置される。ただし、ファン11は、1つであってもよい。また、ファン11は、システムボード10、管理ボード12、フレキシブルI/Oスイッチ13及びI/Oユニット14を冷却する。
電源15は、本実施例ではサーバ1内に複数配置される。ただし、電源15は、1つであってもよい。電源15は、システムボード10、ファン11、管理ボード12、フレキシブルI/Oスイッチ13及びI/Oユニット14に電源を供給する。
システムボード10は、サーバ1内に複数配置される。ただし、システムボード10は、1つであってもよい。システムボード10は、BMC101、CPU102、メモリコントローラ103及びDIMM104を有する。
DIMM104は、主記憶装置である。DIMM104は、メモリコントローラ103からの制御を受けて、データの格納及び出力を行う。DIMM104は、システムボード10上に設けられたメモリスロットに挿入されることでシステムボード10に実装される。ここで、図1では、DIMM104は1つしか図示していないが、実際には、DIMM104は、システムボード10上に複数搭載されてもよい。
BMC101は、電圧・温度等のエラーの監視、エラー情報の通報、電源制御等のシステム固有の制御等、システムの状態を監視するシステム制御装置である。また、BMC101は、DIMM104の実際の物理的な搭載情報を取得する。そして、メモリ試験の実行の指示を試験サーバから受けると、BMC101は、DIMM104の試験用の搭載パターンを表すメモリの仮想的な搭載情報を生成しCPU102へ通知する。
CPU102は、演算処理装置である。CPU102は、DIMM104及びI/Oユニット14などを用いて演算処理を行う。また、CPU102は、BMC101から入力されたDIMM104の仮想的な搭載情報を用いてDIMM104の試験を行う。BMC101及びCPU102によるメモリ試験の機能については後で詳細に説明する。CPU102は、DIMM104に対するデータの読み出し及び書き込みを行う場合、メモリコントローラ103を介して処理を行う。ここで、図1では、CPU102は1つしか図示していないが、実際には、CPU102は、システムボード10上に複数搭載されてもよい。
メモリコントローラ103は、DIMM104に対してデータの書き込み及び読み出しを行う。メモリコントローラ103は、CPU102からの指示を受けて、受けた指示にしたがいDIMM104に対するデータの書き込み及び読み出しを行う。ここで、図1では、メモリコントローラ103は1つしか図示していないが、実際には、メモリコントローラ103は、システムボード10上に複数搭載されてもよい。
図2は、システムボード上に搭載されるDIMMの搭載図である。図2は、システムボード10上のメモリスロット105にDIMM104が搭載された状態を示す。本実施例では、図2に示すように、システムボード10上にメモリスロット105が48個配置されている場合で説明する。図2では、48個全てのメモリスロット105にDIMM104が搭載されている状態を表す。そして、図2においてメモリスロット105の中に記載されたDIMMを表す情報における「#」を含む#から後の3つの符号が、各メモリスロット105のスロット番号に対応する。例えば、「DIMM#1D5」は、スロット番号#1D5のメモリスロット105に搭載されたDIMM104を表す。
図2に示すように、1つのメモリコントローラ103が6つのDIMM104を管理する。そして、1つのCPU102が、4つのメモリコントローラ103に接続され、合計24個のDIMM104を使用する。
さらに、DIMM104は、図3に示す搭載規則テーブル150で示される順序にしたがってシステムボード10に搭載される。図3は、DIMMの搭載規則を表す図である。本実施例では、DIMM104の動作モードとして、ノーマルモード、ミラーモード及びスペアモードの3つのモードがある。搭載規則テーブル150では、動作モード毎に、メモリを搭載するスロットの順番が記載してある。DIMMスロットの行に記載された符号が、図2の各メモリスロット105のスロット番号に対応する。搭載規則テーブル150では、#を抜いてメモリスロット105の番号を表す。またここでは、搭載規則テーブル150において、スロット番号#0A0〜#0D5までのメモリスロット105を用いるCPU102をCPU#0とし、スロット番号#1A0〜#1D5までのメモリスロット105を用いるCPU102をCPU#1とする。
例えば、ノーマルモードの場合、DIMM104は、スロット番号#0A0,#0A3,#1A0及び#1A3のメモリスロット105に搭載された状態が最小の搭載状態である。この状態からDIMM104を増設する場合、番号が2,3,4・・・の順に対応する各メモリスロット105にDIMM104が搭載される。これは、動作モードが、ミラーモードの場合もスペアモードの場合も同様である。
フレキシブルI/Oスイッチ13は、システムボード10とI/Oユニット14との接続経路を切り替えるクロスバスイッチである。フレキシブルI/Oスイッチ13は、あるシステムボード10に対していずれかのI/Oユニット14を接続する。フレキシブルI/Oスイッチ13は、サーバ1内に複数搭載されてもよい。
I/Oユニット14は、本実施例では、サーバ1内に複数配置される。ただし、I/Oユニット14は、1つであってもよい。I/Oユニット14は、例えば、ハードディスク、CD、DVD及びUSBメモリなどの入出力装置である。I/Oユニット14は、フレキシブルI/Oスイッチ13を介してシステムボード10と接続される。I/Oユニット14は、例えばCPU102からの指示を受けて、データの入出力を実施する。
次に、図4を参照して、本実施例に係るサーバによるメモリ試験の機能の詳細について説明する。図4は、実施例1に係るメモリ試験を行うサーバ及び試験サーバのブロック図である。以下では、DIMMの動作モードの試験及び動作周波数の試験をまとめて、「メモリ試験」という。また、メモリ試験以外の、DIMM104チェック及び単体試験とメモリ試験とを合わせた試験の全体を「メモリ検証」という。
図4に示すように、メモリ検証を行うサーバ1は、ネットワーク3を介して試験サーバ2に接続されている。試験サーバ2は、試験に用いる情報の入力及び試験結果の収集を行うためのサーバである。この試験サーバ2が、「試験装置」の一例にあたる。
試験サーバ2は、単体試験実行部21、搭載パターン規則フォーマット入力部22、動作モード指定部23及び試験管理部24を有する。ここで、単体試験実行部21、搭載パターン規則フォーマット入力部22、動作モード指定部23及び試験管理部24は、いずれもメモリにそれらを実現するプログラムが格納され、CPUがメモリに格納されたプログラムを実行することによって実現される。
試験サーバ2の試験管理部24は、メモリ検証を開始させるための試験開始指示をサーバ装置制御部200を介してシステムボード制御部110の統括制御部113へ送信する。その後、試験管理部24は、サーバ装置制御部200を介して統括制御部113から構成チェックの結果を受信する。そして、試験管理部24は、通知された構成チェックの結果からDIMM104の構成の良否を判定する。試験管理部24は、DIMM104の構成に問題が無ければその旨を単体試験実行部21に通知する。
その後、試験管理部24は、単体試験のログをサーバ装置制御部200を介して統括制御部113から受信する。そして、試験管理部24は、通知された単体試験のログから、ハード的な故障の有無によりDIMM104の交換を行うか否かを判定する。DIMM104の交換を行う場合、試験管理部24は、DIMM104の交換をオペレータに報知した後、メモリ検証を終了する。
DIMM104のハード的な故障が発生していない場合、試験管理部24は、単体試験の終了を搭載パターン規則フォーマット入力部22及び動作モード指定部23へ通知する。その後、試験管理部24は、サーバ装置制御部200を介して統括制御部113からメモリ試験のログを取得し蓄積する。この試験管理部24が、「結果取得部」の一例にあたる。
単体試験実行部21は、試験サーバ2においてオペレータが試験項目を選択することで生成された図5に示すような試験管理テーブル210を記憶する。図5は、試験管理テーブルの一例の図である。試験管理テーブル210には、試験項目毎に、オペレータが選択した試験番号、試験回数及び試験オプションが登録される。試験番号は、異なる内容の試験ごとに割り当てられた番号である。
単体試験実行部21は、DIMM104の構成に問題が無い旨の通知を試験管理部24から受ける。そして、単体試験実行部21は、単体試験の実行の指示をサーバ装置制御部200を介してシステムボード制御部110の統括制御部113へ送信する。この時、単体試験実行部21は、試験管理テーブル210にしたがって、試験項目の順番に単体試験を実行するように統括制御部113に指示する。
搭載パターン規則フォーマット入力部22は、試験サーバ2においてオペレータが試験項目を選択することで生成された図6に示すような搭載パターン規則フォーマット220を記憶する。図6は、搭載パターン規則フォーマットの一例の図である。搭載パターン規則フォーマット220には、メモリスロット105に搭載されたDIMM104の種類毎に、試験パターンが登録される。ここでのDIMM104の種類とは、メモリ容量の違いによる種類分けである。搭載パターン規則フォーマット220の左端に記載した試験パターン番号(P)の値が試験パターンの識別番号にあたる。さらに、試験パターンには、複数種類の試験を含む場合がある。試験パターンに含まれる試験は、試験番号(x)がふられる。例えば、図6の試験パターン番号(P)が「4」の試験パターンには、試験番号(x)が1〜mの試験が含まれる。そして、試験番号(x)毎に、搭載パターンが登録される。さらに、搭載パターン規則フォーマット220では、搭載パターンが無くなった後の試験パターン番号(P)の欄には、終了値を設定する。
この搭載パターン規則フォーマット220における試験パターン番号(P)及び試験番号(x)に応じた搭載パターンは、オペレータが自由に設定することが可能である。搭載パターンには、エラーが発生しやすいパターンを設定されることが好ましい。
搭載パターン規則フォーマット入力部22は、単体試験の終了の通知を試験管理部24から受ける。そして、搭載パターン規則フォーマット入力部22は、搭載パターン規則フォーマット220をサーバ装置制御部200を介してシステムボード制御部110へ送信する。この搭載パターン規則フォーマット入力部22が、「情報入力部」の一例にあたる。
動作モード指定部23は、単体試験の終了の通知を試験管理部24から受ける。そして、動作モード指定部23は、予めオペレータから指定されたメモリ試験で用いる動作モードをサーバ装置制御部200を介してシステムボード制御部110へ送信する。
次に、サーバ1について説明する。サーバ1は、図4に示すように、サーバ装置制御部200を有する。さらに、サーバ1に搭載されたシステムボード10は、システムボード制御部110、BIOS実行部120及びDIMM104を有する。
サーバ装置制御部200は、図1における管理ボード12によって実現される。サーバ装置制御部200は、システムボード10と試験サーバ2との間の通信を中継する。以下の説明では、説明の都合上、システムボード10と試験サーバ2とが直接通信を行うように説明するが、実際には、サーバ装置制御部200が通信を仲介する。
システムボード制御部110は、試験用搭載情報テーブル作成部111、SPD(Serial Presence Detect)読出部112及び統括制御部113を有する。
統括制御部113は、試験開始の指示を試験管理部24から受信する。そして、統括制御部113は、メモリ検証を開始する。
統括制御部113は、DIMM104の構成をチェックする。具体的には、システムボード10のメモリスロット105にDIMM104が搭載されているか、不良なDIMM104が無いか、搭載されているDIMM104がサポートされているメモリかなどをチェックする。さらに、統括制御部113は、メモリの容量をチェックする。そして、統括制御部113は、チェック結果を試験サーバ2の試験管理部24に通知する。
その後、統括制御部113は、DIMM104の単体試験を行う。具体的には、統括制御部113は、サーバ1のオンオフなどを行いDIMM104のハード的な確認を行う。この場合、統括制御部113は、CPU102とともに単体試験を行ってもよい。そして、統括制御部113は、単体試験のログを収集する。その後、統括制御部113は、収集した単体試験のログを試験サーバ2の試験管理部24に通知する。
その後、BIOS実行部120によるある項目の1回のメモリ試験が終了すると、統括制御部113は、メモリ試験のログをBIOS実行部120から取得する。次に、統括制御部113は、試験サーバ2の試験管理部24から試験終了の指示を受けたか否かを判定する。試験終了の指示を受けた場合、統括制御部113は、メモリ試験を終了する。
これに対して、試験終了の指示を受けていない場合、統括制御部113は、試験サーバ2から繰り返し指示を受けたか否かを判定する。ここで、繰り返し指示は、この段階で統括制御部113が、繰り返しを実行するか否かの問い合わせを試験管理部24に行い、試験管理部24からの応答により判定してもよい。また、統括制御部113は、例えば試験情報を取得後ログ採取までの間に試験管理部24から繰り返し指示の入力を受けたか否かによりこの判定を行ってもよい。
繰り返し指示を受けていれば、統括制御部113は、試験用搭載情報テーブル作成部111に前回と同様の試験を行わせる。これに対して、繰り返し指示を受けていなければ、統括制御部113は、試験の次段階への進行を試験用搭載情報テーブル作成部111に通知する。
その後、統括制御部113は、メモリ試験の完了の通知を試験用搭載情報テーブル作成部111から受ける。そして、統括制御部113は、採取した全てのログを試験サーバ2の試験管理部24へ送信する。
SPD読出部112は、SPDの読み出し指示を試験用搭載情報テーブル作成部111から受信する。そして、SPD読出部112は、システムボード10に搭載された全てのDIMM104のSPDを読み出す。SPDの情報には、DIMM104の容量、ベンダID(Identifier)、シリアルナンバー及び種類などが含まれる。次に、SPD読出部112は、読み出した全てのDIMM104のSPDを試験用搭載情報テーブル作成部111に送信する。このSPD読出部112が、「状態取得部」の一例にあたる。
試験用搭載情報テーブル作成部111は、搭載パターン規則フォーマット220を試験サーバ2の搭載パターン規則フォーマット入力部22から受信する。次に、試験用搭載情報テーブル作成部111は、SPDの読み出し指示をSPD読出部112へ送信する。その後、試験用搭載情報テーブル作成部111は、システムボード10に搭載された全てのDIMM104のSPDをSPD読出部112から取得する。そして、試験用搭載情報テーブル作成部111は、システムボード10に搭載された全てのDIMM104のSPD情報を含んだ図7に示す実搭載情報テーブル301を作成する。この実搭載情報テーブル301が、「実装情報」の一例にあたる。
図7は、実搭載情報テーブルの一例の図である。図7の実搭載情報テーブル301には、上部に記載された符号が、図2の各メモリスロット105のスロット番号に対応する。図7の実搭載情報テーブル301では、#を抜いてメモリスロット105の番号を表す。
図7では、全てのメモリスロット105にDIMM104が搭載された状態を表す。また、図7では一例として搭載位置を記載しているが、実際には、DIMM104毎にDIMM104の容量、ベンダID(Identifier)、シリアルナンバー及び種類などが登録される。
次に、試験用搭載情報テーブル作成部111は、試験に用いるメモリの動作モードの指定を試験サーバ2の動作モード指定部23から受信する。例えば、試験用搭載情報テーブル作成部111は、ノーマルモード、ミラーモード及びスペアモードの3種類の動作モードの指定を受ける。そして、試験用搭載情報テーブル作成部111は、受信した動作モードの中から1つの動作モードを選択する。
そして、試験用搭載情報テーブル作成部111は、搭載パターン規則フォーマット220にしたがって、選択した動作モードにおいて指定された搭載パターンを順次取得する。ここで、試験用搭載情報テーブル作成部111は、実搭載情報テーブル301においてメモリスロット105に搭載されているDIMM104を用いた搭載パターンを取得する。例えば、基本構成が同じDIMM104であれば、試験用搭載情報テーブル作成部111は、DIMM104のランク数などの情報を変更することで、大きい容量のDIMMを実際よりも小さい容量のDIMMとして動作させる搭載パターンを用いることができる。すなわち、試験用搭載情報テーブル作成部111は、DIMM104の搭載枚数及び容量以下の搭載枚数及び容量を条件とする搭載パターンを用いる。そのため、より多くの搭載パターンで試験を行うためには、できるだけ容量の大きいDIMM104をできるだけ多く搭載しておくことが好ましい。
次に、試験用搭載情報テーブル作成部111は、取得した搭載パターンにしたがって、仮想的なDIMM104の搭載状態を表す試験用搭載情報テーブルを作成する。この試験用搭載情報テーブルが、「搭載情報」の一例にあたる。そして、試験用搭載情報テーブル作成部111は、作成した試験用搭載情報テーブルをBIOS実行部120へ送信し、試験用搭載情報テーブルで表されるDIMM104の搭載状態に対してメモリ試験を実行させる。試験用搭載情報テーブル作成部111は、選択した動作モードに対して搭載パターン規則フォーマット220で指定された全種類の搭載パターンでメモリ試験をBIOS実行部120に実行させる。
さらに、試験用搭載情報テーブル作成部111は、指定された動作モードの全てに対して、搭載パターン規則フォーマット220で指定された全種類の搭載パターンでのメモリ試験をBIOS実行部120に実行させる。その後、全ての試験が終了すると、試験用搭載情報テーブル作成部111は、メモリ試験の完了を統括制御部113へ通知する。この試験用搭載情報テーブル作成部111による全動作モード毎の全搭載パターンの選択方法については後で詳細に説明する。この試験用搭載情報テーブル作成部111が、「試験制御部」の一例にあたる。
BIOS実行部120は、CPU102によって実現される。BIOS実行部120は、メモリ初期化部121を有する。メモリ初期化部121が行うメモリ試験の処理は、CPU102によって実行されるBIOSによって実行される処理の一部にあたる。
BIOS実行部120は、試験情報とともに試験用搭載情報テーブルを試験用搭載情報テーブル作成部111から受信する。そして、BIOS実行部120のメモリ初期化部121は、サーバ1を起動しDIMM104の初期化、メモリ空間の割り当て及びメモリアクセスなどを行ってメモリ試験を実施する。このメモリ初期化部121が、「試験部」の一例にあたる。また、BIOS実行部120を実現するCPU102が、「試験装置」の一例にあたる。
ここで、DIMM104の動作周波数は、DIMM104の搭載パターン、DIMM104の種類及び動作モードによって異なる。ただし、DIMM104の動作周波数は、システムボード制御部110によってBIOS実行部120に明示的に設定されるものではない。試験用搭載情報テーブル作成部111が、DIMM104の搭載パターンとして搭載位置を含む搭載枚数及びDIMM104の容量を設定することで、BIOS実行部120が自動的に動作周波数を決定する。
例えば、図8は、DIMM容量及び搭載枚数と動作周波数との関係を表す図である。図8の1DPC(DIMM Per Channel)構成とは、1つのメモリコントローラ103が制御する3つのメモリスロット105の中に1枚のDIMM104が搭載されている状態を表す。図8に示すように、DIMM104の搭載枚数とDIMM104の容量に応じてDIMM104の動作周波数が決定される。BIOS実行部120は、この動作周波数に応じてDIMM104のメモリ試験を行う。
このように、DIMM104の搭載パターンを決定することで、BIOS実行部120は、自動的に動作周波数を変更したメモリ試験を実施することができる。
図9は、BMC及びCPUとDIMMとの接続状態を模式的に表す図である。実際には、BMC101及びCPU102は、メモリコントローラ103を介してDIMM104に接続するが、ここでは説明の都合上、メモリコントローラ103を省略して表す。BMC101及びCPU102はスイッチ106を介してDIMM104と接続される経路を有する。スイッチ106が切り替わることで、DIMM104は、BMC101又はCPU102の何れかに接続される。
本実施例に係るサーバ1では、メモリ試験の場合でなければ、BMC101及びCPU102は以下の動作を行う。BMC101は、サーバ1の電源オン前に、DIMM104のSPDにアクセスし、搭載されているDIMM104が搭載条件に違反していないかをチェックする。違反している場合は、BMC101は、エラーを表示し電源オンを抑止する。一方、CPU102は、サーバ1の電源オン時に、DIMM104のSPDを読んで搭載されているDIMM104の構成を認識して初期化を実行する。
このように、電源オン時にスイッチ106がCPU102側に切り替わり、CPU102がDIMM104に接続されると、CPU102はDIMM104の実際の物理的な搭載状態を読み込んでしまう。これでは、仮想的搭載状態を形成しメモリ試験を行うことが困難となる。
そこで、図10に示す方法で本実施例に係るサーバ1はメモリ試験を実行する。図10は、実施例1に係るサーバによるメモリ試験の流れを説明するための図である。本実施例に係るサーバ1では、メモリ試験時に、BMC101が、DIMM104から読み込んだSPDから実際の物理的なDIMM104の搭載状態を表す実搭載情報テーブル301を生成する。さらに、サーバ1の電源オン時にCPU102側にスイッチ106を切り替えることなく、BMC101に動作モードと搭載規則フォーマットを入力し、BMC101に、仮想搭載情報テーブル302及び容量情報テーブル303を生成させる。その後、BMC101は、仮想搭載情報テーブル302及び容量情報テーブル303から試験用搭載情報テーブルを作成し、CPU102に試験用搭載情報テーブルを送信することで、CPU102に仮想の搭載状態にDIMM104があると把握させる。これにより、CPU102は、実際の物理的な搭載状態とは異なる仮想の搭載状態のDIMM104についてメモリ試験を行う。
次に、図11を参照して、本実施例に係るサーバ1によるメモリ検証の全体的な流れについて説明する。図11は、実施例1に係るサーバによるメモリ検証のフローチャートである。
試験サーバ2の試験管理部24は、試験開始指示をサーバ装置制御部200を介してシステムボード制御部110の統括制御部113へ送信する。統括制御部113は、試験開始の指示を受信し、メモリ検証を開始する(ステップS1)。
統括制御部113は、DIMM104の構成をチェックする(ステップS2)。そして、統括制御部113は、チェック結果をサーバ装置制御部200を介して試験サーバ2の試験管理部24に通知する。試験管理部24は、通知された構成チェックの結果からDIMM104の構成の良否を判定し、構成に問題が無ければその旨を単体試験実行部21に通知する。
単体試験実行部21は、試験管理部24からDIMM104の構成に問題が無い旨の通知を受けると、単体試験の実行の指示をサーバ装置制御部200を介してシステムボード制御部110の統括制御部113へ送信する。統括制御部113は、DIMM104の単体試験を行う(ステップS3)。具体的には、統括制御部113は、サーバ1のオンオフなどを行いDIMM104のハード的な確認を行う。この場合、統括制御部113は、CPU102とともに単体試験を行ってもよい。
そして、統括制御部113は、単体試験のログを収集する(ステップS4)。その後、統括制御部113は、収集した単体試験のログをサーバ装置制御部200を介して試験サーバ2の試験管理部24に通知する。
試験管理部24は、単体試験のログをサーバ装置制御部200を介して統括制御部113から受信する。そして、試験管理部24は、通知された単体試験のログから、ハード的な故障の有無によりDIMM104の交換を行うか否かを判定する(ステップS5)。
DIMM104の交換を行う場合(ステップS5:肯定)、試験管理部24は、メモリ検証を終了する。これにより、サーバ1もメモリ検証を終了する。
これに対して、DIMM104の交換を行わない場合(ステップS5:否定)、試験管理部24は、単体試験の終了を搭載パターン規則フォーマット入力部22及び動作モード指定部23へ通知する。搭載パターン規則フォーマット入力部22は、単体試験の終了の通知を試験管理部24から受ける。そして、搭載パターン規則フォーマット入力部22は、搭載パターン規則フォーマット220をサーバ装置制御部200を介してシステムボード制御部110へ送信する。また、動作モード指定部23は、単体試験の終了の通知を試験管理部24から受ける。そして、動作モード指定部23は、メモリ試験で用いる動作モードをサーバ装置制御部200を介してシステムボード制御部110へ送信する。システムボード制御部110は、搭載パターン規則フォーマット220及び動作モードを受信する。そして、システムボード制御部110は、搭載パターン規則フォーマット220で指定された全ての搭載パターンでのメモリ試験を実施する(ステップS6)。
次に、図12を参照して、本実施例に係るサーバ1によるメモリ試験の流れについて説明する。図12は、実施例1に係るサーバによるメモリ試験のフローチャートである。図12のフローチャートは、図11におけるステップS6で実行される処理の一例にあたる。図12のフローチャートで示す処理は、試験用搭載情報テーブル作成部111による全動作モード毎の全搭載パターンの選択方法の一例にあたる。
試験用搭載情報テーブル作成部111は、搭載パターン規則フォーマット220を試験サーバ2の搭載パターン規則フォーマット入力部22から受信する(ステップS101)。
SPD読出部112は、システムボード10に搭載された全てのDIMM104のSPDを読み出す。試験用搭載情報テーブル作成部111は、システムボード10に搭載された全てのDIMM104のSPDをSPD読出部112から取得する。そして、試験用搭載情報テーブル作成部111は、システムボード10に搭載された全てのDIMM104のSPD情報を含んだ実搭載情報テーブル301を作成する(ステップS102)。
次に、試験用搭載情報テーブル作成部111は、試験に用いるメモリの動作モードの指定をサーバ装置100を介して試験サーバ2の動作モード指定部23から受信する。そして、試験用搭載情報テーブル作成部111は、受信した動作モードの中から1つの動作モードを選択する(ステップS103)。
次に、試験用搭載情報テーブル作成部111は、実搭載情報テーブル301に記載されたDIMM104の搭載数及び動作モードから、選択した動作モードにおける最大搭載番号(A)を算出する(ステップS104)。ここで、最大搭載番号(A)とは、図3に示したDIMM104の搭載順を表す番号の最も大きい番号にあたる。すなわち、最大搭載番号(A)は、選択した動作モードにおいて、DIMM104がどの順番の番号まで搭載されているかを表す値である。試験用搭載情報テーブル作成部111は、後述する仮想搭載情報テーブル302を作成する際に、最大搭載番号(A)以下の順番のメモリスロット105であれば、DIMM104が搭載されているとして扱うことができる。
例えば、動作モードがノーマルモードの場合、試験用搭載情報テーブル作成部111は、DIMM104の搭載数を2で除算した値を最大搭載番号(A)とする。また、動作モードがミラーモードの場合、試験用搭載情報テーブル作成部111は、DIMM104の搭載数を4で除算した値から1を減算した値を最大搭載番号(A)とする。また、動作モードがスペアモードの場合、試験用搭載情報テーブル作成部111は、DIMM104の搭載数を6で除算した値を最大搭載番号(A)とする。
次に、試験用搭載情報テーブル作成部111は、試験用搭載番号(B)を初期値に設定する(ステップS105)。具体的には、試験用搭載情報テーブル作成部111は、試験用搭載番号(B)の初期値を最大搭載番号(A)から1を減算した値とする。試験用搭載番号(B)とは、仮想搭載情報テーブル302を作成する際に、仮想的にどの順番のメモリスロット105までメモリが搭載されているとするかを表す番号である。試験用搭載情報テーブル作成部111は、試験用搭載番号(B)以下の順番の番号を有するメモリスロット105にDIMM104が搭載されているものとして取り扱う。さらに、試験用搭載情報テーブル作成部111は、試験パターン番号(P)を初期値である「1」に設定する。
次に、試験用搭載情報テーブル作成部111は、試験パターン番号(P)を初期値である「1」に設定する(ステップS106)。
次に、試験用搭載情報テーブル作成部111は、仮想搭載情報テーブル302を作成する(ステップS107)。具体的には、試験用搭載情報テーブル作成部111は、試験用搭載番号(B)より順番が大きいメモリスロット105にDIMM104が搭載されていないことを仮想的に表す非搭載フラグを設定して、図13に示すような仮想搭載情報テーブル302を作成する。図13は、仮想搭載情報テーブルの一例の図である。ここでは、試験用搭載番号(B)が3の場合であり、試験用搭載情報テーブル作成部111は、順番が4以上のメモリスロット105に非搭載フラグである「−」を設定する。
次に、試験用搭載情報テーブル作成部111は、搭載パターン規則フォーマット220における試験パターン番号(P)における最大の番号に試験番号(x)を設定する(ステップS108)。例えば、図6の搭載パターン規則フォーマット220における16GBのDIMM104が搭載されている場合の試験パターン番号(P)が4の場合であれば、試験用搭載情報テーブル作成部111は、試験番号(x)を「m」と設定する。
次に、試験用搭載情報テーブル作成部111は、実搭載情報テーブル301に登録された搭載されているDIMM104の種類に応じた試験パターン番号(P)の試験番号(x)に該当する搭載パターンを、搭載パターン規則フォーマット220から取得する。そして、試験用搭載情報テーブル作成部111は、取得した搭載パターンの条件にその時点の条件が適合しているか否かを判定する(ステップS109)。例えば、その時点の試験用搭載番号(B)が3である場合、試験用搭載番号(B)が2であるという搭載パターンの条件であれば、試験用搭載情報テーブル作成部111は、搭載パターンの条件に不適合と判定する。搭載パターンの条件に不適合の場合(ステップS109:否定)、試験用搭載情報テーブル作成部111は、搭載パターン不適合を統括制御部113へ通知する。そして、処理はステップS116に進む。
一方、搭載パターンの条件に適合する場合(ステップS109:肯定)、試験用搭載情報テーブル作成部111は、取得した搭載パターンにしたがい容量情報テーブル303を作成する(ステップS110)。具体的には、試験用搭載情報テーブル作成部111は、取得した搭載パターンにしたがい各メモリスロット105毎の搭載するDIMM104の容量を設定して図14に示すような容量情報テーブル303を作成する。図14は、容量情報テーブルの一例の図である。試験用搭載情報テーブル作成部111は、例えば、図13に示す仮想搭載情報テーブル302を用いる場合であって、全てのDIMM104の容量を16GBとする搭載パターンを用いる場合、図14に示す容量情報テーブル303を生成する。
ここで、例えば、DIMM104を8枚搭載し全て16GBとする搭載パターンから、DIMM104を20枚搭載し全て8GBとする搭載パターンへと変更する場合を考える。この場合、仮想搭載情報テーブル302は、図13の状態から図15の状態へ変化する。また、容量情報テーブル303は、図14の状態から図16の状態へ変化する。このように、試験用搭載情報テーブル作成部111は、DIMM104の物理的な搭載状態を変更することなく、搭載パターンを変化させることができる。図15は、他の搭載パターンにおける仮想搭載情報テーブルの一例の図である。また、図16は、他の搭載パターンにおける容量情報テーブルの一例の図である。
次に、試験用搭載情報テーブル作成部111は、作成した仮想搭載情報テーブル302及び容量情報テーブル303を用いて試験用搭載情報テーブルを生成する(ステップS111)。ここで、試験用搭載情報テーブルは、メモリスロット105毎に仮想的な搭載状態及び容量の設定を定義し、BIOSに移入することのできるコードで表したテーブルである。具体的には、試験用搭載情報テーブルには、DIMM104の実装状態又は未実装を表す値、パッケージランク情報及びデバイス幅情報などがメモリスロット105毎に登録される。
次に、試験用搭載情報テーブル作成部111は、実行する試験を表す試験情報を試験サーバ2の試験管理部24から受信する(ステップS112)。
次に、試験用搭載情報テーブル作成部111は、試験情報とともに試験用搭載情報テーブルをBIOS実行部120へ送信する(ステップS113)。
BIOS実行部120は、試験情報とともに試験用搭載情報テーブルを試験用搭載情報テーブル作成部111から受信する。そして、BIOS実行部120のメモリ初期化部121は、メモリ試験を実行する(ステップS114)。BIOS実行部120は、非搭載フラグが設定されたメモリスロット105に搭載されているDIMM104に対しては、初期化を行わず、また、メモリ領域としても使用しない。
BIOS実行部120によるメモリ試験が終了すると、統括制御部113は、メモリ試験のログを採取する(ステップS115)。
次に、統括制御部113は、試験サーバ2の試験管理部24から試験終了の指示を受けたか否かを判定する(ステップS116)。試験終了の指示を受けた場合(ステップS116:肯定)、統括制御部113は、ステップS125へ進む。
これに対して、試験終了の指示を受けていない場合(ステップS116:否定)、統括制御部113は、試験サーバ2から繰り返し指示を受けたか否かを判定する(ステップS117)。繰り返し指示を受けた場合(ステップS117:肯定)、統括制御部113は、ステップS113へ戻る。
これに対して、繰り返し指示を受けていない場合(ステップS117:否定)、統括制御部113は、試験の次段階への進行を試験用搭載情報テーブル作成部111に通知する。試験用搭載情報テーブル作成部111は、試験の次段階への進行の通知を受けて、試験番号(x)が0か否かを判定する(ステップS118)。
試験番号(x)が0以外の場合(ステップS118:否定)、試験用搭載情報テーブル作成部111は、試験番号(x)を1つデクリメントする(ステップS119)。すなわち、試験用搭載情報テーブル作成部111は、x=x−1とする。その後、試験用搭載情報テーブル作成部111は、ステップS109へ戻る。
これに対して、試験番号(x)が0の場合(ステップS118:肯定)、試験用搭載情報テーブル作成部111は、搭載パターン規則フォーマット220において試験パターン番号(P)が終了値であるか否かを判定する(ステップS120)。これにより、試験用搭載情報テーブル作成部111は、選択したモードにおける試験パターン番号(P)の搭載パターンを全て実行したか否かを判定する。
試験パターン番号(P)が終了値でない場合(ステップS120:否定)、試験用搭載情報テーブル作成部111は、試験パターン番号(P)を1つインクリメントする(ステップS121)。すなわち、試験用搭載情報テーブル作成部111は、P=P+1とする。その後、試験用搭載情報テーブル作成部111は、ステップS108へ戻る。
これに対して、試験パターン番号(P)が終了値の場合(ステップS120:肯定)、試験用搭載情報テーブル作成部111は、試験用搭載番号(B)が1か否かを判定する(ステップS122)。
試験用搭載番号(B)が1でない場合(ステップ122:否定)、試験用搭載情報テーブル作成部111は、試験用搭載番号(B)を1つデクリメントする(ステップS123)。すなわち、試験用搭載情報テーブル作成部111は、B=B−1とする。その後、試験用搭載情報テーブル作成部111は、ステップS106へ戻る。
これに対して、試験用搭載番号(B)が1の場合(ステップ122:肯定)、試験用搭載情報テーブル作成部111は、全動作モードの試験が完了したか否かを判定する(ステップS124)。試験が終わっていない動作モードがある場合(ステップS124:否定)、試験用搭載情報テーブル作成部111は、ステップS103へ戻る。
これに対して、全動作モードの試験が完了した場合(ステップS124:肯定)、試験用搭載情報テーブル作成部111は、メモリ試験の完了を統括制御部113へ通知する。統括制御部113は、メモリ試験の完了の通知を試験用搭載情報テーブル作成部111から受けると、採取した全てのログを試験サーバ2の試験管理部24へ送信する(ステップS125)。
次に、図17を参照して、BIOS実行部120によるメモリ試験の詳細について説明する。図17は、BIOS実行部によるメモリ試験の詳細を表すフローチャートである。図17のフローチャートで表される一連の処理は、図12におけるステップS114で実行される処理の一例にあたる。
BIOS実行部120は、図18に示す試験管理テーブル401、図19に示す試験テーブル402及び図20に示すイベントIDテーブル403を予め有する。
図18は、試験管理テーブルの一例を表す図である。試験管理テーブル401は、試験の実施状態及び結果などを登録するテーブルである。BIOS実行部120は、試験管理テーブル401を用いて試験の実行状態を管理する。
図19は、試験テーブルの一例を表す図である。試験テーブル402は、実行する試験の内容が登録されたテーブルである。BIOS実行部120は、この試験テーブル402に記載された試験内容の試験を行う。
図20は、イベントIDテーブルの一例を表す図である。イベントIDテーブル403は、メモリ試験において発生したイベントの内容などを表すテーブルである。BIOS実行部120は、イベントが発生した場合にイベントIDテーブル403を用いて処理を進める。
BIOS実行部120は、試験項目を1に設定する(ステップS201)。また、BIOS実行部120は、試験管理テーブル401の現在の試験項目の試験回数カウンタに試験回数を設定する。さらに、BIOS実行部120は、試験管理テーブル401の現在の試験項目の再テストの値を「0」に設定する。
次に、BIOS実行部120のメモリ初期化部121は、サーバ1を起動しDIMM104の初期化、メモリ空間の割り当て及びメモリアクセスなどを行ってメモリ試験を実施する(ステップS202)。
次に、BIOS実行部120は、試験管理テーブル401の現在の試験項目の試験回数カウンタを確認し、試験回数カウンタが0か否かを判定する(ステップS203)。試験回数カウンタが0でない場合(ステップS203:否定)、試験回数カウンタを1つデクリメントする(ステップS204)。その後、BIOS実行部120は、ステップS202に戻る。
これに対して、試験回数カウンタが0の場合(ステップS203:肯定)、BIOS実行部120は、実行したメモリ試験のログを採取し、イベントIDを試験管理テーブル401の結果の欄に登録する(ステップS205)。ここで、試験管理テーブル401の再テストの値が「0」であれば、BIOS実行部120は、第1結果にイベントIDを登録する。また、試験管理テーブル401の再テストの値が「1」であれば、BIOS実行部120は、第2結果にイベントIDを登録する。ここで、イベントIDの記録優先順位はイベントIDテーブル403の重要度がError、Warning、Info(Information)の順となる。その中でも、重要度がError又はWarningの場合、タイムスタンプの最も早いイベントIDが登録される。また、Infoの場合、タイムスタンプの最も遅いイベントIDが登録される。
次に、BIOS実行部120は、登録したイベントIDが試験管理テーブル401の現在の試験項目の期待値か否かを判定する(ステップS206)。登録したイベントIDが期待値に一致した場合(ステップS206:肯定)、BIOS実行部120は、試験管理テーブル401のステータスクリアを行いステップS213へ進む。
これに対して、登録したイベントIDが期待値に一致しない場合(ステップS206:否定)、BIOS実行部120は、イベントIDテーブル403の繰り返しの値から再試行を実施するか否かを判定する(ステップS207)。具体的には、BIOS実行部120は、イベントIDテーブル403における繰り返しの値が「1」であれば再試行を実施すると判定する。再試行を実施しない場合(ステップS207:否定)、BIOS実行部120は、試験管理テーブル401のステータスクリアを行いステップS213へ進む。
これに対して、再試行を実施する場合(ステップS207:肯定)、BIOS実行部120は、試験管理テーブル401の現在の試験項目の再テストの値を確認し、再テストが実行済みか否かを判定する(ステップS208)。具体的には、再テストの値が「0」の場合、BIOS実行部120は、再テストが行われていないと判定する。
再テストが行われていない場合(ステップS208:否定)、BIOS実行部120は、試験管理テーブル401の現在の試験項目の再テストの値に「1」を設定する(ステップS209)。そして、BIOS実行部120は、ステップS202へ戻る。
これに対して、再テストが実行済みの場合(ステップS208:肯定)、BIOS実行部120は、試験管理テーブル401の現在の試験項目の第1結果と第2結果とが一致しているか否かを判定する(ステップS210)。第1結果と第2結果とが一致しない場合(ステップS210:否定)、間欠的なファームウェアエラーや単なる警告である可能性が高いため、BIOS実行部120は、ファームウェアバグと判定する。そこで、BIOS実行部120は、試験管理テーブル401のステータスクリアを行いステップS213へ進む。
これに対して、第1結果と第2結果とが一致する場合(ステップS210:肯定)、BIOS実行部120は、イベントIDテーブル403を確認し、登録したイベントIDに対応するハードウェア故障フラグが「1」であるか否かを判定する(ステップS211)。ここで、イベントIDテーブル403におけるハードウェア故障の欄には、ハードウェアに起因するイベントIDであれば、ハードウェア故障フラグとして「1」が設定される。それ以外の場合、イベントIDテーブル403におけるハードウェア故障の欄には、「0」が設定される。
ハードウェア故障フラグが「1」の場合(ステップS211:肯定)、BIOS実行部120は、ハードウェア故障と判定し(ステップS212)、メモリテストを終了する。
これに対して、ハードウェア故障フラグが「0」の場合(ステップS211:否定)、BIOS実行部120は、試験管理テーブル401のステータスクリアを行いステップS213へ進む。
BIOS実行部120は、登録したイベントIDを有するイベントのイベントIDテーブル403に登録された対処を実施する(ステップS213)。
次に、BIOS実行部120は、試験管理テーブル401に登録された試験項目の実施が全て完了したか否かを判定する(ステップS214)。実施していない試験項目がある場合(ステップS214:否定)、BIOS実行部120は、試験項目の値を1つインクリメントする(ステップS215)。その後、BIOS実行部120は、ステップS202へ戻る。
これに対して、全ての試験項目の実施が完了している場合(ステップS214:肯定)、BIOS実行部120は、メモリ試験処理を終了する。
以上に説明したように、本実施例に係る情報処理装置は、BMCがDIMMの物理的な搭載状態を確認し、その情報を基に試験用の搭載パターンを生成し、生成した搭載パターンにしたがってメモリ試験をCPUに行わせる。すなわち、BMCは、実際の物理的な搭載状態とは異なった仮想の搭載状態をDIMMの搭載状態としてCPUに認識させテストを行わせる。これにより、DIMMの試験項目に合わせてDIMMの載せ替えを行わなくて済み、DIMMの挿抜を行わずに様々な搭載パターンでDIMMの試験を行うことができる。したがって、DIMMの載せ替えのオペレータの手間を削減することができる。さらに、挿抜のための情報処理装置の電源のオンオフを行わないため、連続して複数の搭載パターンのDIMMの試験を行うことができる。すなわち、情報処理装置に搭載されたメモリの試験を容易に実行することができ、メモリ試験の試験時間の効率化を図ることができる。
図21は、メモリ試験における作業時間の比較を表す図である。オペレータが搭載パターン毎にDIMM104を載せ替える従来の方式では、搭載パターン数を50とした場合、搭載パターンの切り替えに1.0時間かかる。これに対して、本実施例に係るサーバ1では、仮想的にDIMM104の搭載パターンを自動で変更するため、搭載パターンの切り替え時間は、0.2時間しかかからない。この搭載パターンの切り替え時間には、DIMM104の取り付け及び取り外し時間にサーバ1の起動時間を加えたものである。そして、メモリ試験の総時間としては、従来方式の場合には50時間かかるのに対して、本実施例に係るサーバ1を用いた場合、10時間しかかからない。このように、本実施例に係る情報処理装置を用いることで、メモリ試験の試験時間を大幅に短縮することができる。
さらに、本実施例に係る情報処理装置は、試験サーバと連携するためのインタフェースを有する。そして、搭載パターン規則フォーマット、メモリ試験の詳細な設定及び繰り返し指示などを試験サーバから受信することで、本実施例に係る情報処理装置及び試験サーバは、エラー発生時における再試験や切り分け試験を柔軟且つ自動的に行うことが可能である。