[go: up one dir, main page]

JP2018181170A - 情報処理装置、情報処理システムおよびプログラム - Google Patents

情報処理装置、情報処理システムおよびプログラム Download PDF

Info

Publication number
JP2018181170A
JP2018181170A JP2017083351A JP2017083351A JP2018181170A JP 2018181170 A JP2018181170 A JP 2018181170A JP 2017083351 A JP2017083351 A JP 2017083351A JP 2017083351 A JP2017083351 A JP 2017083351A JP 2018181170 A JP2018181170 A JP 2018181170A
Authority
JP
Japan
Prior art keywords
communication
driver unit
message
communication driver
transfer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2017083351A
Other languages
English (en)
Inventor
古川 英治
Eiji Furukawa
英治 古川
秀作 山中
Shusaku Yamanaka
秀作 山中
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017083351A priority Critical patent/JP2018181170A/ja
Priority to US15/952,284 priority patent/US20180309663A1/en
Publication of JP2018181170A publication Critical patent/JP2018181170A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/22Alternate routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0663Performing the actions predefined by failover planning, e.g. switching to standby network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0811Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking connectivity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0805Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability
    • H04L43/0817Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters by checking availability by checking functioning

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer And Data Communications (AREA)
  • Multi Processors (AREA)

Abstract

【課題】異なる通信デバイスの通信ドライバ部間のメッセージ転送時間を短縮化する。
【解決手段】情報処理装置1は、通信ドライバ部1a−1、1a−2および通信管理部1bを備える。通信ドライバ部1a−1、1a−2の通信デバイスは互いに異なる。通信管理部1bは、メッセージに含まれる通信ドライバ部1a−2の識別子XIDにもとづいて、通信ドライバ部1a−2を起動して、通信ドライバ部1a−1から通信ドライバ部1a−2へメッセージを転送する。通信管理部1bは、識別子XIDに対応する書き込み通知をQSTRの一端で行って、QSTRの他端で待ち受けしている読み出し通知を呼び出し、読み出し通知によって通信ドライバ部1a−2を起動して、通信ドライバ部1a−1から通信ドライバ部1a−2へメッセージを転送する。
【選択図】図1

Description

