(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-01-06
(45)【発行日】2023-01-17
(54)【発明の名称】情報処理装置、情報処理方法及び情報処理プログラム
(51)【国際特許分類】
G06F 13/14 20060101AFI20230110BHJP
G06F 13/10 20060101ALI20230110BHJP
【FI】
G06F13/14 330B
G06F13/10 330C
(21)【出願番号】P 2018156828
(22)【出願日】2018-08-24
【審査請求日】2021-05-13
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002147
【氏名又は名称】弁理士法人酒井国際特許事務所
(72)【発明者】
【氏名】村山 孝
(72)【発明者】
【氏名】岩澤 憲司
【審査官】打出 義尚
(56)【参考文献】
【文献】国際公開第2014/076842(WO,A1)
【文献】米国特許出願公開第2012/0047309(US,A1)
【文献】特開2017-016514(JP,A)
【文献】特開2018-074565(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 13/14
G06F 13/10
(57)【特許請求の範囲】
【請求項1】
1つ又は複数の搭載デバイスの情報をBIOS(Basic Input Output System)から取得し、前記搭載デバイスの中からMCTP(Management Component Transport Protocol)を用いて通信を行う通信機能を有する1つ又は複数のデバイスを特定する特定部と、
前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを検出し、
検出したデバイスに対する前記MCTPを用いた通信に用いる通信情報の割り当てを順次実行する割当部と、
前記特定部により特定された前記デバイスのリストに含まれる前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記割当部から前記通信情報の取得を繰り返す取得部と
を備えたことを特徴とする情報処理装置。
【請求項2】
1つ又は複数の搭載デバイスの情報をBIOSから取得し、前記搭載デバイスの中から所定の通信機能を有する1つ又は複数のデバイスを特定する特定部と、
前記搭載デバイスの中から所定の通信機能を有する1つ又は複数のデバイスを検出し、
検出したデバイスに対する通信情報の割り当てを順次実行する割当部と、
前記特定部により特定された前記デバイスの全てに対する前記割当部による前記通信情報の割り当てが終了するまでにかかる割当時間を算出する算出部と、
前記算出部により算出された前記割当時間が経過したか否かを判定する判定部と、
前記判定部により前記割当時間が経過したと判定された場合に、前記割当部からの前記通信情報の取得を開始して、前記特定部により特定された前記デバイスのリストに含まれる前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記通信情報の取得を繰り返す取得部と
を備えたことを特徴とする情報処理装置。
【請求項3】
前記特定部は
、前記搭載デバイスの追加時に前記搭載デバイスの情報をOS(Operating System)上で動作する前記搭載デバイスの管理アプリケーションであるエージェントから取得することを特徴とする請求項1又は2に記載の情報処理装置。
【請求項4】
前記取得部により取得された前記通信情報を用いて前記特定部により特定された前記デバイスを制御する制御部をさらに備えたことを特徴とする請求項1~3のいずれか一つに記載の情報処理装置。
【請求項5】
管理装置に、1つ又は複数の搭載デバイスの情報をBIOSから取得させ、前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを特定させ、
通信情報管理装置に、
前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを検出させ、
検出されたデバイスに対する前記MCTPを用いた通信に用いる通信情報の割り当てを順次実行させ、
前記管理装置に、特定された前記デバイスのリストに含まれる前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記通信情報管理装置から前記通信情報の取得を繰り返させる
ことを特徴とする情報処理方法。
【請求項6】
管理プロセスに、1つ又は複数の搭載デバイスの情報をBIOSから取得させ、前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを特定させ、
通信情報管理プロセスに、
前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを検出させ、
検出されたデバイスに対する前記MCTPを用いた通信に用いる通信情報の割り当てを順次実行させ、
前記管理プロセスに、特定された前記デバイスのリストに含まれる前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記通信情報管理プロセスから前記通信情報の取得を繰り返させる
処理をコンピュータに実行させることを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法及び情報処理プログラムに関する。
【背景技術】
【0002】
情報処理装置に搭載されたデバイス同士がPCIe(Peripheral Component Interconnect express)バスを介して直接通信する技術として、MCTP(Management Component Transport Protocol) over PCIeという技術がある。MCTP over PCIeでは、PCH(Platform Controller Hub)上で動作するノードマネージャがバスオーナとなり、MCTPに対応したデバイスに対して通信用の識別子であるMCTP Endpoint ID(Identifier)を割り振る処理を行う。以下では、MCTPに対応したデバイスをMCTPデバイスと言う。MCTP Endpoint IDを割り振る処理はMCTP Discovery処理と呼ばれ、以下ではディスカバリ処理と表す。このディスカバリ処理により割り振られたMCTP Endpoint IDを使用することで、各MCTPデバイス同士の通信が可能となる。
【0003】
また近年、情報処理装置には、システムボード上にCPU(Central Processing Unit)とは独立して電源投入やエラー監視と言ったサーバの管理や制御を行うBMC(Baseboard Management Controller)が搭載されたものがある。BMCは、例えば、IPMI(Intelligent Platform Management Interface)の規格に準拠したインタフェースを用いてハードウェアの監視を行う。BMCは、自己が管理するMCTPデバイスリストに登録されたMCTPデバイスを監視する。BMCが管理するMCTPデバイスリストは、BMC内部のMCTPエージェントが、定期的にMCTPデバイス情報一覧をバスオーナであるノードマネージャから取得して作成する。具体的には、BMCは、バスオーナであるノードマネージャからBMCを含むMCTPデバイスの一覧をGet Routing Talbe Entriesコマンドを使用して取得して、MCTPデバイスリストを作成する。BMCから装置のデバイスを取得する外部の管理サーバなどは、BMCに対して有効なMCTPデバイスについて問い合わせを行い、BMCから通知された有効なMCTPデバイスに対して情報の採取を行う。
【0004】
BMCは、目的のMCTPデバイスとMCTP通信を行う場合、PCIeデバイスとしてのPCIeアドレス情報を基にMVTPデバイスリストからMCTP Endoint IDを取得する。そして、BMCは、取得したMCTP Endoint IDを用いて目的のMCTPデバイスと通信を行う。
【0005】
ここで、ディスカバリ処理について説明する。バスオーナであるノードマネージャは、PCIeバスの初期化時に初期化開始指示を情報処理装置に搭載された全てのデバイスに発行する。その後、ノードマネージャは、以下の処理を定期的に繰り返す。ノードマネージャは、情報処理装置にPCIeデバイスが搭載されているか否かを判定する。PCIeデバイスが存在する場合、ノードマネージャは、そのPCIeデバイスに対してEndpoint Discoveryコマンドを発行する。PCIeデバイスがEndpoint Discoveryコマンドに応答を返してきた場合、ノードマネージャは、そのPCIeデバイスにMCTP Endpoint IDを割り振る。既に検出されてMCTP Endpoint IDを割り当て済みのPCIeデバイスは、Endpoint Discoveryコマンドに対する応答を行わない。
【0006】
BMCは、自己のMCTPデバイスリストをノードマネージャが有する最新のMCTPデバイスの一覧と一致させるため、定期的にノードマネージャに対してポーリングを行い最新のMCTPデバイスの一覧を取得する。BMCは、自己に対するディスカバリ処理により自己のMCTP Endpoint IDが確定した時点からこのポーリング処理を開始する。
【0007】
なお、PCIeデバイス間の通信技術として、予め保持する構成パラメータに基づいてデバイス情報を構成し、構成したデバイス情報を用いてパケットによる通信を行う従来技術がある。また、作業の終了時刻を判定する技術として、作業の開始及び終了のイベントを検出して作業に費やした時間を算出し、算出した時間と予定時間を用いて遅延率を求め、求めた遅延率を用いて作業の終了時刻を推定する技術がある。
【先行技術文献】
【特許文献】
【0008】
【文献】特表2017-503238号公報
【文献】特開2011-215977号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
しかしながら、ポーリングを行って最新のMCTPデバイスの一覧を入手する方法では、BMCは、バスオーナであるノードマネージャと自己以外のMCTPデバイスとの間で行われているディスカバリ処理の進行状況を把握しない。そのため、BMCは、自己に対するディスカバリ処理完了後、どの時点でノードマネージャによる全てのPCIeデバイスに対するディスカバリ処理が完了したかを把握することが難しい。すなわち、BMCは、MCTPデバイスリストの完成を判定することが困難である。そこで、BMCは、定期的にノードマネージャに対してMCTPデバイスの一覧を要求し続けることになり、PCIeバスに定期的にBMCからノードマネージャに対して通信が発生する。ノードマネージャは、CPUと密接にかかわるPCH上で動作するため、定期的な通信が発生すると、情報処理装置の処理性能を低下させるおそれがある。
【0010】
また、構成パラメータに基づいて構成したデバイス情報を用いてパケット通信を行う従来技術では、ディスカバリ処理について考慮されておらず、この従来技術を用いても情報処理装置の処理性能を向上させることは困難である。さらに、作業の開始及び終了のイベントから遅延率を求めて終了時間を予測する従来技術を用いてもディスカバリ処理の完了時間を把握することは難しいため、情報処理装置の処理性能を向上させることは困難である。
【0011】
開示の技術は、上記に鑑みてなされたものであって、情報処理装置の処理性能を向上させる情報処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0012】
本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの一つの態様において、特定部は、1つ又は複数の搭載デバイスの情報をBIOSから取得し、前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを特定する。割当部は、前記搭載デバイスの中からMCTPを用いて通信を行う通信機能を有する1つ又は複数のデバイスを検出し、検出したデバイスに対する前記MCTPを用いた通信に用いる通信情報の割り当てを順次実行する。取得部は、前記特定部により特定された前記デバイスのリストに含まれる前記デバイスの全てについて割り当てられた前記通信情報を取得するまで前記割当部から前記通信情報の取得を繰り返す。
【発明の効果】
【0013】
1つの側面では、本発明は、情報処理装置の処理性能を向上させることができる。
【図面の簡単な説明】
【0014】
【
図2】
図2は、PCIeデバイス情報の一例の図である。
【
図3】
図3は、MCTP対応状況データベースの一例を示す図である。
【
図4】
図4は、予測MCTPデバイスリストの一例を示す図である。
【
図5】
図5は、実施例1に係るMCTPデバイス一覧の取得処理を表すシーケンス図である。
【
図6】
図6は、完了予測時間中にディスカバリ処理が完了しなかった場合のMCTPデバイス一覧の取得処理を表すシーケンス図である。
【
図7】
図7は、実施例1に係るMCTPデバイスリストの取得処理のフローチャートである。
【
図8】
図8は、実施例2に係るMCTPデバイス一覧の取得処理を表すシーケンス図である。
【
図9】
図9は、実施例2に係るMCTPデバイスリストの取得処理のフローチャートである。
【
図10】
図10は、情報処理装置のハードウェア構成図である。
【発明を実施するための形態】
【0015】
以下に、本願の開示する情報処理装置、情報処理方法及び情報処理プログラムの実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する情報処理装置、情報処理方法及び情報処理プログラムが限定されるものではない。
【実施例1】
【0016】
図1は、情報処理装置のブロック図である。情報処理装置1は、CPU11、PCH12、PCIeスロット14、PCIeデバイス140及びBMC15を有する。
【0017】
PCIeデバイス140は、PCIeの規格に準拠したIO(Input Output)デバイスであり、PCIeスロット14に装着される。PCIeデバイス140には、MCTP対応のデバイスと、MCTP非対応のデバイスが存在する。各PCIeスロット14に接続されるPCIeデバイス140は、全てがMCTP対応でもよいし、全てがMCTP非対応でもよいし、MCTP対応とMCTP非対応とが混在してもよい。以下では、PCIeスロット14に接続するデータバスをPCIeバスという。また、MCTPに対応したPCIeデバイス140を、MCTPデバイスという場合がある。このPCIeデバイス140が、「搭載デバイス」の一例にあたる。そして、MCTP通信を行う機能が、「所定の通信機能」の一例にあたる。また、MCTPデバイスが、「特定されたデバイス」の一例にあたる。
【0018】
CPU11は、情報処理装置1の起動時にBIOS(Basic Input Output System)110を実行して動作させる。BIOS110は、PCIeスロット14に接続されたPCIeデバイス140を含む周辺機器の設定及び管理を行う。
【0019】
また、BIOS110は、情報処理装置1の起動時に、各PCIeスロット14に接続されたPCIeデバイス140を含む周辺機器の認識を行う。そして、BIOS110は、認識したPCIeデバイス140の各種情報を含むPCIeデバイス情報をBMC15へ送信する。例えば、BIOS110は、IPMIコマンドであるSet PCI Device Infoを用いてPCIeデバイス情報をBMC15へ送信する。
【0020】
また、CPU11は、OS(Operating System)を動作させる。OS上では、エージェントが動作する。OS上で動作するPCIeスロット14を管理するエージェントは、ホットプラグ対応のPCIeデバイス140がPCIeスロット14に接続された場合、PCIeデバイス情報をBMC15へ送信する。
【0021】
PCIeデバイス情報は、例えば、
図2に示すフォーマット201で示す情報を含む。
図2は、PCIeデバイス情報の一例の図である。
図2に向かって左側の数字は、各情報のサイズをバイト単位で表した値である。本実施例においてBIOS110が送信するPCIeデバイス情報は、
図2のフォーマット201に示すように、ベンダIDであるPCI Vender ID及びデバイスIDであるPCI Device IDを含む。さらに、PCIeデバイス情報は、
図2のフォーマット201に示すように、PCIeアドレスであるPCI物理アドレス、PCIeデバイス140のファームウェアバージョン及びファームウェアバージョン長を含む。例えば、PCIeデバイス140としては、ネットワークアダプタカードなどが存在する。
【0022】
PCH12は、PCIeスロット14に接続するPCIeバスを含む各種データバスの管理を行う。PCH12は、ノードマネージャ120を動作させる。PCH12は、データバスの管理に関してCPU11と通信を行う。このPCH12が、「通信情報管理装置」の一例にあたる。
【0023】
ノードマネージャ120は、例えば、PCIeバスの管理を行う。ノードマネージャ120は、PCIeバスに接続されるPCIeスロット14に接続されたPCIeデバイス140のうちMCTPに準拠したPCIeデバイス140を検出する。ノードマネージャ120は、検出したMCTPデバイスが接続されたPCIeスロット14のPCIeアドレスを表すデバイスアドレスを取得する。そして、ノードマネージャ120は、検出したMCTPデバイスにMCTPデバイス間の直接通信に用いる通信用識別子を割り振るディスカバリ処理を行う。通信用識別子は、例えば、Endpoint IDである。そして、ノードマネージャ120は、各デバイスアドレスとそのデバイスアドレスを有するMCTPデバイスに割り振った通信識別子とを対応付けて記憶する。この、通信識別子が、「通信情報」の一例にあたる。
【0024】
さらに、ノードマネージャ120は、MCTPデバイス一覧の取得要求をMCTPデバイスリスト生成部154から受信する。そして、ノードマネージャ120は、保持する各デバイスアドレスとそのデバイスアドレスを有するMCTPデバイスに割り振った通信識別子との対応情報をMCTPデバイス一覧としてMCTPデバイスリスト生成部154へ送信する。ここで、ノードマネージャ120は、MCTPデバイス一覧の取得要求の受信時に保持する対応情報を送信するので、ディスカバリ処理を行っていないMCTPデバイスが残っている場合、そのMCTPデバイスに関する情報はMCTPデバイス一覧には含まれない。このノードマネージャ120が、「割当部」及び「通信情報管理プロセス」の一例にあたる。
【0025】
BMC15は、CPU11から独立して電源管理や状態監視といった情報処理装置1の基本的な操作を行う。例えば、BMC15は、MCTPデバイスであるPCIeデバイス140とMCTP通信を行い、そのPCIeデバイス140のデータを採取する。本実施例に係るBMC15は、予測MCTPデバイスリスト生成部151、完了時間算出部152、MCTP対応状況データベース153、MCTPデバイスリスト生成部154、処理完了判定部155、デバイス管理部156及び遅延タイマ157を有する。このBMC15が、「管理装置」の一例にあたる。また、BMC15が実行する各種処理が、「管理プロセス」の一例にあたる。
【0026】
MCTP対応状況データベース153は、MCTPデバイスを特定するための情報が格納される。MCTP対応状況データベース153は、例えば、
図3に示す特定情報202を含む。
図3は、MCTP対応状況データベースの一例を示す図である。MCTP対応状況データベース153は、特定情報202に含まれるMCTPデバイスの製造元を表すベンダID、MCTPデバイスの識別情報であるPCIデバイスID、及び、MCTPに対応したファームウェアバージョンの情報を有する。あるPCIeデバイス140のベンダID、PCIデバイスID及びファームウェアバージョンがMCTP対応状況データベース153に登録されている場合、そのPCIeデバイス140はMCTPデバイスである。また、ファームウェアバージョンが「null」の場合、ファームウェアバージョンの情報が存在しないことを表し、そのPCIeデバイス140がファームウェアバージョンに依らずMCTPに対応することを表す。
【0027】
予測MCTPデバイスリスト生成部151は、情報処理装置1の起動後に、各PCIeスロット14に接続されたPCIeデバイス140のそれぞれのPCIeデバイス情報の入力をBIOS110から受ける。具体的には、予測MCTPデバイスリスト生成部151は、各PCIeデバイス140について
図2で示したフォーマット201で示される各情報の入力を受ける。
【0028】
次に、予測MCTPデバイスリスト生成部151は、取得したPCIeデバイス情報に含まれるPCI物理アドレスの情報から、それぞれのPCIeデバイス140が接続されたPCIeスロット14を判別する。さらに、予測MCTPデバイスリスト生成部151は、各PCIeデバイス140のベンダID、デバイスID及びファームウェアバージョンをPCIeデバイス情報から取得する。
【0029】
次に、予測MCTPデバイスリスト生成部151は、MCTP対応状況データベース153を参照し、各PCIeデバイス140がMCTPに対応しているかを確認し、MCTPに対応したPCIeデバイス140であるMCTPデバイスを特定する。そして、予測MCTPデバイスリスト生成部151は、通信用識別子及び物理アドレスの対応を表す情報を生成する。
【0030】
本実施例では、予測MCTPデバイスリスト生成部151は、例えば、
図4に示すような予測MCTPデバイスリスト203を生成する。
図4は、予測MCTPデバイスリストの一例を示す図である。
図4の予測MCTPデバイスリスト203におけるMCTP Endpoint IDは、通信用識別子にあたる。また、予測MCTPデバイスリスト203におけるデバイスアドレスは、各MCTPデバイスの物理アドレスにあたる。ここで、本実施例では、予測MCTPデバイスリスト203における1番の登録欄には、ノードマネージャ120が動作するPCH12の情報が登録される。PCH12のMCTP Endopoint IDは、固定であるので予測MCTPデバイスリスト203の初期状態で既に登録済みである。また、本実施例では、予測MCTPデバイスリスト203における2番の登録欄に、BMC15自身の情報が登録される。予測MCTPデバイスリスト203を生成した段階では、BMC15に対するディスカバリ処理が完了していないので、BMC15のMCTP Endpoint IDは未登録である。
【0031】
具体的な予測MCTPデバイスリスト203の作成処理の流れについて説明する。予測MCTPデバイスリスト生成部151は、情報処理装置1の起動時に予測MCTPデバイスリスト203を初期化する。初期化時に、予測MCTPデバイスリスト生成部151は、PCH12に関する情報を残しておいてもよい。その後、予測MCTPデバイスリスト生成部151は、BIOS110から取得した各MCTPデバイスのデバイスアドレスを予測MCTPデバイスリスト203へ順次登録していくことで予測MCTPデバイスリスト203を完成させる。
【0032】
そして、予測MCTPデバイスリスト生成部151は、生成した予測MCTPデバイスリスト203をMCTPデバイスリスト生成部154及び完了時間算出部152へ出力する。ここで、予測MCTPデバイスリスト生成部151は、完了時間算出部152へは、予測MCTPデバイスリスト203を送信せずに、予測MCTPデバイスリスト203に登録したMCTPデバイスの数を通知してもよい。この予測MCTPデバイスリスト生成部151が、「特定部」の一例にあたる。
【0033】
完了時間算出部152は、予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。完了時間算出部152は、取得した予測MCTPデバイスリスト203から情報処理装置1に搭載されたMCTPデバイスのうちPCH12を除いたデバイス数を取得する。ここで、完了時間算出部152は、1デバイスのディスカバリ処理にかかると予測される予測処理時間を予め有する。そこで、完了時間算出部152は、予測処理時間にデバイス数を乗算して、BMC15のディスカバリ処理が完了してから残りの全てのMCTPデバイスのディスカバリ処理が完了するまでの完了予測時間を求める。その後、完了時間算出部152は、算出した完了予測時間を処理完了判定部155へ出力する。この完了時間算出部152が、「算出部」の一例にあたる。そして、予測完了時間が、「割当時間」の一例にあたる。
【0034】
処理完了判定部155は、情報処理装置1の起動時に遅延タイマ157を起動させる。遅延タイマ157は、自己の起動時からの経過時間を計測するタイマである。その後、処理完了判定部155は、完了予測時間の入力を完了時間算出部152から受ける。そして、処理完了判定部155は、遅延タイマ157から経過時間を随時取得し、経過時間が完了予測時間に達すると、完了予測時間の経過をMCTPデバイスリスト生成部154へ通知する。この処理完了判定部155が、「判定部」の一例にあたる。
【0035】
MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。そして、MCTPデバイスリスト生成部154は、完了予測時間経過の通知をMCTPデバイスリスト生成部154から受けるまで待機する。
【0036】
その後、完了予測時間経過の通知を受けると、MCTPデバイスリスト生成部154は、MCTPデバイス一覧の取得要求をノードマネージャ120へ送信する。その後、MCTPデバイスリスト生成部154は、MCTPデバイス一覧をノードマネージャ120から受信する。
【0037】
次に、MCTPデバイスリスト生成部154は、受信したMCTPデバイス一覧に含まれるデバイスアドレスに対応する通信識別情報を、予測MCTPデバイスリスト203における同じデバイスアドレスの欄に登録する。そして、MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203に登録されたMCTPデバイスが全てMCTPデバイス一覧に存在するか否かを判定する。予測MCTPデバイスリスト203に登録されたMCTPデバイスが全てMCTPデバイス一覧に存在する場合、MCTPデバイスリスト生成部154は、登録が完了した予測MCTPデバイスリスト203をMCTPデバイスリストとして取得する。MCTPデバイスリストの生成が完了すると、MCTPデバイスリスト生成部154は、取得したMCTPデバイスリストをデバイス管理部156へ出力する。
【0038】
これに対して、予測MCTPデバイスリスト203に登録されたMCTPデバイスのうちMCTPデバイス一覧に存在しないものが存在する場合、MCTPデバイスリスト生成部154は、MCTPデバイス一覧の取得要求をノードマネージャ120へ再度送信する。MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203に登録されたMCTPデバイスが全て存在するMCTPデバイス一覧を取得するまで、MCTPデバイスリストの生成処理を繰り返す。
【0039】
MCTPデバイスリストの生成処理を繰り返す場合、MCTPデバイスリスト生成部154は、リトライ回数を取得する。また、MCTPデバイスリスト生成部154は、自己が有する時計を用いて、最初のMCTPデバイス一覧の取得からの経過時間を取得する。ここで、MCTPデバイスリスト生成部154は、エラー発生の判定の基準となるリトライ閾値及びリカバリ可能時間を予め有する。
【0040】
MCTPデバイスリスト生成部154は、リトライ回数がリトライ閾値を超過したかを判定する。また、MCTPデバイスリスト生成部154は、最初のMCTPデバイス一覧の取得からの経過時間がリカバリ可能時間を超過したかを判定する。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合、MCTPデバイスリスト生成部154は、MCTPデバイスリストの生成処理を繰り返す。
【0041】
一方、リトライ回数がリトライ閾値を超過した又は経過時間がリカバリ可能時間を超過した場合、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得に失敗したと判定して、MCTPデバイスリストの取得処理を終了する。
【0042】
デバイス管理部156は、MCTPデバイスリストの入力をMCTPデバイスリスト生成部154から受ける。その後、デバイス管理部156は、MCTP通信が有効なPCIeデバイス140に関する問合せを外部の管理サーバ2から受ける。そして、デバイス管理部156は、MCTPデバイスリストに登録されたMCTPデバイスとの間でMCTPデバイスリストに登録された通信識別情報を用いて通信を行い、各MCTPデバイスの情報を採取する。その後、デバイス管理部156は、採取した各MCTPデバイスの情報を管理サーバ2へ送信する。このデバイス管理部156が、「制御部」の一例にあたる。
【0043】
次に、
図5を参照して、BMCによるMCTPデバイス一覧の取得処理のタイミングについて説明する。
図5は、実施例1に係るMCTPデバイス一覧の取得処理を表すシーケンス図である。ここでは、MCTPデバイスとして、MCTPデバイス#1~#3が存在する場合で説明する。
【0044】
BMC15は、情報処理装置1の起動後にノードマネージャ120によるディスカバリ処理を受ける(ステップS101)。これにより、BMC15は、通信識別情報が割り振られる。
【0045】
また、BMC15は、PCIeデバイス情報をBIOS110から受信する(ステップS102)。
【0046】
その後、BMC15は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる(ステップS103)。
【0047】
BMC15が待機している間に、ノードマネージャ120は、MCTPデバイス#1に対するディスカバリ処理を行い、MCTPデバイス#1に通信識別子を割り振り記憶する(ステップS104)。また、ノードマネージャ120は、MCTPデバイス#2に対するディスカバリ処理を行い、MCTPデバイス#2に通信識別子を割り振り記憶する(ステップS105)。さらに、ノードマネージャ120は、MCTPデバイス#3に対するディスカバリ処理を行い、MCTPデバイス#3に通信識別子を割り振り記憶する(ステップS106)。
【0048】
その後、BMC15は、MCTPデバイス一覧の取得要求をノードマネージャ120へ送信する(ステップS107)。
【0049】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受信して、記憶するMCTPデバイス#1~#3のデバイスアドレスと通信識別子との対応関係を含むMCTPデバイス一覧をBMC15へ送信する(ステップS108)。BMC15は、情報処理装置1に搭載されたMCTPデバイス#1~#3の情報が全ての登録されたMCTPデバイス一覧をノードマネージャ120から受信する。この後、MCTPデバイスリスト生成部154は、ノードマネージャ120に対するMCTPデバイス一覧の取得要求を停止する。
【0050】
これに対して、BMC15が取得したMCTPデバイス一覧に登録されていないMCTPデバイスが存在する場合がある。そこで、次に、
図6を参照して、完了予測中にディスカバリ処理が完了しなかった場合のMCTPデバイス一覧の取得処理について説明する。
図6は、完了予測時間中にディスカバリ処理が完了しなかった場合のMCTPデバイス一覧の取得処理を表すフローチャートである。ここでも、MCTPデバイスとして、MCTPデバイス#1~#3が存在する場合で説明する。
【0051】
BMC15は、情報処理装置1の起動後にノードマネージャ120によるディスカバリ処理を受ける(ステップS111)。
【0052】
また、BMC15は、PCIeデバイス情報をBIOS110から受信する(ステップS112)。
【0053】
その後、BMC15は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる(ステップS113)。
【0054】
BMC15が待機している間に、ノードマネージャ120は、MCTPデバイス#1に対するディスカバリ処理を行い、MCTPデバイス#1に通信識別子を割り振り記憶する(ステップS114)。また、ノードマネージャ120は、MCTPデバイス#2に対するディスカバリ処理を行い、MCTPデバイス#2に通信識別子を割り振り記憶する(ステップS115)。さらに、ノードマネージャ120は、MCTPデバイス#3に対するディスカバリ処理を行う。ただし、この場合、エラーが発生して、MCTPデバイス#3に対するディスカバリ処理が完了しない(ステップS116)。
【0055】
その後、BMC15は、MCTPデバイス一覧の取得要求をノードマネージャ120へ送信する(ステップS117)。
【0056】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受信して、記憶するMCTPデバイス#1及び#2のデバイスアドレスと通信識別子との対応関係を含むMCTPデバイス一覧をBMC15へ送信する(ステップS118)。BMC15は、情報処理装置1に搭載されたMCTPデバイス#1及び#2の情報が登録されたMCTPデバイス一覧をノードマネージャ120から受信する。
【0057】
しかし、この段階では、MCTPデバイス#3に関する情報がMCTPデバイス一覧に登録されていない。そのため、BMC15は、予測MCTPデバイスリスト203に登録されたMCTPデバイス#3が、MCTPデバイス一覧に存在しないことを検出する。そこで、BMC15は、MCTPデバイス一覧の取得要求をノードマネージャ120へ再度送信する(ステップS119)。
【0058】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受信する。このタイミングでも、ノードマネージャ120は、MCTPデバイス#3のディスカバリ処理を完了していない。そこで、ノードマネージャ120は、記憶するMCTPデバイス#1及び#2のデバイスアドレスと通信識別子との対応関係を含むMCTPデバイス一覧をBMC15へ送信する(ステップS120)。BMC15は、情報処理装置1に搭載されたMCTPデバイス#1及び#2の情報が登録されたMCTPデバイス一覧をノードマネージャ120から受信する。
【0059】
その後、ノードマネージャ120は、MCTPデバイス#3に対するディスカバリ処理を行い、MCTPデバイス#3に通信識別子を割り振り記憶して、MCTPデバイス#3に対するディスカバリ処理を完了する(ステップS121)。
【0060】
BMC15は、予測MCTPデバイスリスト203に登録されたMCTPデバイス#3が、受信したMCTPデバイス一覧に存在しないことを再度検出する。そこで、BMC15は、MCTPデバイス一覧の取得要求をノードマネージャ120へ再度送信する(ステップS122)。
【0061】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受信して、記憶するMCTPデバイス#1~#3のデバイスアドレスと通信識別子との対応関係を含むMCTPデバイス一覧をBMC15へ送信する(ステップS123)。BMC15は、情報処理装置1に搭載されたMCTPデバイス#1~#3の情報が全ての登録されたMCTPデバイス一覧をノードマネージャ120から受信する。この後、MCTPデバイスリスト生成部154は、ノードマネージャ120に対するMCTPデバイス一覧の取得要求を停止する。
【0062】
次に、
図7を参照して、実施例1に係るMCTPデバイスリストの取得処理の流れについて説明する。
図7は、実施例1に係るMCTPデバイスリストの取得処理のフローチャートである。
【0063】
情報処理装置1が起動すると、処理完了判定部155は、遅延タイマ157を起動する(ステップS201)。
【0064】
次に、予測MCTPデバイスリスト生成部151は、予測MCTPデバイスリスト203を初期化する(ステップS202)。
【0065】
次に、予測MCTPデバイスリスト生成部151は、全てのPCIeデバイス140に関するPCIeデバイス情報を取得したか否かを判定する(ステップS203)。全てのPCIeデバイス140に関するPCIeデバイス情報を所得していない場合(ステップS203:否定)、予測MCTPデバイスリスト生成部151は、全てのPCIeデバイス140に関するPCIeデバイス情報を取得するまでPCIeデバイス情報の取得を繰り返す。
【0066】
これに対して、全てのPCIeデバイス140に関するPCIeデバイス情報を所得した場合(ステップS203:肯定)、予測MCTPデバイスリスト生成部151は、PCIeデバイス140の中から未選択の物を1つ選択する(ステップS204)。
【0067】
次に、予測MCTPデバイスリスト生成部151は、MCTP対応状況データベース153に選択したPCIeデバイス140の情報が存在するか否かを判定する(ステップS205)。選択したPCIeデバイス140の情報が存在しない場合(ステップS205:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに非対応であると判定して、ステップS209へ進む。
【0068】
一方、選択したPCIeデバイス140の情報が存在する場合(ステップS205:肯定)、予測MCTPデバイスリスト生成部151は、ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在するか否かを判定する(ステップS206)。
【0069】
ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在しない場合(ステップS206:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに対応すると判定する。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140の情報を予測MCTPデバイスリスト203に追加する(ステップS208)。
【0070】
これに対して、ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在する場合(ステップS206:肯定)、予測MCTPデバイスリスト生成部151は、そのファームウェアバージョンを対応バージョンとする。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140のファームウェアバージョンが対応バージョンより新しいか否かを判定する(ステップS207)。
【0071】
選択したPCIeデバイス140のファームウェアバージョンが対応バージョンより古い場合(ステップS207:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに非対応であると判定して、ステップS209へ進む。
【0072】
これに対して、選択したPCIeデバイス140のファームウェアバージョンが対応バージョンより新しい場合(ステップS207:肯定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに対応していると判定する。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140の情報を予測MCTPデバイスリスト203に追加する(ステップS208)。
【0073】
その後、予測MCTPデバイスリスト生成部151は、情報処理装置1に搭載された全てのPCIeデバイス104についてMCTPの対応状況の判定が完了したか否かを判定する(ステップS209)。未判定のPCIeデバイス140が存在する場合(ステップS209:否定)、予測MCTPデバイスリスト生成部151は、ステップS204へ処理を戻す。
【0074】
これに対して、全てのPCIeデバイス140の判定が完了した場合(ステップS209:肯定)、予測MCTPデバイスリスト生成部151は、予測MCTPデバイスリスト203をMCTPデバイスリスト生成部154及び完了時間算出部152へ出力する。完了時間算出部152は、予測MCTPデバイスリスト203を用いて全てのMCTPデバイスに対するディスカバリ処理の完了予測時間を算出する(ステップS210)。その後、完了時間算出部152は、完了予測時間を処理完了判定部155へ出力する。
【0075】
処理完了判定部155は、完了予測時間の入力を完了時間算出部152から受ける。そして、処理完了判定部155は、遅延タイマ157が完了予測時間を超過したか否かを判定する(ステップS211)、完了予測時間を超過していない場合(ステップS211:否定)、完了時間算出部152は、遅延タイマ157が完了予測時間を超過するまで待機する。また、MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。その後、MCTPデバイスリスト生成部154は、完了予測時間の経過の通知を受けるまで待機する。
【0076】
完了予測時間を超過した場合(ステップS211:肯定)、完了時間算出部152は、完了予測時間の経過をMCTPデバイスリスト生成部154へ通知する。完了予測時間の通知を処理完了判定部155から受けると、MCTPデバイスリスト生成部154は、MCTPデバイス一覧をノードマネージャ120に要求する(ステップS212)。
【0077】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受けて、その時点で保持するMCTPデバイスのデバイスアドレス及び通信識別情報を含むMCTPデバイス一覧をMCTPデバイスリスト生成部154へ送信する。MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203の中のMCTPデバイスが全てMCTPデバイス一覧に存在するか否を判定する(ステップS213)。予測MCTPデバイスリスト203の中のMCTPデバイスが全てMCTPデバイス一覧に存在する場合(ステップS213:肯定)、MCTPデバイスリスト生成部154は、ディスカバリ処理が完了したと判定する。そして、MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203に通信識別情報を登録してMCTPデバイスリストを生成して取得する。この後、MCTPデバイスリスト生成部154は、ノードマネージャ120に対するMCTPデバイス一覧の取得要求を停止する。
【0078】
これに対して、MCTPデバイス一覧に存在しないMCTPデバイスがある場合(ステップS213:否定)、MCTPデバイスリスト生成部154は、リトライ回数及び最初のMCTPデバイス一覧の取得からの経過時間を取得する。そして、MCTPデバイスリスト生成部154は、リトライ回数がリトライ閾値を超過したか、又は、経過時間がリカバリ可能時間を超過したかを判定する(ステップS215)。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合(ステップS215:否定)、MCTPデバイスリスト生成部154は、処理をステップS212へ戻す。
【0079】
これに対して、リトライ回数がリトライ閾値を超過しした、又は、経過時間がリカバリ可能時間を超過した場合(ステップS215:肯定)、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得エラーと判定する(ステップS216)。そして、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得処理を終了する。
【0080】
以上に説明したように、本実施例に係る情報処理装置のBMCは、起動時にBIOSから情報処理装置に搭載されたMCTPデバイスの情報を取得する。そして、BMCは、取得したMCTPデバイスの情報を用いてノードマネージャがディスカバリ処理を行うMCTPデバイスを予測する。その後、BMCは、ノードマネージャから通知されたディスカバリ処理が完了したMCTPデバイスの中に、予測したMCTPデバイスが全て含まれるか否かにより全てのディスカバリ処理が完了したか否かを判定する。ディスカバリ処理が完了している場合、BMCは、ノードマネージャからMCTPデバイスに関する情報をそれ以上取得しなくても良いのでMCTPデバイスの情報の取得要求によるポーリングを停止することができる。したがって、PCIeバスにおける通信を低減させることができ、情報処理装置の処理性能を向上させることができる。
【実施例2】
【0081】
次に実施例2について説明する。本実施例に係る情報処理装置は、起動後にPCIeデバイスがホットプラグ対応のPCIeスロットに追加された場合にも、MCTPデバイスリストの取得処理を実行する。本実施例に係る情報処理装置も
図1で表される。以下の説明では、実施例1と同様の各部の動作については説明を省略する。以下では、起動状態でPCIeデバイス140が新たに追加された場合について説明する。情報処理装置1のPCIeスロット14は、ホットプラグに対応する。
【0082】
動作中の情報処理装置1のホットプラグ対応のPCIeスロット14に新たなPCIeデバイス140が接続されると、CPU11により実行されるOS上で動作するPCIeスロット14を管理するエージェントが、PCIeデバイス情報をBMC15へ送信する。
【0083】
予測MCTPデバイスリスト生成部151は、ホットプラグ対応のPCIeスロット14に新たにPCIeデバイス104が接続されると、各PCIeスロット14に接続されたPCIeデバイス140のそれぞれのPCIeデバイス情報の入力をOS上で動作するエージェントから受ける。
【0084】
次に、予測MCTPデバイスリスト生成部151は、取得したPCIeデバイス情報に含まれるPCI物理アドレスの情報から、それぞれのPCIeデバイス140がいずれのPCIeスロット14に接続されたかを判定する。さらに、予測MCTPデバイスリスト生成部151は、各PCIeデバイス140のベンダID、デバイスID及びファームウェアバージョンを取得したPCIeデバイス情報から取得する。
【0085】
次に、予測MCTPデバイスリスト生成部151は、MCTPデバイスリストを複製して予測MCTPデバイスリスト203を作成する。次に、予測MCTPデバイスリスト生成部151は、MCTP対応状況データベース153を参照し、各PCIeデバイス140がMCTPに対応しているかを確認し、MCTPデバイスを特定する。そして、予測MCTPデバイスリスト生成部151は、予測MCTPデバイスリスト203を参照してMCTPデバイスが新たに追加されたか否かを判定する。新たに追加されたMCTPデバイスが無い場合、予測MCTPデバイスリスト生成部151は、予測MCTPデバイスリスト203の生成を終了する。BMC15は、MCTPデバイスリストの取得処理を終了する。
【0086】
これに対して、新たに追加されたMCTPデバイスがある場合、予測MCTPデバイスリスト生成部151は、新たに追加されたMCTPデバイスの通信用識別子及び物理アドレスの対応情報を予測MCTPデバイスリスト203に登録する。そして、予測MCTPデバイスリスト生成部151は、更新した予測MCTPデバイスリスト203をMCTPデバイスリスト生成部154及び完了時間算出部152へ出力する。
【0087】
完了時間算出部152は、情報処理装置1の起動後で且つ今回のMCTPデバイスの追加以前に最も新しく取得された予測MCTPデバイスリスト203を保持する。また、完了時間算出部152は、今回のMCTPデバイスの追加により更新された予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。次に、完了時間算出部152は、新たに追加されたMCTPデバイスの数を特定する。そして、完了時間算出部152は、新たに追加されたMCTPデバイスの数に予測処理時間を乗算して新たに追加された全てのMCTPデバイスのディスカバリ処理が完了する完了予測時間を算出する。その後、完了時間算出部152は、算出した完了予測時間を処理完了判定部155へ出力する。
【0088】
処理完了判定部155は、ホットプラグ対応のPCIeスロット14にPCIeデバイス140が新たに接続されると、遅延タイマ157を起動する。その後、処理完了判定部155は、完了予測時間の入力を完了時間算出部152から受ける。そして、処理完了判定部155は、遅延タイマ157の計測時間が完了予測時間に達すると、完了予測時間の経過をMCTPデバイスリスト生成部154に通知する。
【0089】
MCTPデバイスリスト生成部154は、新たなMCTPデバイスの追加により更新された予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。その後、予測MCTPデバイスリスト203は、完了予測時間の経過の通知を処理完了判定部155から受けるまで待機する。
【0090】
完了予測時間の経過の通知を処理完了判定部155から受けると、MCTPデバイスリスト生成部154は、MCTPデバイス一覧の取得要求をノードマネージャ120に送信する。その後、MCTPデバイスリスト生成部154は、MCTPデバイス一覧をノードマネージャ120から受信する。次に、MCTPデバイスリスト生成部154は、取得したMCTPデバイス一覧と予測MCTPデバイスリスト203とを比較する。そして、MCTPデバイスリスト生成部154は、新たに追加された全てのMCTPデバイスの情報がMCTPデバイス一覧に存在するか否かを判定する。
【0091】
新たに追加されたMCTPデバイスの全ての情報がMCTPデバイス一覧に存在する場合、MCTPデバイスリスト生成部154は、新たに追加されたMCTPデバイスの通信識別子を予測MCTPデバイスリスト203に登録する。そして、MCTPデバイスリスト生成部154は、登録が完了した予測MCTPデバイスリスト203をMCTPデバイスリストとして取得する。その後、MCTPデバイスリスト生成部154は、MCTPデバイスリストをデバイス管理部156へ出力する。
【0092】
一方、新たに追加されたMCTPデバイスのうちMCTPデバイス一覧に存在しないものがある場合、MCTPデバイスリスト生成部154は、MCTPデバイス一覧の取得要求をノードマネージャ120に送信し、MCTPデバイスリストの取得処理を繰り返す。このとき、リトライ回数がリトライ閾値を超えた、又は、経過時間がリカバリ可能時間を超えた場合、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得処理にエラーが発生したと判定して処理を終了する。
【0093】
次に、
図8を参照して、実施例2に係るBMC15によるMCTPデバイス一覧の取得処理について説明する。
図8は、実施例2に係るMCTPデバイス一覧の取得処理を表すシーケンス図である。ここでは、MCTPデバイスとして、MCTPデバイス#1~#3が情報処理装置1の起動時から存在し、起動後にMCTPデバイス#4が追加される場合で説明する。
【0094】
BIOS110、BMC15、ノードマネージャ120及びMCTPデバイス#1~#3は、起動時にBMC15によるMCTPデバイス一覧の取得処理に関する各種処理を実行する(ステップS301)。
【0095】
次に、MCTPデバイス#4がホットプラグ対応のPCIeスロット14に新たに接続されると、OS上で動作するエージェントは、PCIeデバイス情報をBMC15へ出力する(ステップS302)。
【0096】
その後、BMC15は、完了予測時間を算出し、算出した完了予測時間まで待機してディスカバリ処理の完了を待ち合わせる(ステップS303)。
【0097】
BMC15が待機している間に、ノードマネージャ120は、MCTPデバイス#4に対するディスカバリ処理を行い、MCTPデバイス#4に通信識別子を割り振り記憶する(ステップS304)。
【0098】
その後、BMC15は、MCTPデバイス一覧の取得要求をノードマネージャ120へ送信する(ステップS305)。
【0099】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受信して、記憶するMCTPデバイス#1~#4のデバイスアドレスと通信識別子との対応関係を含むMCTPデバイス一覧をBMC15へ送信する(ステップS306)。BMC15は、情報処理装置1に搭載されたMCTPデバイス#1~#4の情報が全ての登録されたMCTPデバイス一覧をノードマネージャ120から受信する。この後、MCTPデバイスリスト生成部154は、ノードマネージャ120に対するMCTPデバイス一覧の取得要求を停止する。
【0100】
次に、
図9を参照して、実施例2に係るMCTPデバイスリストの取得処理の流れについて説明する。
図9は、実施例2に係るMCTPデバイスリストの取得処理のフローチャートである。
【0101】
ホットプラグ対応のPCIeスロット14に新たにPCIeデバイス140が接続されると、予測MCTPデバイスリスト生成部151は、追加されたPCIeデバイスのPCIeデバイス情報をBIOS110から取得する(ステップS401)。
【0102】
また、ホットプラグ対応のPCIeスロット14に新たにPCIeデバイス140が接続されると、処理完了判定部155は、遅延タイマ157を起動する(ステップS402)。
【0103】
次に、予測MCTPデバイスリスト生成部151は、MCTPデバイスリストをコピーして予測MCTPデバイスリスト203を作成する(ステップS403)。
【0104】
次に、予測MCTPデバイスリスト生成部151は、追加されたPCIeデバイス140の中から未選択の物を1つ選択する(ステップS404)。
【0105】
次に、予測MCTPデバイスリスト生成部151は、MCTP対応状況データベース153に選択したPCIeデバイス140の情報が存在するか否かを判定する(ステップS405)。選択したPCIeデバイス140の情報が存在しない場合(ステップS405:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに非対応であると判定して、ステップS409へ進む。
【0106】
一方、選択したPCIeデバイス140の情報が存在する場合(ステップS405:肯定)、予測MCTPデバイスリスト生成部151は、ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在するか否かを判定する(ステップS406)。
【0107】
ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在しない場合(ステップS406:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに対応すると判定する。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140の情報を予測MCTPデバイスリスト203に追加する(ステップS408)。
【0108】
これに対して、ファームウェアバージョンの情報が予測MCTPデバイスリスト203に存在する場合(ステップS406:肯定)、予測MCTPデバイスリスト生成部151は、そのファームウェアバージョンを対応バージョンとする。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140のファームウェアバージョンが対応バージョンより新しいか否かを判定する(ステップS407)。
【0109】
選択したPCIeデバイス140のファームウェアバージョンが対応バージョンより古い場合(ステップS407:否定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに非対応であると判定して、ステップS409へ進む。
【0110】
これに対して、選択したPCeIデバイス140のファームウェアバージョンが対応バージョンより新しい場合(ステップS407:肯定)、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140がMCTPに対応していると判定する。そして、予測MCTPデバイスリスト生成部151は、選択したPCIeデバイス140の情報を予測MCTPデバイスリスト203に追加する(ステップS408)。
【0111】
その後、予測MCTPデバイスリスト生成部151は、情報処理装置1に搭載された全てのPCIeデバイス140についてMCTPの対応状況の判定が完了したか否かを判定する(ステップS409)。未判定の追加したPCIeデバイス140が存在する場合(ステップS409:否定)、予測MCTPデバイスリスト生成部151は、ステップS404へ処理を戻す。
【0112】
これに対して、追加したPCIeデバイス140の全ての判定が完了した場合(ステップS409:肯定)、予測MCTPデバイスリスト生成部151は、新たにMCTPデバイスが追加されて予測MCTPデバイスリスト203が更新されたか否かを判定する(ステップ410)。予測MCTPデバイスリスト203が更新されていない場合(ステップS410:否定)、BMC15は、MCTPデバイスリストの取得処理を終了する。
【0113】
これに対して、予測MCTPデバイスリスト203が更新された場合(ステップS410:肯定)、予測MCTPデバイスリスト生成部151は、予測MCTPデバイスリスト203をMCTPデバイスリスト生成部154及び完了時間算出部152へ出力する。完了時間算出部152は、保持する予測MCTPデバイスリスト203と更新された予測MCTPデバイスリスト203を比較して追加されたMCTPデバイスの数を求める。そして、完了時間算出部152は、追加されたMCTPデバイスの数を用いて追加されたMCTPデバイスに対するディスカバリ処理の完了予測時間を算出する(ステップS411)。その後、完了時間算出部152は、完了予測時間を処理完了判定部155へ出力する。
【0114】
処理完了判定部155は、完了予測時間の入力を完了時間算出部152から受ける。そして、処理完了判定部155は、遅延タイマ157が完了予測時間を超過したか否かを判定する(ステップS412)。完了予測時間を超過していない場合(ステップS412:否定)、完了時間算出部152は、遅延タイマ157が完了予測時間を超過するまで待機する。また、MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203の入力を予測MCTPデバイスリスト生成部151から受ける。その後、MCTPデバイスリスト生成部154は、完了予測時間の経過の通知を受けるまで待機する。
【0115】
完了予測時間を超過した場合(ステップS412:肯定)、完了時間算出部152は、完了予測時間の経過をMCTPデバイスリスト生成部154へ通知する。完了予測時間の通知を処理完了判定部155から受けると、MCTPデバイスリスト生成部154は、MCTPデバイス一覧をノードマネージャ120に要求する(ステップS413)。
【0116】
ノードマネージャ120は、MCTPデバイス一覧の取得要求を受けて、その時点で保持するMCTPデバイスのデバイスアドレス及び通信識別情報を含むMCTPデバイス一覧をMCTPデバイスリスト生成部154へ送信する。MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203における追加されたMCTPデバイスが全てMCTPデバイス一覧に存在するか否を判定する(ステップS414)。
【0117】
追加されたMCTPデバイスが全てMCTPデバイス一覧に存在する場合(ステップS414:肯定)、MCTPデバイスリスト生成部154は、ディスカバリ処理が完了したと判定する。そして、MCTPデバイスリスト生成部154は、予測MCTPデバイスリスト203に追加されたMCTPデバイスの通信識別情報を登録してMCTPデバイスリストを生成する(ステップS415)。この後、MCTPデバイスリスト生成部154は、ノードマネージャ120に対するMCTPデバイス一覧の取得要求を停止する。
【0118】
これに対して、MCTPデバイス一覧に存在しない追加されたMCTPデバイスがある場合(ステップS414:否定)、MCTPデバイスリスト生成部154は、リトライ回数及び最初のMCTPデバイス一覧の取得からの経過時間を取得する。そして、MCTPデバイスリスト生成部154は、リトライ回数がリトライ閾値を超過したか、又は、経過時間がリカバリ可能時間を超過したかを判定する(ステップS416)。リトライ回数がリトライ閾値を超過しておらず、且つ、経過時間がリカバリ可能時間を超過していない場合(ステップS416:否定)、MCTPデバイスリスト生成部154は、処理をステップS413へ戻す。
【0119】
これに対して、リトライ回数がリトライ閾値を超過しした、又は、経過時間がリカバリ可能時間を超過した場合(ステップS416:肯定)、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得エラーと判定する(ステップS417)。そして、MCTPデバイスリスト生成部154は、MCTPデバイスリストの取得処理を終了する。
【0120】
ここで、本実施例では、ホットプラグ対応のPCIeスロット4を有する情報処理装置1について説明したが、ホットプラグ対応のPCIeスロット4を有さない情報処理装置1の場合、PCIeデバイス140の構成は基本的に変化しない。そのため、ホットプラグ対応のPCIeスロット4を有さない情報処理装置1の場合、BMC15は、起動時にMCTPデバイスリストを取得が完了していれば、その後MCTPデバイスリストを更新しなくてよい。
【0121】
以上に説明したように、本実施例に係る情報処理装置のBMCは、ホットプラグ対応のPCIeスロットに新たにPCIeデバイスが追加された場合に、OS上で動作するエージェントからPCIeデバイス情報を取得する。そして、BMCは、取得したPCIeデバイス情報を基に、ノードマネージャから通信識別情報が通知されるMCTPデバイスを予測し、新たに追加された全てのMCTPデバイスに対するディスカバリ処理が完了したか否かを判定する。ディスカバリ処理の完了を確認した場合、BMCは、ノードマネージャからMCTPデバイスに関する情報をそれ以上取得しなくても良いのでMCTPデバイスの情報の取得要求によるポーリングを停止することができる。したがって、ホットプラグに新たにMCTPデバイスを加えたMCTPデバイスリストの更新処理においても、PCIeバスにおける通信を低減させることで、情報処理装置の処理性能を向上させることができる。
【0122】
(ハードウェア構成)
次に、
図10を参照して、各実施例に係る情報処理装置1のハードウェア構成について説明する。
図10は、情報処理装置のハードウェア構成図である。
【0123】
情報処理装置1は、
図10に示すように、CPU11,PCH12、BMC15、メモリ16、NIC(Network Interface Card)161及びSSD(Solid State Drive)162を有する。CPU11とメモリ16とは、チャネル22で接続される。また、CPU11は、PCIeバス21を介してPCH12、BMC15、NIC161及びSSD162と接続される。
【0124】
NIC161は、管理サーバ2などの外部の装置と通信を行うためのインタフェースである。SSD162は、補助記憶装置である。NIC161及びSSD162は、実際には、
図1に示してPCIeスロット14に接続されることで、PCIeバス21に接続する。また、SSD162には、BIOS110やOS(Operating System)などの機能を実現する各種プログラムが格納される。
【0125】
CPU11は、SSD162に格納された各種プログラムをメモリ16に展開して実行することで、BIOS110やOSの機能を実現する。
【0126】
PCH12は、内部にプロセッサ及びメモリを有する。そして、PCH12の内部のメモリにはノードマネージャ120を動作させるプログラムが格納される。PCH12の内部のプロセッサは、内部のメモリに格納されたノードマネージャ120を動作させるプログラムを実行することで、ノードマネージャ120の機能を実現する。
【0127】
BMC15は、内部にプロセッサ及びメモリを有する。そして、BMC15の内部のメモリには、
図1に例示した予測MCTPデバイスリスト生成部151、完了時間算出部152、MCTPデバイスリスト生成部154、処理完了判定部155、デバイス管理部156の機能を実現するプログラムを含む各種プログラムが格納される。また、BMC15の内部メモリは、
図1に例示したMCTP対応状況データベース153の機能を実現する。BMC15の内部のプロセッサは、内部のメモリに格納された各種プログラムを実行して、予測MCTPデバイスリスト生成部151、完了時間算出部152、MCTPデバイスリスト生成部154、処理完了判定部155、デバイス管理部156の機能を実現する。このように、予測MCTPデバイスリスト生成部151、完了時間算出部152、MCTPデバイスリスト生成部154、処理完了判定部155、デバイス管理部156の機能を実現するプログラムは、記憶媒体に格納され実行されることで、その機能が実現される。より詳しくは、予測デバイスリスト生成部151によるBIOS110からデバイス情報を受け取るプロセスは、BMC15が実行するIPMI管理プロセスである。また、予測MCTPデバイスリスト生成部151、完了時間算出部152、MCTPデバイスリスト生成部154及び処理完了判定部155が行うMCTPの管理のプロセスは、MCTPエージェントプロセスである。
【符号の説明】
【0128】
1 情報処理装置
2 管理サーバ
11 CPU
12 PCH
14 PCIeスロット
15 BMC
140 PCIeデバイス
151 予測MCTPデバイスリスト生成部
152 完了時間算出部
153 MCTP対応状況データベース
154 MCTPデバイスリスト生成部
155 処理完了判定部
156 デバイス管理部
157 遅延タイマ
203 予測MCTPデバイスリスト