(58)【調査した分野】(Int.Cl.,DB名)
複数のホストとネットワークを介して接続され、該複数のホストにより共有されるI/O(入出力)デバイスとの間の通信において前記I/Oデバイスを仮想化する接続仮想化手段と、
設定された帯域制御パラメータに基づいて、前記複数のホストと前記I/Oデバイスとの間のネットワークを介したPCIe(Peripheral Component Interconnect express)パケット通信を監視して、前記複数のホストのそれぞれに対して設定された所定の通信帯域の割当を保証する帯域制御を実行する帯域制御手段と、
を備え、
前記帯域制御手段は、前記ホストからDMA(Direct Memory Access)リード要求に対する前記I/Oデバイスからの応答データを構成するTLP(Transaction Layer Packet)セグメントパケットの間に挿入するアイドルサイクルに、抑制すべきパケット流量に応じた付加アイドルサイクルを加えて前記帯域制御を実行し、前記帯域制御の解除を行う際には該付加アイドルサイクルを除去する
ことを特徴とするI/Oデバイス仮想化装置。
前記帯域制御手段は、現在のパケット流量に対応する前記アイドルサイクルと、抑制目標とするパケット流量に対応するアイドルサイクルとの差分のクロックサイクルとして前記付加アイドルサイクルを決定することを特徴とする請求項1に記載のI/Oデバイス仮想化装置。
前記帯域監視部は、前記帯域制御の実行指示の出力後、前記複数のホストによる総通信量が前記輻輳判定閾値を下回るか、前記最低保証帯域を下回る通信量のホストが存在しない場合に、前記帯域制御の解除指示を出力し、
前記帯域管理部は、前記帯域制御の解除指示を受けると、前記帯域制御で減少させた前記通信路のパケット流量を元に戻す帯域制御解除を行う
ことを特徴とする請求項3に記載のI/Oデバイス仮想化装置。
複数のホストと該複数のホストにより共有されるI/O(入出力)デバイスとの間の通信において前記I/Oデバイスを仮想化するI/Oデバイス仮想化装置に、前記複数のホストと前記I/Oデバイスとの間のネットワークを介したPCIe(Peripheral Component Interconnect express)パケット通信の帯域制御パラメータを設定し、
前記複数のホストと前記I/Oデバイスとの間の前記PCIeパケット通信を監視して、前記I/Oデバイス仮想化装置が前記帯域制御パラメータに基づいて、前記複数のホストのそれぞれに対して設定された所定の通信帯域の割当を保証する帯域制御を実行し、
前記ホストからDMA(Direct Memory Access)リード要求に対する前記I/Oデバイスからの応答データを構成するTLP(Transaction Layer Packet)セグメントパケットの間に挿入するアイドルサイクルに、抑制すべきパケット流量に応じた付加アイドルサイクルを加えて前記帯域制御を実行し、
前記帯域制御の解除を行う際には該付加アイドルサイクルを除去する
ことを特徴とする帯域保証制御方法。
現在のパケット流量に対応する前記アイドルサイクルと、抑制目標とするパケット流量に対応するアイドルサイクルとの差分のクロックサイクルとして前記付加アイドルサイクルを決定する
ことを特徴とする請求項6に記載の帯域保証制御方法。
前記帯域制御パラメータは、輻輳状態を判定する基準となる通信量の輻輳判定閾値と、前記複数のホストのそれぞれに割り当てられた最低を保証する通信帯域を規定する最低保証帯域を含み、
前記複数のホストによる総通信量が前記輻輳判定閾値を超え、かつ、前記最低保証帯域を下回る通信量のホストが存在する場合に、前記帯域制御の実行指示を出力し、
前記帯域制御の実行指示に基づいて、前記複数のホストのうち通信量が最大のホストの通信路を流れるパケット流量を減少させる前記帯域制御を実行し、
前記帯域制御の実行指示の出力後、前記複数のホストによる総通信量が前記輻輳判定閾値を下回るか、前記最低保証帯域を下回る通信量のホストが存在しない場合に、前記帯域制御の解除指示を出力し、
前記帯域制御の解除指示に基づいて、前記帯域制御で減少させた前記通信路のパケット流量を元に戻す帯域制御解除を行う
ことを特徴とする請求項6あるいは請求項7に記載の帯域保証制御方法。
【発明を実施するための形態】
【0020】
本発明を実施するための形態について図面を参照して説明する。
【0021】
尚、実施の形態は例示であり、開示の装置及びシステムは、以下の実施の形態の構成には限定されない。
(第1の実施形態)
図1は、本発明のI/Oデバイス仮想化装置とそれを含んだI/Oデバイス共有システムの第1の実施形態の構成を示すブロック図である。
【0022】
第1の実施形態のI/Oデバイス仮想化装置10は、接続仮想化手段101と帯域制御手段100を含む構成になっている。
【0023】
接続仮想化手段101は、複数のホスト30とネットワーク40を介して接続され、該複数のホスト30により共有されるI/O(入出力)デバイス20との間の通信においてI/Oデバイスを仮想化する。
【0024】
帯域制御手段100は、設定された帯域制御パラメータに基づいて、複数のホスト30とI/Oデバイス20との間のネットワーク40を介したPCIe(Peripheral Component Interconnect express)パケット通信を監視する。そして、帯域制御手段100は、複数のホスト30のそれぞれに対して設定された所定の通信帯域の割当を保証する帯域制御を実行する。
【0025】
また、第1の実施形態のI/Oデバイス共有システム1は、複数のホスト30と、複数のホスト30により共有されるI/Oデバイス20と、上記に記載のI/Oデバイス仮想化装置10と、システム管理装置50とを含んで構成される。システム管理装置50は、I/Oデバイス仮想化装置10に帯域制御パラメータを設定する。
【0026】
図2は、本発明の帯域保証制御方法の第1の実施形態の動作を示すフロー図である。
【0027】
本発明の帯域保証制御方法の第1の実施形態は、次のように動作する。
【0028】
複数のホストと該複数のホストにより共有されるI/Oデバイスとの間の通信においてI/Oデバイスを仮想化するI/Oデバイス仮想化装置に、複数のホストとI/Oデバイスとの間の通信の帯域制御パラメータを設定する(S101)。複数のホストとI/Oデバイスとの間の通信は、ネットワークを介したPCIe(Peripheral Component Interconnect express)パケット通信である。
【0029】
複数のホストとI/Oデバイスとの間のPCIeパケット通信を監視して、I/Oデバイス仮想化装置が帯域制御パラメータに基づいて、複数のホストのそれぞれに対して設定された所定の通信帯域の割当を保証する帯域制御を実行する(S102)。
【0030】
以上のように、本実施形態では、帯域制御手段100を配備したI/Oデバイス仮想化装置10により、各ホスト30が使用する帯域の占有率(使用割合)をリアルタイムで制御することができる。しかも、帯域制御手段100は設定された帯域制御パラメータに基づいて自律で帯域制御を実行するので、ネットワーク40を介したPCIeパケット通信の低遅延での帯域制御が可能となる。そのため、ホスト間の帯域使用割合が適正化されて、I/Oデバイスを物理的に共有するのみならず、論理的にも公平に複数のホスト間で共有することができる。
(第2の実施形態)
次に第2の実施形態を説明する。
【0031】
図3は、本発明のI/Oデバイス仮想化装置とそれを含んだI/Oデバイス共有システムの第2の実施形態の構成を示すブロック図である。
【0032】
第2の実施形態のI/Oデバイス仮想化装置であるI/O仮想化ブリッジ11は、接続仮想化手段として、ネットワーク接続部111、パケット転送部112、アドレス変換部113および接続仮想化部114を含む。これらの構成は、第1の実施形態の接続仮想化手段101に相当する。また、I/O仮想化ブリッジ11は、第1の実施形態の帯域制御手段100に相当する構成として、パラメータブロック120、帯域管理ブロック130および帯域監視ブロック140を含む帯域制御部110を備える。
【0033】
ネットワーク接続部111、パケット転送部112、アドレス変換部113、接続仮想化部114、パラメータブロック120、帯域管理ブロック130および帯域監視ブロック140の機能については後述する。
【0034】
上記の構成を備えたI/O仮想化ブリッジ11を含む本発明の第2の実施形態のI/Oデバイス共有システム2は、複数のホスト31、システムマネージャ51および該I/O仮想化ブリッジ11がネットワーク41を介して接続される。そして、I/O仮想化ブリッジ11は、SR−IOV(Single-Root I/O Virtualization)規格に準拠するSR−IOV対応I/Oデバイス21と接続される。該SR−IOV対応I/Oデバイス21は、I/O仮想化ブリッジ11により仮想化されて、複数のホスト31により共有される。
【0035】
各ホスト31は、プログラムに従って動作するCPU(Central Processing Unit)と該プログラムやデータを格納するメモリ、ホストPCIeブリッジおよびルートコンプレックスを含む構成となっている。ルートコンプレックスは、CPUとホストPCIeブリッジとを接続する機能部である。そして、ホストPCIeブリッジは、ホスト31のI/OバスであるPCIeバスをネットワーク41に接続する機能部である。ホストPCIeブリッジは、PCIeパケットのネットワークパケットへのカプセル化と、ネットワークパケットにカプセル化されたPCIeパケットのデカプセル化を行う。
【0036】
システムマネージャ51は、上記のホスト31の構成と同様の構成を有し、帯域管理ソフトウェアを備えて、帯域制御に必要とされる各種のパラメータをI/O仮想化ブリッジ11の帯域制御部110に設定する。
【0037】
SR−IOV対応I/Oデバイス21は、PF(Physical Function:物理機能)と複数のVF(Virtual Function:仮想機能)1乃至VFN(Nは2以上の自然数)を含む構成となっている。
【0038】
PFは、SR−IOV機能を管理してデバイスを制御するインタフェースである。PFは、当該デバイスの設定情報を保持するPF CFG REG(PF構成レジスタ)を有する。VFは、I/Oデバイスの機能を提供するインタフェースであり、PFやPFに関連付けられた他のVFと1つ以上の物理リソースを共有する。
【0039】
接続仮想化手段として機能するネットワーク接続部111、パケット転送部112、アドレス変換部113および接続仮想化部114について説明する。
【0040】
上記のシステム構成において、ホスト31では、CPUがSR−IOV対応I/Oデバイス21の中のVFにアクセス命令を発行すると、ルートコンプレックスが、VFがマッピングされるメモリアドレス宛てのPCIeパケットを作成して送信する。ホストPCIeブリッジは、PCIeパケットをネットワークパケットにカプセル化してネットワーク41に送信する。
【0041】
ネットワーク41と接続されたネットワーク接続部111は、ホスト31が送信したネットワークパケットを受信し、該ネットワークパケットをデカプセル化してPCIeパケットを取り出す。そして、取り出されたPCIeパケットは帯域制御部110を経由してパケット転送部112に転送される。なお、逆方向の通信でPCIeパケットをホスト31に送信する場合には、ネットワーク接続部111は、送信すべきPCIeパケットをネットワークパケットにカプセル化してネットワーク41に送信する。
【0042】
パケット転送部112は、受信したPCIeパケットをアドレス変換部113に転送する。
【0043】
接続仮想化部114は、SR−IOV対応I/Oデバイス21に関する設定を行う。
【0044】
接続仮想化部114は、SR−IOV対応I/Oデバイス21がホスト31から使用される前に、PFのPF CFG REG(PF構成レジスタ)にアクセスしてSR−IOV対応I/Oデバイス21の設定を行う。このとき、SR−IOV対応I/Oデバイス21のVF1乃至VFNのアドレス設定を行う。
【0045】
アドレス変換部113は、各ホスト31と各VFとの間で送受信されるI/OパスのPCIeパケットに記載されたアドレスに関して、各ホスト31が設定したアドレスと、接続仮想化部114が設定したアドレスの変換を行う。
【0046】
帯域制御部110のパラメータブロック120、帯域管理ブロック130および帯域監視ブロック140の機能について説明する。
【0047】
パラメータブロック120は、システムマネージャ51が設定する帯域制御に関するパラメータを格納するレジスタであり、システムマネージャ51から直接制御されて書き込まれる。格納されたパラメータは帯域監視ブロック140および帯域管理ブロック130から参照される。
【0048】
帯域監視ブロック140は、帯域制御部110を通過するI/Oパスの通信量をモニタして帯域の使用状況を監視する。I/Oパスの輻輳状態を検知し、しかもホスト間での帯域使用が公平になっていないことを判定した場合に、帯域監視ブロック140は、帯域管理ブロック130に帯域制御の実行を指示する。
【0049】
なお、システム運用者は、ホスト間に割り当てる帯域を意図的に偏らせるように設定することもあり得る。そのため、帯域監視ブロック140は、帯域の使用状況がシステムマネージャ51から設定された状態から逸脱していると判定した場合にも、帯域管理ブロック130に帯域制御の実行を指示する構成にしてもよい。
【0050】
帯域管理ブロック130は、帯域監視ブロック140からの帯域制御の実行指示をトリガーにして帯域制御を実行する。帯域制御は、パラメータブロックに格納された各種パラメータに従って、各ホストのI/Oパスに設定された帯域を保証するような通信量の制御を行う。
【0051】
図3のように構成された第2の実施形態のI/Oデバイス仮想化装置とそれを含んだI/Oデバイス共有システムは、以下のように動作する。ここでは、2つのホスト31(ホスト31-1、ホスト31-2とする)がSR−IOV対応I/Oデバイス21にアクセスする場合を例にする。なお、以降の説明においては、SR−IOV対応I/Oデバイス21を単にI/Oデバイス21と称するものとする。
【0052】
ホスト31-1において、CPUがI/Oデバイス21にアクセスする命令を発行すると、ルートコンプレックスは、I/Oデバイス21宛のPCIeパケットを作成して送信する。ホストPCIeブリッジは、PCIeパケットをネットワークパケットにカプセル化してネットワーク41に送信する。
【0053】
I/O仮想化ブリッジ11において、ネットワーク接続部111は、ネットワーク41を介してネットワークパケットを受信すると、該ネットワークパケットをデカプセル化してPCIeパケットを取り出す。ネットワーク接続部111は、取り出したPCIeパケットを、帯域制御部110を経由してパケット転送部112に転送する。
【0054】
パケット転送部112は、受信したPCIeパケットをアドレス変換部113に転送する。
【0055】
アドレス変換部113は、PCIeパケットの宛先アドレスを、ホスト31-1が指定したアドレスから、接続仮想化部114が再設定したアドレスに変換する。そして、アドレス変換したPCIeパケットをI/Oデバイス21に送信する。
【0056】
なお、I/Oデバイス21が送信したPCIeパケットをホスト31-1、31-2が受信する場合には、上記の処理と逆の処理が実行される。
【0057】
上記の処理において、ホスト31-1、31-2宛てのPCIeパケットは、帯域制御部110にて監視が行われ、パケットの流量が測定される。つまり、パケットの流量を測定して通信経路の帯域使用率がモニタされる。具体的には、ホストからのDMA(Direct Memory Access)リード要求に対する応答データの量が監視される。
【0058】
帯域制御部110はシステムマネージャ51によって設定された「輻輳と判断する閾値」と各ホストに対して設定した「最低保証帯域」に従い、通信量の調整を行う。例えば、ホスト31-1の通信がホスト31-2の通信に圧迫されていると判断すると、ホスト31-2の通信量を抑制してホスト31-1の通信量を規定された値まで回復させて、両ホスト間の通信量のバランスを制御する。
【0059】
次に、本実施形態の特徴となる帯域制御部110の構成と動作について
図4乃至
図10を参照して詳細に説明する。
【0060】
図4は、I/O仮想化ブリッジ11が備える帯域制御部110の構成を示すブロック図である。
【0061】
前述のように、帯域制御部110は、帯域制御に関するパラメータを格納したパラメータブロック120、I/Oパスの通信量をモニタする帯域監視ブロック140および帯域制御を実行する帯域管理ブロック130を含む構成になっている。
【0062】
帯域制御部110の動作は、パラメータブロック120に設定する情報を介してシステムマネージャ51から制御することができる。システムマネージャ51はパラメータブロック120に帯域制御に必要なパラメータ設定を行い、帯域監視ブロック140および帯域管理ブロック130は、その設定に従い動作する。
【0063】
システムマネージャ51はネットワーク41を介してパラメータブロック120にアクセスすることができ、パラメータブロック120のパラメータ設定値を変更できる。なお、ネットワーク41を介することなくシステムマネージャ51が直接パラメータブロック120にアクセスすることができるように構成してもよい。
【0064】
システムマネージャ51は初期のパラメータ設定通知および、変更時の設定変更通知を実行するのみで、帯域の制御そのものには直接かかわらない。つまり、帯域制御そのものは、低遅延での処理が必要となることから、帯域制御部110が自律で行ない、逐次システムマネージャ51からの指示は受けない。
【0065】
システムマネージャ51によるパラメータブロック120の設定は任意のタイミングで変更が可能であり、ホスト31やI/Oデバイス21およびI/O仮想化ブリッジ11の再起動や電源の再投入を必要とせずに動作することが出来る。
【0066】
帯域制御部110は、システムマネージャ51によって設定された帯域制御機能の有効化、設定された帯域制御に関連するパラメータ等をもとに、各ホスト31に対して割り当てられた帯域を保証するように帯域制御を実行する。
【0067】
システムマネージャ51がパラメータブロック120に設定する各種のパラメータについて説明する。
【0068】
システムマネージャ51は、
図4に示す5種類のパラメータのうち、帯域制御動作設定121、輻輳判定閾値122および最低保証帯域123を設定する。
【0069】
また、
図4に示す残りのパラメータの共有中のホストの数124および帯域制御ステータス125は、I/O仮想化ブリッジ11内部で生成されて設定・更新される情報である。システムマネージャ51は、これらの情報を確認することができる。
【0070】
Z:帯域制御動作設定121は、帯域制御部110の機能を動作させるか否かの情報が設定される。
【0071】
A:輻輳判定閾値122は、帯域監視ブロック140が輻輳状態を判定するための閾値である。帯域監視ブロック140は、全ホストの総通信量を監視し、該判定閾値を超えると輻輳状態にあると判断する。閾値の単位はMbit/秒やPacket/秒である。なお、輻輳状態にあると判断され、かつ、最低保証帯域を下回るホストがいると、帯域管理ブロック130により帯域制御が実行される。帯域制御の実行に関しての詳細は後述する。
【0072】
B:最低保証帯域123は、各ホストに対して割り当てられた最低を保証する通信帯域で、この保証帯域を下回らないように帯域制御が実行される。単位はMbit/秒やPacket/秒である。
【0073】
C:共有中のホストの数124は、I/Oデバイス21を共有しているホストの数が表示される。
【0074】
D:帯域制御ステータス125は、帯域制御実行状態か、帯域制御停止状態かを表示する。
【0075】
パラメータブロック120の設定パラメータを使用した帯域制御の実行動作について
図5を参照して説明する。
【0076】
図5は、本発明の帯域保証制御方法の第2の実施形態の動作を示すフロー図である。
【0077】
まず前段階として、システムマネージャ51は、ネットワーク41上にI/O仮想化ブリッジ11を見つけると、該I/O仮想化ブリッジ11の配下I/Oデバイス21へのアクセスが帯域制御対象であるかどうかを判断する。帯域制御対象であると判断するとシステムマネージャ51は、I/O仮想化ブリッジ11内のパラメータブロック120に上述した帯域制御動作設定121、輻輳判定閾値122および最低保証帯域123を設定する。
【0078】
帯域制御動作設定121に帯域制御動作ONが設定されていると(S201、Yes)、帯域監視ブロック140は、全ホストの単位時間あたりの総通信量を監視して輻輳判定閾値122を超えているか否かの判定を行う(S202)。
【0079】
監視している総通信量が輻輳判定閾値122を超えていると判定(S202、Yes)した帯域監視ブロック140は、輻輳発生を認識し、帯域制御の実行の要否を判定する。
【0080】
本実施形態では、帯域制御の実行条件として、I/Oデバイス21を共有しているホストの数が複数であること、および、割り当てられた最低保証帯域以下のホストが存在することを条件とする。これは、I/Oデバイス21を共有しているホスト間での帯域使用を公平化することを目的とし、割り当てられた最低保証帯域を満足している限りにおいては帯域制御を実行する必要がないという考えに基づくものである。
【0081】
帯域監視ブロック140は、パラメータブロック120の共有中のホストの数124に表示された情報を参照して、I/Oデバイス21を共有しているホストの数が複数であるか否かを判定する(S203)。
【0082】
共有ホスト数が複数であると判定(S203、Yes)すると、帯域監視ブロック140は、各ホストが使用しているI/Oパスの帯域使用状況が最低保証帯域123に登録された最低保証帯域を満足しているか否かを判定する(S204)。
【0083】
最低保証帯域123に登録された最低保証帯域を満足していないホストの存在を確認すると、帯域監視ブロック140は、帯域制御の実行が必要であると判定する(S204、Yes)。
【0084】
なお、上述した帯域監視ブロック140の各判定動作(S201、S202、S203、S204)のいずれかにおいて「No」と判定された場合には、帯域制御の実行は不要であると判定される。
【0085】
帯域制御の実行が必要であると判定した場合、帯域監視ブロック140は帯域制御実行(S205)を帯域管理ブロック130に指示する。
【0086】
また、帯域制御の実行が必要でないと判定した場合、帯域監視ブロック140は帯域制御解除(S206)を帯域管理ブロック130に指示する。帯域管理ブロック130は帯域制御解除の指示を受けた場合、もともと帯域制御を実行していない場合には何もしない。また、帯域制御が実行されている場合には、その解除の処理を行う。
【0087】
帯域制御が実行状態であるか解除状態であるかは、前述したパラメータブロック120の帯域制御ステータス125に表示される。
【0088】
上述したステップS201乃至ステップS206の処理は繰り返し実行される。従って、帯域制御実行状態と帯域制御解除状態は動的に変化する。
【0089】
なお、上述した
図4および
図5を参照した説明は、輻輳状態が発生してしかもホスト間での帯域使用が公平になっていないことを判定した場合に、帯域制御の実行を行うものである。しかし、帯域の使用状況が、システムマネージャ51が設定した状態から逸脱していると判定された場合に帯域制御を行うという構成にしてもよい。その場合は、最低保証帯域を目標保証帯域と読み替えて、輻輳状態の発生有無を判定することなく、モニタしている各ホストの帯域使用状況が所定の割合で目標保証帯域を逸脱していることを識別した場合に帯域制御を実行する制御を行なえばよい。
【0090】
次に、帯域管理ブロック130が実行する帯域制御のメカニズムについて
図6乃至
図10を参照して説明する。
【0091】
図6は、PCIeにおけるDMAリード要求時のデータフローを示す概念図である。
【0092】
本実施形態のシステムで使用する通信データは、PCIe(Peripheral Component Interconnect express)パケットである。
【0093】
PCIeは、TLP(Transaction Layer Packet)と呼ばれるデータフォーマット(構造体)を使ってホスト31とI/Oデバイス21との間において通信される。
【0094】
DMAリード転送の場合、読出しを要求できるサイズには上限であるMRRS(Max Read Request Size:最大リード要求長)が定められている。また、TLPは複数のTLPセグメントパケットに分割され、各TLPセグメントパケットが運ぶデータサイズ(ペイロード)は、最大ペイロード長であるMPS(Max Payload Size)以下に制限される。そして、TLPセグメントパケット間にはアイドルサイクルが挿入される。
【0095】
図7は、上述したTLPのサイズを規定するMRRS(最大リード要求長)とTLPセグメントパケットのMPS(最大ペイロード長)の関係を示す概念図である。
【0096】
つまり、上述したPCIeパケットは、MRRSやMPSに従って分割された複数のTLPセグメントパケットである。例えば、MRRS=4096ByteでMPS=128Byteに設定されていると、セグメントパケット数は32=4096/128で一つの要求データが形成される。
【0097】
MRRSとMPSは、ホスト起動時のコンフィギュレーションサイクルで決定され、ホスト側プログラムからI/Oデバイスのコンフィギュレーションレジスタに設定されるものである。
【0098】
本実施形態では、上記のようなPCIeの特性を活用した帯域制御を行う。具体的には、PCIeのホストからのDMAリード要求に対する応答データを構成するTLPセグメントパケットの間に挿入するアイドルサイクルに付加アイドルサイクルを追加して、転送遅延時間を増やすことで帯域制御を行う。
【0099】
図8は、TLPセグメントパケット間に挿入するアイドルサイクルの概要を示す概念図である。
【0100】
図8に示すように、DMAリード要求に対する応答データを構成するTLPセグメントパケット間に挿入するアイドルサイクルを、帯域制御時には付加アイドルサイクルを追加する。これにより転送遅延時間が増え、単位時間当たりの通過パケット数が減少して帯域の使用率が下がる。
【0101】
これは、帯域の使用率が大きいホストに対して実行する処理であり、その帯域使用率を下げることで他の最低保証帯域を満足していないホストが帯域を使用できるように救済するものである。
【0102】
次に、帯域制御のために付加するアイドルサイクルの決定について説明する。
【0103】
図9は、TLPセグメントパケットの転送にかかわるクロックサイクルを示す概念図である。
【0104】
DMAリード要求時の転送性能BW(Bandwidth)は、TLPセグメントパケットの個数、データサイクル、ヘッダサイクルおよびアイドルサイクルを使って次のように表すことができる。
【0105】
ここで、TLPセグメントパケット個数をNM(tlp)、データサイクルをCY(d)、ヘッダサイクルをCY(h)、アイドルサイクルをCY(i)で表す。また、TLPセグメントパケットを1個転送するのに必要なクロックサイクルを1セグメントサイクルと称し、CY(s)で表すものとする。
【0106】
1セグメントサイクルCY(s)は、
図9に示すように、ヘッダサイクルCY(h)、データサイクルCY(d)およびアイドルサイクルCY(i)の合計のクロックサイクルである。
【0107】
つまり、CY(s)=CY(h)+CY(d)+CY(i)となる。
【0108】
転送性能BWは、TLPセグメントパケットをNM(tlp)個を転送するのに必要なクロックサイクルなので、NM(tlp)に1セグメントサイクルCY(s)を掛ければ良い。
【0109】
つまり、BW=NM(tlp)×CY(s)となる。
【0110】
TLPセグメントパケット個数NM(tlp)は、1DMAリード要求時に生成されるTLPセグメントパケット数となる。
【0111】
つまり、NM(tlp)=MRRS/MPSとなる。
【0112】
従って、BW=(MRRS/MPS)×{CY(h)+CY(d)+CY(i)}と表せる。
【0113】
ここで、現在の転送性能をBW1、抑制すべき帯域制御目標となる転送性能をBW2とすると、それぞれのアイドルサイクルCY(i)1およびCY(i)2は次のように表せる。
【0114】
CY(i)1=BW1×(MRRS/MPS)−{CY(h)+CY(d)}
CY(i)2=BW2×(MRRS/MPS)−{CY(h)+CY(d)}
従って、転送性能をBW1からBW2に抑制するために、現在のアイドルサイクルに付加するアイドルサイクルCY(i)INVは、次のように決定される。
【0115】
CY(i)INV=CY(i)2−CY(i)1
つまり、付加アイドルサイクルCY(i)INVは、現在のパケット流量に対応するアイドルサイクルCY(i)2と、目標とするパケット流量に対応するアイドルサイクルCY(i)1との差分のクロックサイクルとして決定する。
【0116】
以上のようにして求めた付加アイドルサイクルCY(i)INVを用いた帯域制御の方法について説明する。
【0117】
図10は、帯域制御実行通知と帯域制御解除通知に基づく帯域制御の実行と解除の制御タイミングの例を示す概念図である。
【0118】
これは、
図5を参照して説明した帯域保証制御方法の動作において、帯域制御の実行の必要有無を判定した帯域監視ブロック140の指示で帯域管理ブロック130が実行する動作である。つまり、帯域監視ブロック140が帯域制御対象となるホストやその通信量に関する情報を帯域管理ブロック130に通知することで動作が開始される。
【0119】
例として、ホスト31-1とホスト31-2がI/Oデバイス21を共有しており、ホスト31-2による大量のデータ通信により、ホスト31-1のデータ通信が最低保証帯域123(B1)を下回っていたとする。
【0120】
上記の場合、帯域管理ブロック130は、ホスト31-2のデータ通信において、各TLPセグメントパケット間に上述したようにして決定した付加アイドルサイクルCY(i)INVを挿入する。
【0121】
このとき、帯域管理ブロック130は、ホスト31-2のデータ通信に挿入すべき付加アイドルサイクルCY(i)INVの長さを決めるための目標となる転送性能を帯域監視ブロック140から通知される。
【0122】
帯域管理ブロック130は、帯域監視ブロック140から帯域制御解除通知を受けるまで付加アイドルサイクルCY(i)INVの挿入を継続する。
【0123】
そして、帯域監視ブロック140から帯域制御解除通知を受けると、ホスト31-2のデータ通信に挿入していた付加アイドルサイクルCY(i)INVを除去して、帯域制御を解除する。
【0124】
なお、
図5を参照して説明したように、各判定ステップ(S201乃至S204)において「No」と判定された場合に帯域制御解除が通知される。これは、上述した帯域制御の効果により、判定ステップS202やS204で帯域制御の必要がないことが判明した場合が含まれる。
【0125】
また、このとき、帯域管理ブロック130は、ホスト31-2のデータ通信に対する付加アイドルサイクルCY(i)INVの挿入を、予め決められた転送性能のステップに基づいて算出して実行するように構成にしてもよい。つまり、この場合、帯域監視ブロック140は前述の目標とする転送性能を帯域管理ブロック130に指示しない。
【0126】
この場合、帯域監視ブロック140は、帯域管理ブロック130の帯域制御実行の結果に基づく各ホストの使用帯域を監視し、帯域制御実行の結果が満足できない場合には、再度の帯域制御実行の指示を出す。つまり、帯域制御実行にもかかわらず輻輳状態にあり、しかもホスト31-1のデータ通信が最低保証帯域123(B1)をまだ下回っていた場合には、再度の帯域制御実行の指示が出される。
【0127】
帯域管理ブロック130は、帯域制御実行の指示がなくなった段階でそのときの付加アイドルサイクルCY(i)INVの長さを維持する。そして、帯域監視ブロック140から帯域制御解除通知を受けると、ホスト31-2のデータ通信に挿入していた付加アイドルサイクルCY(i)INVを除去する。
【0128】
また、上述した付加アイドルサイクルCY(i)INVの挿入は、PCIe規格に準拠した基本クロックを基準とするためナノ秒単位で制御することができる。規格の一例として125MHz/250MHzクロックがあり、4ナノ/8ナノ秒単位でも制御することができる。
【0129】
PCIeパケットによるデータ通信のタイムアウト時間は数マイクロ秒未満と短く、一般的なネットワーク帯域制御ではタイムアウトによるデータ再送が多発して安定的なシステム運用ができなくなる。しかし、本実施形態では、ネットワーク上において、コンピューティングの内部信号で必要とされるナノ秒オーダーでの制御が行え、コンピューティング内部バスのような高速信号もリアルタイムかつ再送を発生させずに帯域制御することができる。
【0130】
また、各ホストにおいては付加アイドルサイクルの挿入による遅延加算を意識できないため、ホストに対して大幅な性能低下を意識させることなく帯域を制御することができる。
【0131】
なお、
図11は、I/Oデバイスがネットワーク上に複数配置された場合にI/Oデバイスを単位として共有I/Oグループを構成する利用形態を示す概念図である。
【0132】
図11のように、I/Oデバイス22をネットワーク上に多数配置するとネットワーク側でも輻輳が発生するケースが考えられる。そのため、そのような場合を考慮してネットワーク42での輻輳を抑制するために、共有I/Oグループを単位にした帯域制限を実行する構成にしてもよい。この場合、システム管理装置52は、共有I/Oグループを構成する各I/Oデバイス仮想化装置12に対して、ネットワーク42での輻輳抑制を考慮したパラメータ設定を行えばよい。
【0133】
このように、本実施形態ではI/Oデバイスを共有する通信において輻輳が発生してもホスト毎に適切な通信帯域を割り当てることが出来て、さらに輻輳そのものを抑制することができる。さらに、システム運用者が、ホスト間に割り当てる帯域を意図的に偏らせるように設定したような場合であっても、ホスト毎の帯域の使用状況を監視して、所定の通信量の範囲で通信させるように帯域制御することもできる。そのため、本実施形態はI/Oデバイスを共有するシステム全体のパフォーマンスを向上させることができる。
【0134】
以上に説明したように、本実施形態は、コンピューティングシステムの内部信号を外部ネットワークにおいて低遅延で帯域制御し、複数のホスト間でI/Oデバイスを論理的に公平に共有することができる。