本発明は、情報処理装置、情報処理システムおよびプログラムに関する。
情報処理システムでは、信頼性の確保のため、通信ノードを2台以上含む装置で冗長構成が組まれており、通信ノード間または装置間の通信経路が冗長化されている。
また、システム性能を向上させる場合、近年では、ハードウェアを高性能にするスケールアップよりも、ハードウェアの数を増やして処理能力を上げるスケールアウトが主流になっている。このため、スケールアウトによるシステム拡張化に伴い、システムの冗長構成も増加している。
特開2001−14284号公報 特開2014−157628号公報
情報処理システムの通信経路に障害等が発生すると、メッセージ転送を迂回させる迂回経路を確立して、通信経路の冗長構成を回復することが行われる。この場合、迂回経路上に位置する通信ドライバのハードウェアである通信デバイスは同一のものとは限らず、異なる通信デバイスの通信ドライバ間でメッセージ転送が行われる可能性がある。
種類が異なる通信デバイスの通信ドライバ間によるメッセージ転送では、ソフトウェア上でメッセージの乗換え処理が行われるため、メッセージ転送に要する時間が増大する。
1つの側面では、本発明は、異なる通信デバイスの通信ドライバ間のメッセージ転送に要する時間の短縮化を図った情報処理装置、情報処理システムおよびプログラムを提供することを目的とする。
上記課題を解決するために、情報処理装置が提供される。情報処理装置は、第1の通信デバイスの第1の通信ドライバ部と、第1の通信デバイスとは異なる第2の通信デバイスの第2の通信ドライバ部と、通信管理部とを備える。通信管理部は、第1の通信ドライバ部が受け付けたメッセージに含まれる第2の通信ドライバ部の識別子にもとづいて、第2の通信ドライバ部を起動して、第1の通信ドライバ部から第2の通信ドライバ部へメッセージを転送する。
また、上記課題を解決するために、ノード間通信を行う情報処理システムが提供される。情報処理システムは、第1の通信ノードと第2の通信ノードを備える。第1の通信ノードは、第1の通信デバイスの第1の通信ドライバ部と、第1の通信ドライバ部によるメッセージ転送時に通信パス障害を検出した場合、識別子を含むメッセージを生成し、迂回パスを通じてメッセージを第1の通信ドライバ部から転送する第1の管理部とを含む。第2の通信ノードは、迂回パス上に位置してメッセージを受信する、第1の通信デバイスの第2の通信ドライバ部と、迂回パス上に位置して、第1の通信デバイスとは異なる第2の通信デバイスの第3の通信ドライバ部と、メッセージに含まれる第3の通信ドライバ部の識別子にもとづいて、第3の通信ドライバ部を起動して第2の通信ドライバ部から第3の通信ドライバ部へメッセージを転送する第2の通信管理部とを含む。
さらに、上記課題を解決するために、コンピュータに上記情報処理装置と同様の制御を実行させるプログラムが提供される。
1側面によれば、異なるハードウェアの通信デバイス間のメッセージ転送に要する時間を短縮化することが可能になる。
情報処理装置の構成の一例を示す図である。 ノード間通信システムの構成の一例を示す図である。 メッセージ迂回転送の一例を示す図である。 ソフトウェア処理にもとづくメッセージ乗換えの一例を説明するための図である。 情報処理システムの構成の一例を示す図である。 メッセージ迂回転送の一例を示す図である。 通信ノードのハードウェア構成の一例を示す図である。 メッセージフォーマットの一例を示す図である。 QSTRによるメッセージ転送を説明するための図である。 メッセージ乗換えをせずにメッセージ転送が行われる状態を示す図である。 メッセージ迂回転送のシーケンスの一例を示す図である。 RDMAの迂回転送の一例を説明するための図である。 RDMAの迂回転送のシーケンスの一例を説明するための図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態について説明する。図1は情報処理装置の構成の一例を示す図である。情報処理装置1は、プロセッサ等の制御部を有し、制御部は、ソフトウェアの実行により通信ドライバ部1a−1、1a−2(ドライバ(ソフトウェア))および通信管理部(スレッドスケジューラ(ソフトウェア))1bの機能を備える。なお、通信ドライバ部1a−1、1a−2に関係付けられたハードウェアの種類は互いに異なる。
通信管理部1bは、メッセージに含まれる通信ドライバ部1a−2のXID(識別子)にもとづいて、通信ドライバ部1a−2を起動して、通信ドライバ部1a−1から通信ドライバ部1a−2へメッセージを転送する。
ここで、通信管理部1bは、通信ドライバ部1a−1、1a−2に共通のスレッドスケジューラ(ソフトウェア)である。この場合、通信管理部1bは、XIDに対応する書き込み通知をQSTR(Queue−structure:待ち合わせ構造体)の一端で行い、QSTRの他端で待ち受けしている、書き込み通知に対応する読み出し通知を呼び出す。
そして、通信管理部1bは、読み出し通知によって通信ドライバ部1a−2を起動して、通信ドライバ部1a−1から通信ドライバ部1a−2へメッセージを転送する。なお、QSTRは、書き込み(入力)、読み出し(出力)間をつなぐパイプを形成し、パイプを通じてスレッド間でデータの授受を可能にするキュー(Queue)のデータ構造である。
このように、情報処理装置1は、スレッドスケジューラのQSTRにより、メッセージに付与されたXIDにもとづいて、転送先の通信ドライバ部1a−2を起動してメッセージ転送を行う。
これにより、情報処理装置1は、種類が異なるハードウェアの通信ドライバ部1a−1、1a−2間でメッセージ転送を行う際に、ソフトウェア上のメッセージ乗換えを不要とするので、メッセージ転送に要する時間を短縮化することが可能になる。
[ノード間通信システム]
次にノード間通信システムの構成について説明する。図2はノード間通信システムの構成の一例を示す図である。ノード間通信システム2は、通信ノードブロックNB10と、通信ノードブロックNB20を備える。
通信ノードブロックNB10は、通信ノードN11、N12を備え、通信ノードブロックNB20は、通信ノードN21、N22を備える。
通信ノードN11は、HBA(Host Bus Adapter)とHBAドライバ部21a−1、21a−2、PCIeSW(Peripheral Component Interconnect Express Switch)とPCIeSWドライバ部31a−1、31a−2およびメモリ4aを含む。通信ノードN12は、HBAとHBAドライバ部22a−1、22a−2およびPCIeSWとPCIeSWドライバ部32a−1、32a−2を含む。
通信ノードN21は、HBAドライバ部21b−1、21b−2およびPCIeSWドライバ部31b−1、31b−2を含む。通信ノードN22は、HBAドライバ部22b−1、22b−2、PCIeSWドライバ部32b−1、32b−2およびメモリ4bを含む。
通信ノードブロックNB10、NB20間の接続において、HBAドライバ部21a−1とHBAドライバ部21b−1が通信パスP1で接続し、HBAドライバ部22a−1とHBAドライバ部22b−1が通信パスP2で接続する。また、HBAドライバ部21a−2とHBAドライバ部22b−2が通信パスP3で接続し、HBAドライバ部22a−2とHBAドライバ部21b−2が通信パスP4で接続する。
通信ノードN11、N12間の接続において、PCIeSWドライバ部31a−1とPCIeSWドライバ部32a−1が接続し、PCIeSWドライバ部31a−2とPCIeSWドライバ部32a−2が接続する。
通信ノードN21、N22間の接続において、PCIeSWドライバ部31b−1とPCIeSWドライバ部32b−1が接続し、PCIeSWドライバ部31b−2とPCIeSWドライバ部32b−2が接続する。
上記のように、ノード間通信システム2では、通信ノードブロックNB10、NB20間は、HBAドライバ部を介して接続され、通信ノードN11、N12間と、通信ノードN21、N22間とは、PCIeSWドライバ部を介して接続される。
<メッセージ迂回転送>
次にノード間通信システム2において、通信パスが切断したときのメッセージ迂回転送について説明する。図3はメッセージ迂回転送の一例を示す図である。
通信パスP3における通常のメッセージ転送において、HBAドライバ部21a−2は、通信パスP3を通じてHBAドライバ部22b−2へメッセージを転送し、HBAドライバ部22b−2で受信されたメッセージは、メモリ4bに格納される。
ここで、通信ノードN11、N22間の通信パスP3が切断したとする(例えば、HBAドライバ部のポート故障等)。
通信パスP3が切断した場合、通信ノードN11ではHBAドライバ部21a−1を使用し、HBAドライバ部21a−1からメッセージが転送されて、該メッセージが通信ノードN22内のメモリ4bへ到達するまでの迂回パスp10が確立される。
なお、メッセージ転送の起点となる通信ノードでは、障害が発生した通信パスに応じた迂回パスをテーブル情報として記憶している。
例えば、通信パスP13の切断に対し、図6に示すような、通信ノードN0、N2、N3の順にメッセージが転送される迂回パス(迂回パスp20)が、起点となる通信ノードN0に予め記憶されている。また、例えば、通信パスP11の切断に対し、通信ノードN0、N1、N3、N2の順にメッセージが転送される迂回パスが、起点となる通信ノードN0で予め記憶されている。
迂回パスp10は、通信ノードN11、N21、N22の順にメッセージを迂回転送させる。迂回パスp10を通じてメッセージが通過するドライバ部は、順にHBAドライバ部21a−1、HBAドライバ部21b−1、PCIeSWドライバ部31b−1、PCIeSWドライバ部32b−1である。そして、PCIeSWドライバ部32b−1がメモリ4bにメッセージを格納する。
ここで、迂回パスp10において、HBAドライバ部21a−1、21b−1間では、同一ハードウェアのドライバ部によるメッセージ転送が行われる。また、PCIeSWドライバ部31b−1、32b−1間でも、同一ハードウェアのドライバ部によるメッセージ転送が行われる。
一方、迂回パスp10において、HBAドライバ部21b−1およびPCIeSWドライバ部31b−1間では、異なるハードウェアのドライバ部によるメッセージ転送が行われる。
<メッセージ乗換え>
異なるハードウェアのドライバ部間のメッセージ転送では、ソフトウェア上でメッセージ乗換えが行われる。図3の例では、乗換え#1、#2が行われる。乗換え#1は、通信ノードN21の上位ソフトウェアが、HBAドライバ部21b−1からメッセージを一端受け取って、PCIeSWドライバ部31b−1へメッセージを転送する際に行われるメッセージ乗換えである。
また、乗換え#2は、通信ノードN22の上位ソフトウェアが、PCIeSWドライバ部32b−1が受信したメッセージをHBAドライバ部22b−2へ通知する際に行われるメッセージ乗換えである。
<メッセージ乗換え>
図4はソフトウェア処理にもとづくメッセージ乗換えの一例を説明するための図である。乗換え#2の例を示している。ハードウェアレイヤにおいて、通信ノードブロックNB20、通信ノードN22、HBAドライバ部22b−2、PCIeSWドライバ部32b−1と階層化される。
また、ソフトウェアレイヤでは、スレッドスケジューラshが位置し、スレッドスケジューラsh上に、PCIeSWドライバ部(ドライバソフトウェア)dr1と、HBAドライバ部dr2が位置する。また、上位層には上位ソフトウェアsfが位置する。
PCIeSWドライバ部dr1は、スレッドスケジューラshに受信ポーラpol1aと、送信完了ポーラpol2aとを有し、受信ポーラpol1aによって受信ポーリングが行われ、送信完了ポーラpol2aによって送信完了ポーリングが行われる。
また、HBAドライバ部dr2は、スレッドスケジューラshに受信ポーラpol1bと、送信完了ポーラpol2bとを有し、受信ポーラpol1bによって受信ポーリングが行われ、送信完了ポーラpol2bによって送信完了ポーリングが行われる。
なお、受信ポーリングは、受信刈り取り(割り込みを発生させて受信バッファからメッセージを取り出す処理)における問い合わせが行われて所定条件を満たした場合に受信刈り取りが行われるポーリングである。送信完了ポーリングは、送信完了における問い合わせが行われて所定条件を満たした場合に送信完了が通知されるポーリングである。
以下、メッセージ乗換えが行われる動作の流れについて説明する。
〔ステップS11〕PCIeSWドライバ部32b−1は、メッセージを受信する。メッセージは、受信ポーラpol1aとPCIeSWドライバ部dr1を介して、上位ソフトウェアsfへ送信される。
〔ステップS12〕上位ソフトウェアsfは、メッセージのステートmsg_recv()をステートmsg_send()に変換してメッセージ乗換えを行う(なお、括弧内は所定のパラメータが指定される)。
〔ステップS13〕メッセージ乗換え後のステートmsg_recv()のメッセージは、HBAドライバ部dr2、送信完了ポーラpol2b、受信ポーラpol1bを介して、転送要求先へ送信される。
このように、HBAやPCIeSWといった異なるハードウェアの通信デバイスのドライバ部は、各々が独自の送信完了通知、受信刈り取りの仕組みを持っている。このため、異なる通信デバイスのドライバ部間によるメッセージ転送では、上記のように、ソフトウェア上でメッセージの乗換え処理が行われ、メッセージ転送に要する時間が増大する。
このような状況に鑑み、以降で説明する第2の実施の形態では、ノード間通信を行うシステムにおいて、スレッドスケジューラを用いて、ドライバ部装置間のメッセージ転送を行うことで、メッセージ転送時間の短縮化を図るものである。
[第2の実施の形態]
以下、第2の実施の形態の情報処理システムについて詳しく説明する。まず、情報処理システムの構成について説明する。
図5は情報処理システムの構成の一例を示す図である。情報処理システム1−1は、通信ノードブロックNB1と、通信ノードブロックNB2を備える。通信ノードブロックNB1、NB2は、例えば、サーバ、またはストレージの入出力を制御するストレージ制御装置等に該当する。
通信ノードブロックNB1は、通信ノードN0、N1を備え、通信ノードブロックNB2は、通信ノードN2、N3を備える。
通信ノードN0は、通信管理部10、HBAドライバ部12a−1、12a−2、PCIeSWドライバ部14a−1、14a−2およびメモリmr0を含む。通信ノードN1は、HBAドライバ部13a−1、13a−2、PCIeSWドライバ部15a−1、15a−2およびメモリmr1を含む。
通信ノードN2は、通信管理部12、HBAドライバ部12b−1、12b−2、PCIeSWドライバ部14b−1、14b−2およびメモリmr2を含む。通信ノードN3は、通信管理部13、HBAドライバ部13b−1、13b−2、PCIeSWドライバ部15b−1、15b−2およびメモリmr3を含む。
通信ノードブロックNB1、NB2間の接続において、HBAドライバ部12a−1とHBAドライバ部12b−1が通信パスP11で接続し、HBAドライバ部13a−1とHBAドライバ部13b−1が通信パスP12で接続する。また、HBAドライバ部12a−2とHBAドライバ部13b−2が通信パスP13で接続し、HBAドライバ部13a−2とHBAドライバ部12b−2が通信パスP14で接続する。
通信ノードN0、N1間の接続において、PCIeSWドライバ部14a−1とPCIeSWドライバ部15a−1が接続し、PCIeSWドライバ部14a−2とPCIeSWドライバ部15a−2が接続する。
通信ノードN2、N3間の接続において、PCIeSWドライバ部14b−1とPCIeSWドライバ部15b−1が接続し、PCIeSWドライバ部14b−2とPCIeSWドライバ部15b−2が接続する。
上記のように、情報処理システム1−1では、通信ノードブロックNB1、NB2間は、HBAドライバ部を介して接続され、通信ノードN0、N1間と、通信ノードN2、N3間とは、PCIeSWドライバ部を介して接続される。
<メッセージ迂回転送>
次に情報処理システム1−1において、通信パスが切断したときのメッセージ迂回転送について説明する。図6はメッセージ迂回転送の一例を示す図である。
通信パスP13における通常のメッセージ転送において、HBAドライバ部12a−2は、通信パスP13を通じてHBAドライバ部13b−2へメッセージを転送し、HBAドライバ部13b−2で受信されたメッセージはメモリmr3に格納される。
ここで、通信ノードN0、N3間の通信パスP13が切断したとする(例えば、HBAドライバ部のポート故障等)。通信パスP13が切断した場合、通信ノードN0の通信管理部10は、通信パス障害を検出する。そして、通信管理部10は、XIDを付与したメッセージを生成し、迂回パスp20を介して、HBAドライバ部12a−1から該メッセージを転送させる。
なお、迂回パスp20は、通信ノードN0、N2、N3の順に、メッセージを迂回転送させる。迂回パスp20を通じてメッセージが通過するドライバ部は、順にHBAドライバ部12a−1、HBAドライバ部12b−1、PCIeSWドライバ部14b−1、PCIeSWドライバ部15b−1である。そして、PCIeSWドライバ部15b−1がメモリmr3にメッセージを格納する。
一方、通信ノードN2において、HBAドライバ部12b−1は、迂回パスp20上に位置してメッセージを受信する。ここで、迂回パスp20において、HBAドライバ部12b−1およびPCIeSWドライバ部14b−1は、互いの通信デバイスの種類が異なる。
よって、通信ノードN2内の通信管理部12は、メッセージに付与された、PCIeSWドライバ部14b−1のXIDにもとづいて、PCIeSWドライバ部14b−1を起動して、HBAドライバ部12b−1からPCIeSWドライバ部14b−1へメッセージを転送する。
一方、通信ノードN3において、PCIeSWドライバ部15b−1およびHBAドライバ部13b−2は、互いの通信デバイスの種類が異なる。よって、通信ノードN3内の通信管理部13は、メッセージに付与された、HBAドライバ部13b−2のXIDにもとづいて、HBAドライバ部13b−2を起動して、PCIeSWドライバ部15b−1からHBAドライバ部13b−2へメッセージを通知する。
<ハードウェア構成>
次に通信ノードのハードウェア構成について説明する。図7は通信ノードのハードウェア構成の一例を示す図である。通信ノードN0、・・・、N3(以下、総称する場合は通信ノードNと表記)は、図1に示した情報処理装置1の機能を備え、プロセッサ100によって装置全体が制御されている。すなわち、プロセッサ100は、通信ノードNの制御部(PCIeSWドライバ部、HBAドライバ部および通信管理部を含む)として機能する。
プロセッサ100には、バス103を介してメモリ101と複数の周辺機器が接続されている。プロセッサ100は、マルチプロセッサであってもよい。プロセッサ100は、例えば、CPU(Central Processing Unit)、MPU(Micro Processing Unit)、DSP(Digital Signal Processor)、ASIC(Application Specific Integrated Circuit)、またはPLD(Programmable Logic Device)である。またプロセッサ100は、CPU、MPU、DSP、ASIC、PLDのうちの2以上の要素の組み合わせであってもよい。
メモリ101は、通信ノードNの主記憶装置として使用される。メモリ101には、プロセッサ100に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ101には、プロセッサ100による処理に要する各種メッセージが格納される。
また、メモリ101は、通信ノードNの補助記憶装置としても使用され、OSのプログラム、アプリケーションプログラム、および各種メッセージが格納される。メモリ101は、補助記憶装置として、フラッシュメモリやSSD(Solid State Drive)等の半導体記憶装置やHDD(Hard Disk Drive)等の磁気記録媒体を含んでもよい。
バス103に接続されている周辺機器としては、入出力インタフェース102およびネットワークインタフェース104がある。入出力インタフェース102は、プロセッサ100からの命令にしたがって通信ノードNの状態を表示する表示装置として機能するモニタ(例えば、LED(Light Emitting Diode)やLCD(Liquid Crystal Display)等)が接続されている。
また、入出力インタフェース102は、キーボードやマウス等の情報入力装置を接続可能であって、情報入力装置から送られてくる信号をプロセッサ100に送信する。
入出力インタフェース102は、周辺機器を接続するための通信インタフェースとして機能する。例えば、入出力インタフェース102は、レーザ光等を利用して、光ディスクに記録されたメッセージの読み取りを行う光学ドライブ装置を接続することができる。光ディスクは、光の反射によって読み取り可能なようにメッセージが記録された可搬型の記録媒体である。光ディスクには、DVD(Digital Versatile Disc)、DVD−RAM(Random Access Memory)、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Rewritable)等がある。
また、入出力インタフェース102は、メモリ装置やメモリリーダライタを接続することができる。メモリ装置は、入出力インタフェース102との通信機能を搭載した記録媒体である。メモリリーダライタは、メモリカードへのメッセージの書き込み、またはメモリカードからのメッセージの読み出しを行う装置である。メモリカードは、カード型の記録媒体である。
ネットワークインタフェース104は、例えば、NIC(Network Interface Card)、無線LAN(Local Area Network)カード等であり、ネットワークインタフェース104で受信された信号やメッセージ等は、プロセッサ100に出力される。
以上のようなハードウェア構成によって、通信ノードNの処理機能を実現することができる。例えば、通信ノードNは、プロセッサ100がそれぞれ所定のプログラムを実行することで、メッセージ転送制御を行うことができる。
通信ノードNは、例えば、コンピュータで読み取り可能な記録媒体に記録されたプログラムを実行することにより、本発明の処理機能を実現する。通信ノードNに実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。
例えば、通信ノードNに実行させるプログラムを補助記憶装置に格納しておくことができる。プロセッサ100は、補助記憶装置内のプログラムの少なくとも一部を主記憶装置にロードし、プログラムを実行する。また、光ディスク、メモリ装置、メモリカード等の可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えば、プロセッサ100からの制御により、補助記憶装置にインストールされた後、実行可能となる。またプロセッサ100が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
<メッセージフォーマット>
図8はメッセージフォーマットの一例を示す図である。メッセージ転送で使用されるメッセージM0は、ヘッダ部とペイロード部を有する。ヘッダ部は、MSG_Type(メッセージタイプ)、XID(迂回転送先識別子)およびXID_FW(転送要求先識別子)を含む。
MSG_Typeは、メッセージが例えば、迂回転送用のメッセージであるか否か等のタイプを示す。XIDは、迂回転送先の識別子を示す。XID_FWは、転送要求先の識別子を示す。
<QSTRによるメッセージ転送>
次にQSTRによるメッセージ転送について図9、図10を用いて説明する。図9はQSTRによるメッセージ転送を説明するための図である。PCIeSWが受信したメッセージを、HBAを経由して転送要求先へメッセージを迂回転送する場合を示している。
ハードウェアレイヤでは、PCIeSWドライバがメッセージを受信する。通信管理部(スレッドスケジューラ)では、QSTRにもとづく1対1のメッセージ転送が行われる。ソフトウェアレイヤでは、転送要求先へメッセージが送信される。
ここで、QSTRにもとづくメッセージ転送では、QSTR_READ(読み出し通知)のシステムコールは、スレッドスケジューラでスリープ(sleep)しており、自身のXIDに対するQSTR_WRITE(書き込み通知)のシステムコールが行われると、スレッドスケジューラから起床する仕組みとなっている。
すなわち、QSTRは、自身のXIDによるQSTR_WRITEが行われると、通信パイプ先でスリープしているQSTR_READの待ち受けを起床させる。
〔ステップS21〕PCIeSWドライバ部にメッセージが到達する。
〔ステップS22〕PCIeSWドライバ部は、メッセージヘッダのXIDを参照し、メッセージ受信処理を開始する。
〔ステップS23〕スレッドスケジューラは、メッセージのMSG_Typeを参照し、メッセージ迂回転送だと判別すると、メッセージ中のXIDに対応したQSTR_WRITEを実施する。
〔ステップS24〕迂回転送を待ち受けているHBAドライバ部は、このQSTR_WRITEによってスレッドスケジューラから起床し、転送要求先へメッセージを通知する。
図10はメッセージ乗換えをせずにメッセージ転送が行われる状態を示す図である。ハードウェアレイヤにおいて、通信ノードブロックNB2、通信ノードN3、HBAドライバ部13b−2、PCIeSWドライバ部15b−1と階層化される。
また、ソフトウェアレイヤでは、スレッドスケジューラshが位置し、スレッドスケジューラsh上に、PCIeSWドライバ部dr11と、HBAドライバ部dr12が位置する。また、上位層には上位ソフトウェアsfが位置する。
PCIeSWドライバ部dr11は、スレッドスケジューラshに受信ポーラpol1aと、送信完了ポーラpol2aとを有し、受信ポーラpol1aによって受信ポーリングが行われ、送信完了ポーラpol2aによって送信完了ポーリングが行われる。
HBAドライバ部dr12は、スレッドスケジューラshに受信ポーラpol1bと、送信完了ポーラpol2bとを有し、受信ポーラpol1bによって受信ポーリングが行われ、送信完了ポーラpol2bによって送信完了ポーリングが行われる。
〔ステップS31〕PCIeSWドライバ部15b−1は、メッセージを受信する。
〔ステップS32〕スレッドスケジューラ内で、QSTRのメッセージ転送が行われ、上位ソフトウェアsfの処理による乗換え処理が行われることなく、ステートmsg_recv()のメッセージは、転送要求先へ送信される。
上記のように、通信ノードNは、HBAドライバ部、PCIeSWドライバ部共にスレッドスケジューラに対して、送信完了ポーラ、受信ポーラを持ち、スレッドスケジューラのQSTRでメッセージ転送を行う。また、この場合、メッセージに付与されたXIDにもとづき、HBAドライバ部、PCIeSWドライバ部のいずれかを起床させる。
このように、QSTRにもとづくメッセージ転送の実行により、ソフトウェアの乗換え処理を行わずに、直接ドライバ部間でメッセージ転送を行うことが可能になる。また、メッセージ転送に際して、メッセージのヘッダ部には、MSG_Type、XIDおよびXID_FWが設けられる。
これにより、迂回パス上で迂回転送用のメッセージと特定できるので、メッセージ迂回転送時の迂回パス上で例えば、メッセージのペイロードをラップ(Wrap)することなく転送することができ、処理負荷を低減することができる。
<メッセージ迂回転送のシーケンス>
図11はメッセージ迂回転送のシーケンスの一例を示す図である。通信ノードN0と通信ノードN3とをつなぐ通信パスP13が切断し、迂回パスp20でメッセージ転送が行われるものとする。なお、図11中の“smsg”は転送要求元からのメッセージ、“msg”は応答メッセージを示す。
〔ステップS41〕メッセージ転送要求元の通信ノードN0の通信管理部10は、HBAドライバ部12a−2に対し、通信ノードN3のHBAドライバ部13b−2へ向けてのメッセージ転送を指示する。
〔ステップS42a〕HBAドライバ部12a−2は、通信パスP13を介して、通信ノードN0から通信ノードN3へのメッセージ転送を試みる。
〔ステップS42b〕通信管理部10は、通信パスP13が切断されているために、通信パスP13を用いたメッセージ転送が不可であることを検出し、迂回転送を開始する。
〔ステップS43〕通信管理部10は、迂回パスp20を用いてメッセージ転送を行うものとし、HBAドライバ部12a−1は、通信ノードN2内のHBAドライバ部12b−1へメッセージを転送する。このとき、メッセージのヘッダ部は、例えば、MSG_Type=REQ_FW、XID=0x00000002、XID_FW=0x00000003と設定される。
〔ステップS44〕HBAドライバ部12b−1は、メッセージを受信する。通信管理部12は、受信されたメッセージのMSG_Typeが迂回転送タイプ(REQ_FW)と検出する。そして、通信管理部12は、HBAドライバ部12b−1に対し、PCIeSWドライバ部14b−1へ向けてメッセージを転送する指示を出す。このとき、メッセージのヘッダ部は、例えば、MSG_Type=REQ_FW、XID=0x80000023、XID_FW=0x00000003と設定される。
〔ステップS45〕通信管理部12は、XIDをキーにしてPCIeSWドライバ部14b−1用のQSTRを取得する。そして、通信管理部12は、メッセージをQSTR_WRITEにし、PCIeSWドライバ部14b−1のQSTR_READを起床させて、HBAドライバ部12b−1からPCIeSWドライバ部14b−1へメッセージを転送する。
〔ステップS46〕通信ノードN2内のHBAドライバ部12b−1は、通信ノードN10のHBAドライバ部12a−1へ転送完了メッセージ(ACKメッセージ)を送信する。このとき、メッセージのヘッダ部は、例えば、MSG_Type=ACK_FW、XID=0x00000002、XID_FW=0x00000003と設定される。
〔ステップS47〕HBAドライバ部12a−1は、通信管理部10にメッセージ転送完了を通知する。
<RDMA(Remote Direct Memory Access)の迂回転送>
図12はRDMAの迂回転送の一例を説明するための図である。通信ノードN0、N1、N2、N3は、図5に示したように、それぞれメモリ(メインメモリ)mr0、mr1、mr2、mr3を備える。また、メモリmr0、mr1、mr2、mr3は、ドライバ部で転送されるメッセージを格納するためのドライババッファ領域r0、r1、r2、r3を有しており、各通信ノードで固定サイズが確保されている。
ここで、通信ノードN0のメモリmr0に格納される転送元リストM11、M12を、RDMAによって通信ノードN3のメモリmr3に格納させる場合、通信ノードN2を介して迂回転送して行うものとする。
この場合、転送元リストM11、M12は、複数に分割されて、通信ノードN2内のメモリmr2のドライババッファ領域r2に一旦格納される。そして、ドライババッファ領域r2から転送元リストM11、M12が読み出され、転送元リストM11、M12は、通信ノードN3内のメモリmr3に格納される。
<RDMAの迂回転送のシーケンス>
図13はRDMAの迂回転送のシーケンスの一例を説明するための図である。なお、図13中の“rdma”はRDMA転送、またはRDMA転送される転送リストを示し、“msg”はメッセージ通信、またはRDMA転送を指示するメッセージを示す。
〔ステップS51〕RDMA転送要求元の通信ノードN0の通信管理部10は、HBAドライバ部12a−2に対し、通信ノードN3のHBAドライバ部13b−2へ向けてのRDMA転送を指示する(RDMAにメッセージヘッダは無し)。
〔ステップS52a〕HBAドライバ部12a−2は、通信パスP13を介して、通信ノードN0から通信ノードN3へのRDMA転送を試みる。
〔ステップS52b〕通信管理部10は、通信パスP13が切断されているために、通信パスP13を用いたRDMA転送が不可であることを検出し、迂回転送を開始する。
〔ステップS53〕HBAドライバ部12a−1は、通信ノードN2内のメモリmr2のドライババッファ領域r2へRDMA転送を行う。
〔ステップS54〕通信管理部10は、HBAドライバ部12a−1に対し、メッセージ通信により、RDMA転送指示を送信する。このとき、メッセージのヘッダ部は、例えば、MSG_Type=RDMA_FW、XID=0x00000002と設定される。また、RDMA転送指示のメッセージのペイロードには、転送リストが格納される。
〔ステップS55〕通信管理部12は、PCIeSWドライバ部14b−1に対してRDMA転送を指示する(RDMA転送のメッセージヘッダ無し)。
〔ステップS56〕HBAドライバ部12b−1は、PCIeSWドライバ部14b−1の転送完了待ちを行う。
〔ステップS57〕HBAドライバ部12b−1は、通信ノードN0のHBAドライバ部12a−1へ転送完了メッセージを送信する。このとき、メッセージヘッダ部には、例えば、MSG_Type=RDMA_FW_E、XID=0x00000002と設定される。
〔ステップS58〕ステップS53からステップS57までの処理が、RDMA転送要求元の転送元リストのサイズ分実施される。
〔ステップS59〕HBAドライバ部12a−1は、通信管理部10にRDMA転送完了を通知する。
上記のように、通信ノードN2のHBAドライバ部12b−1が受信ポーリングでメッセージを受け取り、PCIeSWドライバ部14b−1のRDMAを起動するので、この部分で上位ソフトウェアの処理が挟むことはない。
なお、上記では、互いに異なるハードウェアのメッセージ転送を、HBAとPCIeSW間でのメッセージ転送として説明したが、他のデータ伝送機能を有する通信デバイスに対しても本発明を適用できる。
以上説明したように、本発明によれば、異なるハードウェアのドライバ部間のメッセージ転送時、スレッドスケジューラが有するQSTRにより、メッセージに付与された識別子にもとづき転送先ドライバ部を起動してメッセージ転送を行う。これにより、メッセージ転送時間を短縮化することができる。また、以下に示すような効果も有する。
(1)迂回通信を高速に転送することを可能にするので、冗長経路の構成部品(ドライバ部等)を削減することが可能になり、装置の低コスト化が可能になる。
(2)上位ソフトウェア処理でのメッセージ乗換えが発生しないため、迂回転送を低レイテンシで実現でき、通信性能が高速化し、上位ソフトウェア処理で要していた受信バッファメモリを削減することが可能になる。
(3)ソフトウェアの入れ替えや、改版などの上位ソフトウェア処理の移植が不要となるため、開発コストの低減が可能になる。
(4)転送メッセージのラップが不要なため、迂回パスが複数に跨っても、経路上のメッセージサイズを変更するがことなく、速度劣化のない迂回転送が可能になる。
上記で説明した本発明の情報処理装置1、通信ノードNの処理機能は、コンピュータによって実現することができる。この場合、情報処理装置1、通信ノードNが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記憶装置、光ディスク、光磁気記録媒体、半導体メモリ等がある。磁気記憶装置には、ハードディスク装置(HDD)、フレキシブルディスク(FD)、磁気テープ等がある。光ディスクには、DVD、DVD−RAM、CD−ROM/RW等がある。光磁気記録媒体には、MO(Magneto Optical disk)等がある。
プログラムを流通させる場合、例えば、そのプログラムが記録されたDVD、CD−ROM等の可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、例えば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。
また、コンピュータは、ネットワークを介して接続されたサーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。また、上記の処理機能の少なくとも一部を、DSP、ASIC、PLD等の電子回路で実現することもできる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 情報処理装置
1a−1、1a−2 通信ドライバ部
1b 通信管理部
XID 識別子
QSTR 待ち合わせ構造体

Claims (8)

  1. 第1の通信デバイスの第1の通信ドライバ部と、
    前記第1の通信デバイスとは異なる第2の通信デバイスの第2の通信ドライバ部と、
    前記第1の通信ドライバ部が受け付けたメッセージに含まれる前記第2の通信ドライバ部の識別子にもとづいて、前記第2の通信ドライバ部を起動して、前記第1の通信ドライバ部から前記第2の通信ドライバ部へ前記メッセージを転送する通信管理部と、
    を有する情報処理装置。
  2. 前記通信管理部は、前記第1の通信ドライバ部と前記第2の通信ドライバ部とに共通のスレッドスケジューラである請求項1記載の情報処理装置。
  3. 前記スレッドスケジューラは、前記識別子に対応する書き込み通知を待ち合わせ構造体の一端で行って、前記待ち合わせ構造体の他端で待ち受けしている、前記書き込み通知に対応する前記読み出し通知を呼び出し、前記読み出し通知によって前記第2の通信ドライバ部を起動する請求項2記載の情報処理装置。
  4. ノード間通信を行う情報処理システムにおいて、
    第1の通信デバイスの第1の通信ドライバ部と、前記第1の通信ドライバ部によるメッセージ転送時に通信パス障害を検出した場合、識別子を含むメッセージを生成し、迂回パスを通じて前記メッセージを前記第1の通信ドライバ部から転送する第1の管理部と、を含む第1の通信ノードと、
    前記迂回パス上に位置して前記メッセージを受信する、前記第1の通信デバイスの第2の通信ドライバ部と、前記迂回パス上に位置して、前記第1の通信デバイスとは異なる第2の通信デバイスの第3の通信ドライバ部と、前記メッセージに含まれる前記第3の通信ドライバ部の前記識別子にもとづいて、前記第3の通信ドライバ部を起動して前記第2の通信ドライバ部から前記第3の通信ドライバ部へ前記メッセージを転送する第2の通信管理部と、を含む第2の通信ノードと、
    を有する情報処理システム。
  5. 前記第2の通信管理部は、前記第2の通信ドライバ部と前記第3の通信ドライバ部とに共通のスレッドスケジューラである請求項4記載の情報処理システム。
  6. 前記スレッドスケジューラは、前記識別子に対応する書き込み通知を待ち合わせ構造体の一端で行って、前記待ち合わせ構造体の他端で待ち受けしている、前記書き込み通知に対応する読み出し通知を呼び出し、前記読み出し通知によって前記第3の通信ドライバ部を起動する請求項5記載の情報処理システム。
  7. 前記迂回パスを通じて、前記第3の通信ドライバ部から転送された前記メッセージを受信する第3の通信ノードを有し、前記メッセージによって、前記第1の通信ノードの記憶部から前記第3の通信ノードの記憶部へのダイレクトメモリアクセス転送が指示される請求項4記載の情報処理システム。
  8. コンピュータに、
    第1の通信デバイスの第1の通信ドライバ部から、前記第1の通信デバイスとは異なる第2の通信デバイスの第2の通信ドライバ部へメッセージ転送を実行させる場合、
    前記第1の通信ドライバ部が受け付けるメッセージに前記第2の通信ドライバ部の識別子を含め、前記識別子にもとづいて、前記第2の通信ドライバ部を起動して前記第1の通信ドライバ部から前記第2の通信ドライバ部へ前記メッセージを転送する、
    処理を実行させるプログラム。
JP2017083351A 2017-04-20 2017-04-20 情報処理装置、情報処理システムおよびプログラム Pending JP2018181170A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017083351A JP2018181170A (ja) 2017-04-20 2017-04-20 情報処理装置、情報処理システムおよびプログラム
US15/952,284 US20180309663A1 (en) 2017-04-20 2018-04-13 Information processing apparatus, information processing system, and information processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017083351A JP2018181170A (ja) 2017-04-20 2017-04-20 情報処理装置、情報処理システムおよびプログラム

Publications (1)

Publication Number Publication Date
JP2018181170A true JP2018181170A (ja) 2018-11-15

Family

ID=63852421

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017083351A Pending JP2018181170A (ja) 2017-04-20 2017-04-20 情報処理装置、情報処理システムおよびプログラム

Country Status (2)

Country Link
US (1) US20180309663A1 (ja)
JP (1) JP2018181170A (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7821930B2 (en) * 2005-09-12 2010-10-26 Microsoft Corporation Fault-tolerant communications in routed networks
US8095828B1 (en) * 2009-08-31 2012-01-10 Symantec Corporation Using a data storage system for cluster I/O failure determination
GB2494385B (en) * 2011-08-31 2018-06-06 Metaswitch Networks Ltd Transmitting and forwarding data

Also Published As

Publication number Publication date
US20180309663A1 (en) 2018-10-25

Similar Documents

Publication Publication Date Title
US8204054B2 (en) System having a plurality of nodes connected in multi-dimensional matrix, method of controlling system and apparatus
TW201737100A (zh) 具有窄頻寬中繼器通道的記憶體子系統
US9065760B2 (en) Priority data transmission using Fibre Channel over Ethernet
US20250272257A1 (en) Peripheral component interconnect express device and operating method thereof
CN110312999A (zh) 基于软件配置/策略分发的PCIe盘阵列的动态划分
CN112543922B (zh) 一种提高存储系统可靠性的方法和相关装置
US10924435B2 (en) System and method for port reduction using multiple chassis link aggregation group for stacked devices
WO2016135919A1 (ja) ストレージ装置
KR102733468B1 (ko) 복수의 칩렛을 포함하는 전자 장치
US11182325B1 (en) Memory centric computing storage controller system
JP6369224B2 (ja) 情報処理システム、情報処理装置、及び情報処理システムの制御方法
US11500601B2 (en) Method and system for providing a mesh network of displays using a universal serial bus
JP2018181170A (ja) 情報処理装置、情報処理システムおよびプログラム
CN120238425B (zh) 端口故障切换的方法、设备和存储介质
CN118606117A (zh) 一种四控互联镜像系统、数据传输方法、设备和介质
JP2019046283A (ja) 制御装置、バックアップ処理方法およびプログラム
CN116893997A (zh) 接口设备和包括该接口设备的计算系统
WO2021244500A1 (zh) 一种备份状态确定方法、装置及系统
JP2014532236A (ja) 接続方法
JP5365747B2 (ja) 処理システム,通信装置および処理装置
US10628059B2 (en) Storage system, connection controller, and storage control program
US20250190037A1 (en) Providing power delivery data while an information handling system is powered off or in a low power state
US20240427401A1 (en) External display device auxiliary power mechanism during power outage
JP2008084206A (ja) ストレージ装置およびデータ転送方法
CN118921340A (zh) 交换机cpu状态监控管理方法、装置、介质及程序产品

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180706

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190418

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190423

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20191112