(57)【特許請求の範囲】
【請求項１】
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを複数の通信経路を備えて構成された通信路を介して接続される通信システムであって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、前記バッファの使用状況を示すバッファ使用状況情報を取得する取得部と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する特定部とを備え、
前記取得部が、
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートにおいて前記通信経路毎に備えられた各記憶部に格納されたバッファ使用量を読み出し、
前記特定部が、
前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記バッファ使用量に基づき、
前記複数の通信経路のうちいずれか１つの通信経路に関する前記バッファ使用量の値が第１閾値より大きい場合に、当該第１閾値よりも大きいバッファ使用量の値を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定し、
前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定する
ことを特徴とする通信システム。
【請求項２】
前記特定部が、
２つ以上の前記通信経路において前記バッファ使用量の値が前記第１閾値より大きい場合に、
前記２つ以上の通信経路に対して、値が大きいバッファ使用量を格納する前記記憶部に対応する通信経路から優先して、受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上であるか否かを判定
し、
受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定することを特徴とする、請求項１記載の通信システム。
【請求項３】
前記取得部によって取得された前記各バッファ使用量に基づき、前記各バッファにおけるバッファフルの発生を予測するバッファフル予測部と、
前記バッファフル予測部が前記バッファフルの発生を予測すると、制御装置をバッファ使用量を抑制する動作モードに移行させる、バッファ使用抑制処理部と
を備えることを特徴とする、請求項１または２に記載の通信システム。
【請求項４】
前記バッファフル予測部により前記バッファフルの発生が予測された前記通信ポートに対して、所定時間経過後に取得した当該通信ポートにおける前記バッファ使用量を、所定の第２の閾値と比較し、前記バッファ使用量の値が前記第２の閾値よりも大きいことを検知した場合に、前記通信ポートに関連する異常の発生を判定する異常判定部を備えることを特徴とする、請求項３記載の通信システム。
【請求項５】
前記異常判定部が、
前記バッファフル予測部により、前記バッファフルの発生が予測されたポートに含まれる前記バッファ使用量の値を前記第２の閾値と複数回比較し、前記バッファ使用量の値が所定回数連続して前記第２の閾値以下であることを検知した場合に、前記バッファフルの発生のおそれが解消したと判断することを特徴とする、請求項４記載の通信システム。
【請求項６】
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを接続する複数の通信経路を備えて構成された通信路における異常発生箇所を特定する異常制御装置であって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、送受信される前記データを格納するバッファの使用状況を示すバッファ使用状況情報を取得する取得部と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する特定部とを備え、
前記取得部が、
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートにおいて前記通信経路毎に備えられた各記憶部に格納されたバッファ使用量を読み出し、
前記特定部が、
前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記バッファ使用量に基づき、
前記複数の通信経路のうちいずれか１つの通信経路に関する前記バッファ使用量の値が第１閾値より大きい場合に、当該第１閾値よりも大きいバッファ使用量の値を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定し、
前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定する
ことを特徴とする異常制御装置。
【請求項７】
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを接続する複数の通信経路を備えて構成された通信路における異常発生箇所を特定する異常制御方法であって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、前記バッファの使用状況を示すバッファ使用状況情報を取得する処理と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する処理とを備え、
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートにおいて前記通信経路毎に備えられた各記憶部に格納されたバッファ使用量を読み出し、
前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記バッファ使用量に基づき、
前記複数の通信経路のうちいずれか１つの通信経路に関する前記バッファ使用量の値が第１閾値より大きい場合に、当該第１閾値よりも大きいバッファ使用量の値を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定し、
前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定する
ことを特徴とする異常制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システム，異常制御装置および異常制御方法に関する。
【背景技術】
【０００２】
ＰＣＩｅ（Peripheral Component Interconnect Express）バスで通信可能に接続された複数のＣＭ（Controller Module）を備えるストレージ装置が存在する。
図１１は従来のストレージ装置に備えられるＣＭの構成を示す図である。
この図１１に示す例においては、ストレージ装置に備えられる２つのＣＭ３００−１，３００−２を示している。
【０００３】
ＣＭ３００−１，３００−２は冗長化されており、これらのＣＭ３００−１とＣＭ３００−２は同様の構成を有する。以下、ＣＭを示す符号としては、複数のＣＭのうち１つを特定する必要があるときには符号３００−１，３００−２を用いるが、任意のＣＭを指すときには符号３００を用いる。また、ＣＭ３００−１をＣＭ＃０といい、ＣＭ３００−２をＣＭ＃１という場合がある。
【０００４】
ＣＭ３００はストレージ装置における種々の制御を行なう制御装置であり、図示しないホスト装置からのストレージアクセス要求に従って、記憶装置へのアクセス制御等、各種制御を行なう。
ＣＭ３００は、ＣＡ（Channel Adapter）３１３，ＣＰＵ（Central Processing Unit）３１１およびＰＣＩｅスイッチ３１２を備える。ＣＡ３１３は図示しないホスト装置等と通信可能に接続するインタフェースコントローラである。
【０００５】
ＣＰＵ３１１は、種々の制御や演算を行なう処理装置である。このＣＰＵ３１１はＰＣＩｅバスを介してＣＡ３１３およびＰＣＩｅスイッチ３１２と接続されている。
例えば、ＣＭ３００−１のＣＰＵ３１１はポート４０１Ｃを備え、このポート４０１Ｃを介してＰＣＩｅスイッチ３１２と接続されている。また、ＣＭ３００−２のＣＰＵ３１１はポート４０１Ｆを備え、このポート４０１Ｆを介してＰＣＩｅスイッチ３１２と接続されている。
【０００６】
ＰＣＩｅスイッチ３１２は、ＰＣＩｅプロトコルに従ってデータ伝送を中継する中継装置である。
ＰＣＩｅスイッチ３１２は、複数のポートを備え、これらのポートにデータの送信元や送信先となる機器が接続される。図１１に示す例においては、ＣＭ３００−１のＰＣＩｅスイッチ３１２にポート４０１Ｂ，４０１Ａの２つのポートが備えられており、ポート４０１Ａには、他のＣＭ３００−２のＰＣＩｅスイッチ３１２が接続されている。また、ポート４０１ＢにはＣＰＵ３１１が接続されている。
【０００７】
同様に、ＣＭ３００−２のＰＣＩｅスイッチ３１２にポート４０１Ｄ，４０１Ｅの２つのポートが備えられており、ポート４０１Ｄには、他のＣＭ３００−１のＰＣＩｅスイッチ３１２が接続されている。また、ポート４０１ＥにはＣＰＵ３１１が接続されている。
以下、ポートを示す符号としては、複数のポートのうち１つを特定する必要があるときには符号４０１Ａ〜４０１Ｆを用いるが、任意のポートを指すときには符号４０１を用いる。
【０００８】
各ポート４０１は、それぞれ送信回路Ｔｘと受信回路Ｒｘとを備える。なお、ポート４０１Ａに備えられる送信回路Ｔｘを符号Ｔｘ−Ａで表し、ポート４０１Ａに備えられる受信回路Ｒｘを符号Ｒｘ−Ａで表す。同様に、ポート４０１Ｂ〜４０１Ｆに備えられる各送信回路Ｔｘをそれぞれ符号Ｔｘ−Ｂ〜Ｔｘ−Ｆで表す。また、ポート４０１Ｂ〜４０１Ｆに備えられる各受信回路Ｒｘをそれぞれ符号Ｒｘ−Ｂ〜Ｒｘ−Ｆで表す。
【０００９】
また、送信回路Ｔｘおよび受信回路Ｒｘは、それぞれバッファを備え、それぞれこのバッファを用いてデータ通信を行なう。すなわち、バッファは、送信時のデータを一時格納するために用いられる。
さて、ＰＣＩｅ経路上において、１箇所以上のバッファが詰まってしまうと、そこにはそれ以上のデータを格納できなくなるため、通信処理の停滞を引き起こす。
【００１０】
例えば、図１１中に符号Ｐ０１で示すように、ＰＣＩｅスイッチ３１２のポート４０１Ａの送信回路Ｔｘ−Ａにおいて、送信先であるポート４０１Ｄの受信回路Ｒｘ−Ｄにデータ送信できない異常が発生した場合を考える。
このような場合には、送信回路Ｔｘ−Ａのバッファがいずれ詰まることとなり、その結果、ＣＭ＃０のＰＣＩｅスイッチ３１２において、ポート４０１Ｂの受信回路Ｒｘ−Ｂからポート４０１Ａの送信回路Ｔｘ−Ａにデータを送信できなくなる。そして、ＰＣＩｅ通信経路においてバッファ詰まりが伝播し、最終的に、ＣＰＵ３１１の送信回路Ｔｘ−Ｃのバッファが詰まり、ＣＭ＃０がハング状態となる。
【００１１】
このように、例えばＣＭ＃０において、送信先であるＣＭ＃１にデータ送信できない異常が生じた場合には、異常を解消するための保守作業の対象とすべきＣＭ、すなわち被疑ＣＭをＣＭ＃０とすることの特定は容易である。すなわち、異常の発生箇所がＣＭ＃０という閉じた系内に収まっているので、被疑ＣＭがＣＭ＃０であることを容易に特定することができる。
【００１２】
また、被疑ＣＭを特定した場合には、システムの復旧を図るためにこの被疑ＣＭの再起動（ＣＭリブート）もしくは切り離しが行なわれる。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００８−２８８７４０号公報
【特許文献２】特開２０００−１８３８７３号公報
【特許文献３】特開平９−１９１３２１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、異常の発生状況次第では被疑ＣＭの特定が困難な場合がある。
例えば、図１１中に符号Ｐ０２で示すように、ＣＭ＃１のＰＣＩｅスイッチ３１２のポート４０１Ｄの送信回路Ｔｘ−Ｄが、送信先であるポート４０１Ａの受信回路Ｒｘ−Ａに対してデータを送信したが、この受信回路Ｒｘ−Ａがデータを処理できない異常が発生した場合である。
【００１５】
この場合、ポート４０１Ｄの送信回路Ｔｘ−Ｄでは、送信したデータの処理完了を確認できないため、最終的にＣＭ間通信の停滞（タイムアウト）を検出し、ＣＭ３００−１，３００−２間のＰＣＩｅ経路が異常であると判断される。
しかし、この場合には、ポート４０１Ａの受信回路Ｒｘ−Ａとポート４０１Ｄの送信回路Ｔｘ−Ｄとの両方が故障個所として考えられ、被疑ＣＭがＣＭ＃０であるかＣＭ＃１であるか特定できない。
【００１６】
前述の如く、従来のストレージ装置においては、ＣＭに異常が検知された場合には、システムの復旧を図るためにＣＭリブートや切り離しが行なわれるが、被疑ＣＭを間違えた場合には、システムダウンが引き起こされる場合がある。
１つの側面では、本発明は、異常発生箇所を容易に特定できるようにすることを目的とする。
【課題を解決するための手段】
【００１７】
このため、この通信システムは、送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを複数の通信経路を備えて構成された通信路を介して接続される通信システムであって、前記第１の装置および前記第２の装置のそれぞれから、前記バッファの使用状況を示すバッファ使用状況情報を取得する取得部と、取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する特定部とを備え、前記取得部が、前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートにおいて前記通信経路毎に備えられた各記憶部に格納されたバッファ使用量を読み出し、前記特定部が、前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記バッファ使用量に基づき、前記複数の通信経路のうちいずれか１つの通信経路に関する前記バッファ使用量の値が第１閾値より大きい場合に、当該第１閾値よりも大きいバッファ使用量の値を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定し、前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記バッファ使用量の値が、送信側の前記記憶部に格納された前記バッファ使用量の値以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定する。
【発明の効果】
【００１８】
一実施形態によれば、異常発生箇所を容易に特定することができる。
【図面の簡単な説明】
【００１９】
【図１】実施形態の一例としてのストレージ装置に備えらえたＣＭの機能構成を模式的に示す図である。
【図２】実施形態の一例としてのストレージ装置の特定部による異常発生箇所の特定方法を説明するための図である。
【図３】実施形態の一例としてのストレージ装置の異常制御部の処理の概要を説明するフローチャートである。
【図４】実施形態の一例としてのストレージ装置における異常制御部によるクレジット値の監視手法を説明するためのフローチャートである。
【図５】実施形態の一例としてのストレージ装置における抑制モードへの移行処理を説明するためのフローチャートである。
【図６】実施形態の一例としてのストレージ装置における異常判定部によるクレジット値の継時的な監視処理を説明するためのフローチャートである。
【図７】実施形態の一例としてのストレージ装置における抑制モードの解除処理を説明するためのフローチャートである。
【図８】実施形態の一例としてのストレージ装置における特定部による異常経路の特定方法を説明するためのフローチャートである。
【図９】実施形態の一例としてのストレージ装置における特定部による故障発生箇所の特定処理を説明するためのフローチャートである。
【図１０】実施形態の一例としてのストレージ装置における特定部による段階的な異常経路特定手法を説明するためのフローチャートである。
【図１１】従来のストレージ装置に備えられるＣＭの構成を示す図である。
【発明を実施するための形態】
【００２０】
以下、図面を参照して本通信システム，異常制御装置および異常制御方法に係る実施の形態を説明する。ただし、以下に示す実施形態はあくまでも例示に過ぎず、実施形態で明示しない種々の変形例や技術の適用を排除する意図はない。すなわち、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。又、各図は、図中に示す構成要素のみを備えるという趣旨ではなく、他の機能等を含むことができる。
【００２１】
図１は、実施形態の一例としてのストレージ装置に備えらえたＣＭの機能構成を模式的に示す図である。
本実施形態のストレージ装置１は、図１に示すように、複数（図１に示す例では２つ）のＣＭ（制御装置）１０−１，１０−２、ＰＣＩｅバス（通信路）３０、および図示しない記憶装置を備える。
【００２２】
記憶装置は、データを読み書き可能に格納する記憶装置であり、例えば、ＨＤＤ（Hard Disk Drive）である。本ストレージ装置１においては、複数の記憶装置を用いて、ＲＡＩＤ（Redundant Arrays of Independent Disks）を構成してもよい。
以下、ＣＭ１０−１をＣＭ＃０と、ＣＭ１０−２をＣＭ＃１という場合がある。
また、以下、特定のＣＭを指す場合は、「ＣＭ１０−１」、「ＣＭ＃０」、「ＣＭ１０−２」または「ＣＭ＃１」と表記するが、任意のＣＭを指す場合は、「ＣＭ１０」と表記する。
【００２３】
ＣＭ＃０とＣＭ＃１とは、ＰＣＩｅバス（バス）３０を介して通信可能に接続されている。これらのＣＭ＃０、ＣＭ＃１とＰＣＩｅバス３０とにより、通信システムを構成している。
ＣＭ１０は種々の制御を行なう制御装置であり、図示しないホスト装置からのストレージアクセス要求（アクセス制御信号）に従って、各種制御を行ない、例えば、記憶装置に対するデータのリード／ライトの制御を行なう。
【００２４】
ＣＭ＃０は、ＣＰＵ（コンピュータ）１１、スイッチ１２およびＣＡ１３を備える。
これらのＣＰＵ１１、スイッチ１２およびＣＡ１３は、例えば、ＰＣＩｅの規格に従ったバス（ＰＣＩｅバス）を介して接続されている。
ＣＡ１３は、図示しないホスト装置とＣＭ＃０とを通信可能に接続するインタフェースコントローラである。ＣＡ１３は、ポート１００Ｈを備え、このポート１００Ｈを介してＣＰＵ１１と通信可能に接続されている。
【００２５】
ＣＡ１３は、ホスト装置やＣＰＵ１１から送信されたデータを受信して、このデータをＣＰＵ１１に受け渡し、又、ＣＰＵ１１から受け取ったデータをホスト装置に送信する。すなわち、ＣＡ１３は、ホスト装置等の外部装置との間でのデータの入出力（Ｉ／Ｏ）を制御する機能をそなえている。
ＣＰＵ１１は、種々の制御や演算を行なう処理装置であり、図示しないメモリに格納されたＯＳやプログラムを実行することにより、種々の機能を実現する。ＣＰＵ１１は、当該ＣＰＵ１１が備えられるＣＭ１０における各種制御を行なう上位制御装置として機能する。
【００２６】
また、ＣＰＵ１１には複数（図１に示す例では２つ）のポート１００Ｃ，１００Ｇが備えられており、ポート１００Ｃを介してスイッチ１２と、また、ポート１００Ｇを介してＣＡ１３と、それぞれ通信可能に接続される。
また、ＣＰＵ１１は、後述する異常制御部（異常制御装置）１４から割り込み信号線１５を介して割り込み信号（抑制モード通知）が入力されると、ＣＭ１０内におけるバッファ使用量を低減する抑制モードに移行する制御を行なう。
【００２７】
この抑制モードにおいては、例えば、ＣＰＵ１１の動作周波数を低下させたり、伝送路の伝送速度を低減させる。伝送路の伝送速度の低減は、例えば、Ｇｅｎ３で行なっていたＰＣＩｅの通信をＧｅｎ１やＧｅｎ２に変更する等、下位のレベルの通信に変更することで実現する。また、伝送路において、伝送に用いるレーン（Lane）数を削減することにより、伝送路の伝送速度を低減させてもよい。例えば、４レーンを用いて伝送を行なっている場合に、使用するレーンを２レーンに変更することで、伝送速度を低減させる。また、これらの手法に限定されるものではなく、既知の種々の手法を用いて伝送路の伝送速度を低減させてもよい。
【００２８】
また、ＣＰＵ１１は、異常制御部１４から割り込み信号線１５を介してバッファ使用量回復を示す割り込み通知が入力されると、抑制モードを解除して通常モードでの動作に移行する。
スイッチ１２は、ＰＣＩｅプロトコルに従ってデータ伝送を中継する中継装置であり、いわゆるＰＣＩｅスイッチである。以下、スイッチ１２をＰＣＩｅスイッチ（ＰＣＩｅＳＷ）という場合がある。
【００２９】
スイッチ１２は、複数のポート（通信ポート）１００を備え、これらのポート１００にデータの送信元や送信先となる機器が接続される。図１に示す例においては、スイッチ１２にポート１００Ａ，１００Ｂの２つのポートが備えられており、ポート１００Ａには、他のＣＭ１０（ＣＭ＃１）のスイッチ１２が接続されている。また、ポート１００ＢにはＣＰＵ１１が接続されている。
【００３０】
ＣＭ＃１も、ＣＭ＃０と同様に、ＣＰＵ１１、スイッチ１２およびＣＡ１３を備え、
これらのＣＰＵ１１、スイッチ１２およびＣＡ１３が、例えば、バス線を介して接続され、ＰＣＩｅの規格に従って通信可能に接続されている。
なお、図中、既述の符号と同一の符号は同様の部分を示しているので、その詳細な説明は省略する。
【００３１】
ＣＭ＃１において、ＣＡ１３はポート１００Ｊを備え、このポート１００Ｊを介してＣＰＵ１１と通信可能に接続されている。
また、ＣＰＵ１１はポート１００Ｆ，１００Ｉを備え、ポート１００Ｆを介してスイッチ１２と、また、ポート１００Ｉを介してＣＡ１３と、それぞれ通信可能に接続される。
スイッチ１２は、ポート１００Ｄ，１００Ｅを備え、ポート１００Ｄには、他のＣＭ１０（ＣＭ＃０）のスイッチ１２が、また、ポート１００ＥにはＣＰＵ１１が、それぞれ接続されている。
【００３２】
以下、ポートを示す符号としては、複数のポートのうち１つを特定する必要があるときには符号１００Ａ〜１００Ｊを用いるが、任意のポートを指すときには符号１００を用いる。
各ポート１００は、それぞれ送信回路Ｔｘと受信回路Ｒｘとを備える。なお、ポート１００Ａに備えられる送信回路Ｔｘを符号Ｔｘ−Ａで表し、ポート１００Ａに備えられる受信回路Ｒｘを符号Ｒｘ−Ａで表す。同様に、ポート１００Ｂ〜１００Ｊに備えられる各送信回路Ｔｘをそれぞれ符号Ｔｘ−Ｂ〜Ｔｘ−Ｊで表し、ポート１００Ｂ〜１００Ｊに備えられる各受信回路Ｒｘをそれぞれ符号Ｒｘ−Ｂ〜Ｒｘ−Ｊで表す。
【００３３】
また、送信回路Ｔｘおよび受信回路Ｒｘは、それぞれ図示しないバッファを備え、ポート１００を介して送信もしくは受信（以下、単に送受信という）されるデータがこれらのバッファに格納される。各バッファは、それぞれ複数のデータ格納領域を備え、これらの複数のデータ格納領域に、送受信されるデータが順次格納され、例えば、ＦＩＦＯで処理される。
【００３４】
また、各ポート１００間においては、クレジット値に基づいたフロー制御が行なわれる。かかるフロー制御においては、クレジット値（クレジット情報）を用いてパケットの送受信を制御する。クレジット値は、バッファの使用状況を表すバッファ使用状況情報であり、例えばバッファの使用量である。
クレジット値に基づくフロー制御においては、受信側のパケットの処理状態に応じてパケットの送信を制御する。この受信側におけるパケットの処理状況を示す情報としてクレジット値が用いられ、送信側では、このクレジット値に応じてデータを送信する。すなわち、クレジット値は、受信バッファにおけるデータ量を管理する情報（フロー制御用情報）として機能する。
【００３５】
各送信回路Ｔｘおよび受信回路Ｒｘは、それぞれレジスタ（記憶部）Ｉｎｇ，Ｅｇを備え、これらのレジスタＩｎｇ，Ｅｇにそれぞれクレジット値（クレジット情報）が格納される。上述の如く、これらのレジスタＩｎｇ,Ｅｇに格納されるクレジット値は、各バッファの使用状況を示すバッファ使用状況情報として機能する。
ここで、レジスタＩｎｇにはIngress クレジット値が格納される。Ingress クレジット値は、各ポート１００内の送信回路Ｔｘおよび受信回路Ｒｘへ受信されるデータを一時格納するバッファの使用量を管理するバッファ管理情報（クレジット情報）である。
【００３６】
また、レジスタＥｇには、Egress クレジット値が格納される。Egress クレジット値は、各ポート１００内の送信回路Ｔｘおよび受信回路Ｒｘから送信するためにデータを一時格納するバッファ（図示省略）の使用量を管理するバッファ管理情報（クレジット情報）である。以下、これらのIngress クレジット値およびEgress クレジット値を単にクレジット値という。
【００３７】
また、ＣＭ＃０およびＣＭ＃１はそれぞれ異常制御部１４を備える。各ＣＭ１０にそれぞれ備えられた異常制御部１４は同様の構成を備える。
異常制御部１４は、ＣＭ＃０，＃１内の各ポート１００内部に備えられた各レジスタＩｎｇ，Ｅｇのクレジット値に基づき、ポート１００内におけるバッファフル（バッファ枯渇）の発生の予兆を検知し、バッファフルの発生を阻止する。以下、バッファフルの発生の予兆を検知することを、バッファフルの発生を予測するという。
【００３８】
また、異常制御部１４は、ポート１００内においてバッファフルの発生を予測した場合において、当該バッファフルの発生がハードウェア故障によるものであると判断した場合に、その故障発生箇所を特定し、保守作業対象とすべきＣＭ１０、すなわち被疑ＣＭを特定する。
従って、異常制御部１４は、ＰＣＩｅスイッチ１２間を接続するＰＣＩｅバス３０における異常発生箇所を特定する異常制御装置として機能する。
【００３９】
異常制御部１４は、図１に示すように、バッファ管理情報取得部１４１，バッファフル予測部１４２，異常判定部１４３，特定部１４４，抑制処理部１４５および閾値記憶部１４６としての機能を備える。異常制御部１４は、例えば、これらの各機能を実装した、ＬＳＩ（Large Scale Integration）によって実現することができる。
また、異常制御部１４は、他ＣＭ１０の異常制御部１４と通信線４０を介して通信可能に接続されている。以下、ＣＭ＃０の異常制御部１４とＣＭ＃１の異常制御部１４との間で行なわれる通信をＬＳＩ間通信という場合がある。
【００４０】
ＣＭ＃０に備えられた異常制御部１４とＣＭ＃１に備えられた異常制御部１４とはＬＳＩ間通信により、クレジット値の収集指示やそれぞれが収集したクレジット値等の情報を授受する。
すなわち、ＣＭ＃０に備えられた異常制御部１４は、当該ＣＭ＃０における各クレジット値の収集を行ない、ＣＭ＃１に備えられた異常制御部１４は、当該ＣＭ＃１における各クレジット値の収集を行なう。
【００４１】
また、ＣＭ＃０に備えられた異常制御部１４は、ＣＭ＃１の異常制御部１４に対して、ＬＳＩ間通信を介してクレジット値の収集指示を送信する。これに応じて、ＣＭ＃１の異常制御部１４は、ＣＭ＃１における各クレジット値の収集を行ない、ＣＭ＃０の異常制御部１４に対して、ＬＳＩ間通信を介して、収集したクレジット値を送信する。
同様に、ＣＭ＃１に備えられた異常制御部１４は、ＣＭ＃０の異常制御部１４に対して、ＬＳＩ間通信を介してクレジット値の収集指示を送信する。これに応じて、ＣＭ＃０の異常制御部１４は、ＣＭ＃０における各クレジット値の収集を行ない、ＣＭ＃１の異常制御部１４に対して、ＬＳＩ間通信を介して、収集したクレジット値を送信する。
【００４２】
なお、各異常制御部１４によるクレジット値の収集指示や収集したクレジット値等の情報の授受についての詳細については後述する。  閾値記憶部１４６は、異常制御部１４における各種制御において用いられる閾値を記憶する記憶部であり、アラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃを記憶する。
ここで、アラーム閾値Ｔａは、後述するバッファフル予測部１４２がバッファフル発生の予兆を判断する際に用いる閾値である。このアラーム閾値Ｔａは、ユーザが任意に設定してもよく、また、本ストレージシステム１におけるバッファ使用量実績に基づき、システムが決定してもよい。
【００４３】
例えば、アラーム閾値Ｔａとして、各ポート１００に備えられたバッファの許容最大量（Ｂｍａｘ）に対する所定割合（例えば、６０％）の値を用いることができる。例えば、所定割合が６０％の場合には、アラーム閾値Ｔａ＝Ｂｍａｘ×０．６として求められる。
また、アラーム閾値Ｔａとして、過去のバッファ使用量平均値（Ｂａｖｅ）に所定量のマージンを付加（例えば、＋１０％）した値を用いてもよい。例えば、付加するマージンが＋１０％である場合には、アラーム閾値Ｔａ＝Ｂａｖｅ×１．１として求められる。
【００４４】
アラーム解除閾値Ｔａｃは、後述する異常判定部１４３が、異常発生の判定を行なう際に用いる閾値である。このアラーム解除閾値Ｔａｃは、ユーザが任意に設定してもよく、また、システムが決定してもよい。
例えば、アラーム解除閾値Ｔａｃとして、各ポート１００に備えられたバッファの許容最大量（Ｂｍａｘ）に対する所定割合の値を用いることができる。例えば、この所定割合として５０％を用いる場合には、アラーム解除閾値Ｔａｃ＝Ｂｍａｘ×０．５として求められる。
【００４５】
また、所定割合として、当該ポート１００に対して設定されたアラーム閾値Ｔａから所定量（例えば、１０％）を減算した値を用いてもよい。例えば、この所定量として１０％を用いる場合には、アラーム解除閾値Ｔａｃ＝Ｔａ×０．９として求められる。
なお、アラーム解除閾値Ｔａｃから減算する所定量を、本ストレージシステム１におけるバッファ使用量実績に基づいて決定してもよい。例えば、システムがバッファ使用量実績から推測した割合が５％である場合には、アラーム解除閾値Ｔａｃ＝アラーム閾値Ｔａ×０．９５として求められる。
【００４６】
これらのアラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃとして用いる値は、上記記載に限定されるものではなく、種々変形して実施することができる。
アラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃは、例えば、図示しない外部メモリに予め設定値として格納しておき、異常制御部１４の起動時に、このメモリから読み出し、閾値記憶部１４６に格納する。また、これらの閾値は、異常制御部１４の起動時にＣＰＵ１１等の他のデバイスから異常制御部１４の閾値記憶部１４６にライトしてもよい。
【００４７】
閾値記憶部１４６において、アラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃは、例えば、テーブル状に管理してもよい。
バッファ管理情報取得部１４１は、ＣＭ＃０，ＣＭ＃１上に備えられる各デバイスの全てのポート１００のレジスタＩｎｇ，Ｅｇのクレジット値を読み出す。
具体的には、ＣＭ＃０に備えられた異常制御部１４において、バッファ管理情報取得部１４１は、ＣＭ＃０上に備えられる各デバイスの全てのポート１００のレジスタＩｎｇ，Ｅｇのクレジット値を読み出す。また、ＣＭ＃１に備えられた異常制御部１４において、バッファ管理情報取得部１４１は、ＣＭ＃１上に備えられる各デバイスの全てのポート１００のレジスタＩｎｇ，Ｅｇのクレジット値を読み出す。
【００４８】
すなわち、クレジット情報取得部１４１は、各ＣＭ＃０，＃１上に備えられる各デバイスのポート１００それぞれに備えられる各バッファのバッファ使用状況情報（クレジット情報）を取得する取得部として機能する。
また、各異常制御部１４において取得されたクレジット値は、ＬＳＩ間通信を介して他の異常制御部１４にも送信される。
【００４９】
すなわち、ＣＭ＃０に備えられた異常制御部１４において、バッファ管理情報取得部１４１よって取得されたクレジット値は、ＬＳＩ間通信を介して、ＣＭ＃１の異常制御部１４に送信される。また、ＣＭ＃１に備えられた異常制御部１４において、バッファ管理情報取得部１４１よって取得されたクレジット値は、ＬＳＩ間通信を介して、ＣＭ＃０の異常制御部１４に送信される。
【００５０】
バッファフル予測部（バッファフル予兆検知部）１４２は、バッファ管理情報取得部１４１によって取得された各クレジット値に基づき、各バッファにおけるバッファフル（クレジット枯渇）の発生を予測する。
バッファフル予測部１４２は、バッファ管理情報取得部１４１が取得した各レジスタＩｎｇ，Ｅｇのクレジット値を、予め設定されたアラーム閾値Ｔａ（第１の閾値）と比較し、いずれかのクレジット値がアラーム閾値Ｔａを超えた場合に、バッファフル発生の予兆を検知する。すなわち、バッファフルの発生を予測する。以下、クレジット値がアラーム閾値Ｔａを超えることをアラーム閾値オーバーという場合がある。
【００５１】
抑制処理部（バッファ使用抑制処理部）１４５は、バッファフル予測部１４２がバッファフル発生を予測すると、各ＣＭ１０上のＣＰＵ１１をバッファ使用量を抑制する動作モード（抑制モード）に移行させる。
具体的には、抑制処理部１４５は、割り込み信号線１５を介して同一ＣＭ１０内のＣＰＵ１１に対してアラーム閾値オーバーを示す割り込み信号（抑制モード通知）を入力する。抑制処理部１４５は、この抑制モード通知ととともに、閾値オーバーが検知されたポート１００を特定する情報をＣＰＵ１１に通知する。
【００５２】
また、抑制処理部１４５は、他ＣＭ１０の異常制御部１４に対して、ＬＳＩ間通信を介してアラーム閾値オーバーを検知した旨の通知を行なう。この通知を受けた他ＣＭ１０の異常制御部１４の抑制処理部１４５は、同一ＣＭ１０内のＣＰＵ１１に対して、割り込み信号線１５を介して割り込み信号（抑制モード通知）を送信する。なお、抑制処理部１４５は、他ＣＭ１０の異常制御部１４に対するＬＳＩ間通信を介したアラーム閾値オーバーを検知した旨の通知とともに、閾値オーバーが検知されたポート１００を特定する情報も通知する。
【００５３】
さらに、抑制処理部１４５は、ＣＰＵ１１に対して抑制モード通知を行ない、ＣＭ１０が抑制モードで動作している場合に、フラグ等の抑制モードで動作中であることを示す情報を、図示しないメモリ等に設定する。このように、抑制処理部１４５は、ＣＭ１０が抑制モードで動作中であるか否かを管理する機能も有する。
異常判定部１４３は、上述したバッファフル予測部１４２により、バッファフルの発生が予測された場合に、当該バッファフルが、過負荷により生じたものであるのか、ハードウェア故障等の何等かの発生した異常によるものであるかを判定する。
【００５４】
異常判定部１４３は、バッファフル予測部１４２によりアラーム閾値オーバーが検知された、すなわち、バッファフル発生が予測されたポート１００について、当該ポート１００に含まれる各レジスタＩｎｇ，Ｅｇのクレジット値を監視する。具体的には、異常判定部１４３は、各レジスタＩｎｇ，Ｅｇのクレジット値を一定間隔で、複数回（例えば、３回）読み出す。
【００５５】
なお、これらのクレジット値を読み出す間隔や、回数は適宜変更して実施することができ、また、ユーザが任意に設定することができる。
異常判定部１４３は、これらの一定間隔で取得したクレジット値を、それぞれアラーム解除閾値Ｔａｃと比較する。
そして、異常判定部１４３は、これらの一定間隔をおいて取得した複数のクレジット値が全てアラーム解除閾値Ｔａｃ以下である場合に、バッファの使用量が低下したと判定し、当該ポート１００においてバッファフル発生の懸念が解消したと判断する。
【００５６】
抑制処理部１４５からの通知に応じて、同一ＣＭ１０上のＣＰＵ１１がバッファ使用量を抑制する抑制モードで動作した後に、バッファフル発生の懸念が解消した場合には、バッファフルが本ＣＭ１０における過負荷を原因とする処理停滞によるものであったと判断することができる。
また、一定間隔をおいて取得した複数のクレジット値において、１つでもアラーム解除閾値Ｔａｃよりも大きい場合（以下、判定ＮＧという場合がある）には、再度、一定間隔でのクレジット値の取得を行ない、アラーム解除閾値Ｔａｃとの比較を行なう。抑制モード下での更なる時間の経過により、バッファ使用量が低下することが期待されるからである。
【００５７】
すなわち、異常判定部１４３は、クレジット値の継時的な監視結果に基づいて、バッファフル発生の懸念が解消したことを判断する。
また、上述した各レジスタＩｎｇ，Ｅｇのクレジット値とアラーム解除閾値Ｔａｃとの比較の結果が、所定回数（例えば、５回）以上、連続して判定ＮＧであった場合には、タイムアウトであると判断する。すなわち、タイムアウトと判断された状態は、ＣＰＵ１１がバッファ使用量を抑制する抑制モードでの動作を所定時間以上継続して実施しても、バッファの使用量が低下していない状態であると言える。
【００５８】
なお、タイムアウトの判定を行なうための判定ＮＧの数は適宜変更して実施することができ、また、ユーザが任意に設定することができる。
異常判定部１４３は、クレジット値の継時的な監視結果に基づいて、バッファフル発生の懸念が解消していないと判断するのである。
ＣＰＵ１１がバッファ使用量を抑制する抑制モードで動作して所定時間経過しても、バッファフル発生の懸念が解消しない場合には、本ＣＭ１０のいずれかの部位においてハードウェア故障が発生しており、これによりデータ処理が停滞し、バッファの使用量が増大していると判断することができる。
【００５９】
上述の如く、異常判定部１４３は、バッファフルの発生が予測されたポート１００について、クレジット値を一定時間経過毎に採取することで、その監視を継時的に行ない、本ストレージ装置１においてハードウェア故障が発生していることを判断する。
すなわち、異常判定部１４３は、バッファフル予測部１４２によりバッファフルの発生が予測されたポート１００に対して、所定時間経過後に取得したこのポート１００におけるクレジット値をアラーム解除閾値Ｔａｃと比較し、クレジット値がアラーム解除閾値Ｔａｃよりも大きいことを検知した場合に、このポート１００に関連する異常の発生を判定する。
【００６０】
以下、異常判定部１４３によりバッファフルの発生が予測されたポート１００を異常予測ポート１００という場合がある。また、異常予測ポート１００と、この異常予測ポート１００と通信経路を介して接続されたポート１００とを異常予測ポート対という場合がある。
特定部１４４は、異常判定部１４３によりハードウェア故障が発生していると判断された場合に、その異常発生箇所を特定する。
【００６１】
特定部１４４は、各ポート１００に備えられた各レジスタＩｎｇ,Ｅｇの各クレジット値に基づいて、異常発生箇所を特定する。
図２は実施形態の一例としてのストレージ装置１の特定部１４４による異常発生箇所の特定方法を説明するための図であり、ＰＣＩｅバス３０を介して接続される２つのポート１００の構成を模式的に示す。すなわち、この図２においては、異常予測ポート対の構成を示している。
【００６２】
この図２においては、ＰＣＩｅバス３０を介して接続されたポート１００Ａとポート１００Ｄとを例示しており、これらのポート１００Ａ，１００Ｄが異常予測ポート対を構成している。ポート１００ＡはＣＭ＃０のスイッチ（第１の装置）１２に備えられ、ポート１００Ｄは、ＣＭ＃１のスイッチ（第２の装置）１２に備えられる。
また、この図２に示す例においては、便宜上、送信回路Ｔｘ−Ａ、受信回路Ｒｘ−Ｄ、送信回路Ｔｘ−Ｄおよび受信回路Ｒｘ−Ａを、それぞれ回路Ｉ、回路ＩＩ、回路ＩＩＩおよび回路ＩＶと表している。
【００６３】
また、ＣＭ＃０において、送信回路Ｔｘ−Ａに備えられたレジスタＩｎｇ，Ｅｇに格納されている各値をそれぞれ符号ａ，ｂで表し、受信回路Ｒｘ−Ａに備えられたレジスタＩｎｇ，Ｅｇに格納されている各値をそれぞれ符号ｇ，ｈで表している。
同様に、ＣＭ＃１において、受信回路Ｒｘ−Ｄに備えられたレジスタＩｎｇ，Ｅｇに格納されている各値をそれぞれ符号ｃ，ｄで表し、送信回路Ｔｘ−Ｄに備えられたレジスタＩｎｇ，Ｅｇに格納されている各値をそれぞれ符号ｅ，ｆで表している。
【００６４】
また、ＰＣＩｅバス３０は双方向通信を可能にするものであり、通信経路３０ａ，３０ｂを備える。図２に示す例においては、ポート１００Ａの送信回路Ｔｘ−Ａとポート１００Ｄの受信回路Ｒｘ−Ｄとが通信経路３０ａによって接続され、ポート１００Ｄの送信回路Ｔｘ−Ｄとポート１００Ａの受信回路Ｒｘ−Ａとが通信経路３０ｂによって接続されている。通信経路３０ａを第１方向経路３０ａといい、通信経路３０ｂを第２方向経路３０ｂという場合がある。
【００６５】
特定部１４４は、バッファ管理情報取得部１４１によって取得された、異常予測ポート対に含まれる各レジスタＩｎｇ,Ｅｇのクレジット値に基づき、異常発生箇所の特定を行なう。また、特定部１４４は、異常発生箇所の特定として、以下に示すように、（ａ）異常経路の特定と、（ｂ）故障発生箇所の特定とを行なう。
（ａ）異常経路の特定
特定部１４４は、バッファフル予測部１４２によりクレジット値がアラーム閾値Ｔａを超えたことが検知された異常予測ポート１００について、当該ポート１００に備えられる送信回路Ｔｘおよび受信回路Ｒｘの各クレジット値に基づき、異常が発生している通信経路を特定する。
【００６６】
特定部１４４は、異常予測ポート１００と、この異常予測ポート１００と通信経路を介して接続されたポート１００とに備えられた各レジスタＩｎｇ,Ｅｇの各クレジット値をアラーム閾値Ｔａと比較する。その結果、通信経路３０ａに関連する送信回路Ｔｘ−Ａおよび受信回路Ｒｘ−Ｄに備えられるレジスタＩｎｇ,Ｅｇのいずれかのクレジット値がアラーム閾値Ｔａよりも大きい場合には、通信経路３０ａに異常が生じていると判断する。また、通信経路３０ｂに関連する送信回路Ｔｘ−Ｄおよび受信回路Ｒｘ−Ａに備えられるレジスタＩｎｇ,Ｅｇのいずれかのクレジット値がアラーム閾値Ｔａよりも大きい場合には、通信経路３０ｂに異常が生じていると判断する。
【００６７】
なお、この特定部１４４による異常経路の特定方法の詳細は、図８に示すフローチャートを用いて説明する。
（ｂ）故障発生箇所の特定
また、特定部１４４は、特定した異常経路に含まれるレジスタＩｎｇ,Ｅｇの各クレジット値に基づき、異常が発生し保守作業対象とすべきＣＭ１０、すなわち被疑ＣＭ１０を特定する。
【００６８】
具体的には、特定部１４４は、異常経路を構成する送信回路ＴｘのレジスタＥｇのクレジット値と、受信回路ＲｘのレジスタＩｎｇのクレジット値とを比較する。そして、この比較の結果、受信回路ＲｘのレジスタＩｎｇのクレジット値が送信回路ＴｘのレジスタＥｇのクレジット値以上である場合に、受信側のＣＭ１０を被疑ＣＭ１０として特定する。
例えば、図２に示す例において、通信経路３０ｂに異常が生じていると判断した場合に、特定部１４４は、送信回路Ｔｘ−ＤのレジスタＥｇのクレジット値ｆと、受信回路Ｒｘ−ＡのレジスタＩｎｇのクレジット値ｇとを比較する。
【００６９】
この比較の結果、ｆ=ｇの場合、もしくはｆ＜ｇの場合に、特定部１４４は、ＣＭ＃０を被疑ＣＭ１０であると特定する。
すなわち、特定部１４４は、異常経路を構成する、送信回路ＴｘのレジスタＥｇのクレジット値と、受信回路ＲｘのレジスタＩｎｇのクレジット値との大小関係に基づいて被疑ＣＭ１０の特定を行なう。
【００７０】
ここで、ｆ=ｇの場合には、送信回路Ｔｘ−Ｄから受信回路Ｒｘ−Ａへのデータ送信はできているが、受信回路Ｒｘ−Ａにおいて、レジスタＩｎｇ（ｇ）のバッファからレジスタＥｇ（ｈ）のバッファにデータを渡せない状態になっていると判断できる。従って、ＣＭ＃０が被疑ＣＭとなる。
また、ｆ＜ｇの場合には、送信回路Ｔｘ−Ｄが受信回路Ｒｘ−Ａでのデータ処理が完了した旨の通知を受け取ったが、受信回路Ｒｘ−Ａにおいて、レジスタＩｎｇのクレジットが使用中のままになっていると判断できる。従って、ＣＭ＃０が被疑ＣＭとなる。
【００７１】
なお、ｆ＞ｇの場合には、被疑ＣＭ１０の特定はできない。このようなｆ＞ｇの状況は、以下の（i），（ii）に示す２つのケースで引き起こされるためである。
（i）受信回路Ｒｘ−Ａにおいて、レジスタＩｎｇのバッファ（ｈ）がデータを受信できたが、それを処理できないケース
このケースでは、受信回路Ｒｘ−Ａに異常が発生していると考えられ、ＣＭ＃０が故障していると考えられる。
【００７２】
（ii）送信回路Ｔｘ−Ｄがデータを送信したが、それを受信回路Ｒｘ−Ａでうまく受信できなかったケース
このケースでは、送信回路Ｔｘ−Ｄに異常が発生しており、ＣＭ＃１が故障している場合と、ＣＭ１０間の通信経路３０ｂに何らかの異常が発生している場合とが考えられる。
このように、ｆ＞ｇの場合には、ＣＭ＃０，＃１および通信経路３０ｂのいずれもが異常発生箇所であると考えられ、被疑ＣＭ１０の特定はできない。
【００７３】
なお、特定部１４４は、上述した手法で被疑ＣＭ１０を特定できない場合には、予め設定されたシステム設計仕様に従っていずれかのＣＭ１０を被疑ＣＭとして特定することが望ましい。例えば、スレーブ側のＣＭ１０を被疑ＣＭとみなしたり、他の被疑ＣＭ判定手法を適用してもよい。
また、特定部１４４によって特定された被疑ＣＭ１０に対しては、切り離し処理やリブート処理が行なわれる。なお、ＣＭ１０の切り離しやリブートは既知の手法を用いて実現することができ、その説明は省略する。
【００７４】
上述の如く構成された実施形態の一例としてのストレージ装置１の異常制御部１４の処理の概要を図３に示すフローチャート（ステップＡ１〜Ａ６）に従って説明する。
ステップＡ１において、異常制御部１４は、ＣＭ１０に備えられたデバイスの各ポート１００のレジスタＩｎｇ，Ｅｇのクレジット値を定期的に読み出し、バッファフルの発生の懸念がないかを確認する。すなわち、異常制御部１４は、各ポートのレジスタＩｎｇ，Ｅｇのクレジット値を監視する。本処理の詳細は、図４を用いて後述する。
【００７５】
バッファフルの発生が予測された場合、すなわち、クレジットの枯渇の懸念が生じると、ステップＡ２において、異常制御部１４は、ＣＭ１０を抑制モードへ移行させる。本処理の詳細は、図５を用いて後述する。
その後、ステップＡ１においてバッファフル予測部１４２によりバッファフルの発生が予測されたポート１００について、異常判定部１４３がクレジット値の継時的な監視を行なう（ステップＡ３）。異常判定部１４３は、クレジット値を監視することで、バッファフル発生のおそれが解消したか否かを判断する。本処理の詳細は、図６を用いて後述する。
【００７６】
クレジット値の継時的な監視の結果、バッファフル発生の懸念が解消された場合には（ステップＡ３の判定ＯＫルート参照）、ステップＡ４において、ステップＡ２で行なった抑制モードへの移行を解除させる。なお、本処理の詳細は、図７を用いて後述する。その後、ステップＡ１の処理に戻る。
一方、クレジット値の継時的な監視の結果、バッファフル発生の懸念が解消されない場合には（ステップＡ３の“タイムアウト”ルート参照）、異常判定部１４３はハードウェア故障が生じていると判断し、ステップＡ５において、特定部１４４が、異常発生箇所の特定（切り分け）を行なう。
【００７７】
その後、ステップＡ６において、特定された被疑ＣＭ１０に対する、切り離し処理やリブート処理が行なわれる。
本ストレージ装置１においては、バッファフル発生が予測された時点、すなわち、バッファフルが実際に発生する前に、ハードウェア故障の発生を判断して、被疑ＣＭ１０を特定し、その切り離し処理等を行なう。
【００７８】
上記処理においては、バッファフル発生が予測された段階で処理が開始され、バッファフルが発生していない状態であるので、たとえ被疑ＣＭ１０の判定結果を誤った場合であってもシステムダウンにはならない。また、一方のＣＭ１０が切り離された時点でＣＭ間通信（ＰＣＩｅ通信）がリンクダウン状態になり、他方のＣＭ１０のバッファは解放される。これによってもバッファフルの発生は阻止される。
【００７９】
次に、実施形態の一例としてのストレージ装置１における異常制御部１４によるクレジット値の監視手法を、図４に示すフローチャート（ステップＢ１〜Ｂ６）に従って説明する。
ステップＢ１において、ＰＣＩｅデバイスの全てのポート１００に対して、アラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃが決定される。これらのアラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃは、ユーザが任意に設定してもよく、また、異常制御部１４が過去の使用実績に基づいて算出してもよい。
【００８０】
決定されたアラーム閾値Ｔａおよびアラーム解除閾値Ｔａｃは閾値記憶部１４６に格納される（ステップＢ２）。
ステップＢ３において、バッファ管理情報取得部１４１が、システム内の全ＰＣＩｅポート１００のレジスタＩｎｇ，Ｅｇからクレジット値を定期的に読み出す。なお、このクレジット値の採取間隔は、ユーザによって任意に決定してよい。例えば、伝送路毎にその伝送速度によって間隔を変更してもよく、全ポート１００に対して一律共通の間隔を設定してもよい。
【００８１】
ステップＢ４において、全ポート１００に対して、リードしたクレジット値とアラーム閾値Ｔａとを比較する。
この比較の結果、リードしたクレジット値がアラーム閾値Ｔａ以下である場合には（ステップＢ４の“リード結果≦アラーム閾値”ルート参照）、全てのポート１００のバッファに空きが十分にあると判断され、ステップＢ３に戻る。
【００８２】
また、リードしたクレジット値がアラーム閾値Ｔａよりも大きい場合には（ステップＢ４の“リード結果＞アラーム閾値”ルート参照）、バッファの空きが不足していると判断され、ステップＢ５に移行する。
ステップＢ５において、バッファフル予測部１４２は、リードしたクレジット値がアラーム閾値Ｔａよりも大きいこと（以下、閾値オーバーという場合がある）が検知されたポートを特定する。以下、ＣＭ１＃１のＰＣＩｅスイッチ１２のポート１００Ｄにおいてアラーム閾値オーバーが検知された例について示す。
【００８３】
ステップＢ６において、ＣＭ１０（ＣＭ＃１）に備えられた抑制処理部１４５が、閾値オーバーが検知されたポート１００を備えるＣＭ１０（ＣＭ＃１）における上位制御装置（ＣＰＵ１１）に、アラーム閾値オーバーを示す割り込み通知を行なう。この通知においては、抑制処理部１４５は、閾値オーバーが検知されたポート１００の通知も行なう。
次に、実施形態の一例としてのストレージ装置１における抑制モードへの移行処理を、図５に示すフローチャート（ステップＣ１〜Ｃ３）に従って説明する。
【００８４】
アラーム閾値オーバーを検知した異常制御部１４において、抑制処理部１４５は、同一ＣＭ（例えばＣＭ＃１）内に備えられるＣＰＵ１１に対して、割り込み信号線１５を介して割り込み信号（抑制モード通知）を送信する（ステップＣ１）。
また、抑制処理部１４５は、他ＣＭ（例えばＣＭ＃０）の異常制御部１４に対して、アラーム閾値オーバーを検知した旨の通知をＬＳＩ間通信を介して行なう（ステップＣ２）。この通知を受けたＣＭ＃０の異常制御部１４の抑制処理部１４５は、同一ＣＭ＃０内のＣＰＵ（上位制御装置）１１に対して、割り込み信号線１５を介して割り込み信号（抑制モード通知）を送信する。
【００８５】
抑制モード通知を受信した両ＣＭ＃０，＃１のＣＰＵ１１は、それぞれバッファ使用量を抑制する抑制モードで動作する（ステップＣ３）。
次に、実施形態の一例としてのストレージ装置１における異常判定部１４３によるクレジット値の継時的な監視処理を、図６に示すフローチャート（ステップＤ１〜Ｄ５）に従って説明する。
【００８６】
本処理は、図３のステップＡ２において各ＣＭ１０が抑制モードでの動作を開始した後に開始され、バッファフル予測部１４２により、バッファフルの発生が予測されたＣＭ１０（以下の例ではＣＭ＃１）で行なわれる。
ステップＤ１において、異常判定部１４３は、バッファフル予測部１４２によりバッファフルの予兆が検知されたポート１００について、当該ポート１００に含まれる各レジスタＩｎｇ，Ｅｇのクレジット値の監視を開始する。
【００８７】
ステップＤ２において、異常判定部１４３は、バッファフル予測部１４２によりアラーム閾値オーバーが検知されたポート１００に含まれる各レジスタＩｎｇ，Ｅｇのクレジット値を所定間隔で複数回（例えば、３回）リードする。
ステップＤ３において、各リード結果をアラーム解除閾値Ｔａｃと比較する。この比較の結果、１つでもアラーム解除閾値Ｔａｃよりも大きいクレジット値が検出された場合には（ステップＤ３の“判定ＮＧ”ルート参照）、ステップＤ２に戻り、再度、一定間隔でのクレジットの取得を行なう。
【００８８】
また、比較の結果、リードした複数のクレジット値が全てアラーム解除閾値Ｔａｃ以下である場合には（ステップＤ３の“判定ＯＫ”ルート参照）、バッファの使用量が低下し、当該ポート１００においてバッファフル発生の懸念が解消したと判断できる。
ステップＤ４において、ＣＭ＃１の異常制御部１４は、当該ＣＭ＃１における上位制御装置（ＣＰＵ１１）に、バッファ使用量回復を示す割り込み通知を行なう。
【００８９】
また、上述した比較の結果、所定回数（例えば、５回）以上、連続して判定ＮＧであった場合には（ステップＤ３の“タイムアウト”ルート参照）、異常判定部１４３は、タイムアウトであると判断する（ステップＤ５）。
なお、異常判定部１４３によりタイムアウトが判定された後の処理については、図８を用いて後述する。
【００９０】
次に、実施形態の一例としてのストレージ装置１における抑制モードの解除処理を、図７に示すフローチャート（ステップＥ１〜Ｅ３）に従って説明する。
以下においては、ＣＭ＃１の異常制御部１４からバッファ使用量回復を示す割り込み通知が送信された場合について例示する。
ＣＭ＃１のＣＰＵ１１が異常制御部１４からバッファ使用量回復を示す割り込み通知を受信すると（ステップＥ１）、このＣＰＵ１１は、他ＣＭ１０（ＣＭ＃０）のＣＰＵ１１に抑制モードを解除することを通知する（ステップＥ２）。この通知は例えばＰＣＩｅバス３０を介して行なわれる。なお、この抑制モードの解除の通知は、ＰＣＩｅバス３０を介して行なうことに限定されるものではなく、種々変形して実施することができる。例えば、ＬＳＩ間通信を用いて抑制モードの解除の通知を行なってもよい。
【００９１】
両ＣＭ＃０，＃１のＣＰＵ１１は、抑制モードを解除し、通常モードでの動作に移行する（ステップＥ３）。
次に、実施形態の一例としてのストレージ装置１における特定部１４４による異常経路の特定方法を、図２を参照しながら、図８に示すフローチャート（ステップＦ１〜Ｆ８）に従って説明する。
【００９２】
なお、以下においては、ＣＭ＃０とＣＭ＃１との間における通信において異常が生じた例について示す。
ステップＦ１において、ＣＭ＃０，＃１の各異常制御部１４（特定部１４４）は、異常判定部１４３によりタイムアウトが判定された（図６のステップＤ５参照）異常予測ポート１００を含む異常予測ポート対に関して、異常経路の特定を開始する。
【００９３】
ステップＦ２において、ＣＭ＃０，＃１の各異常制御部１４（バッファ管理情報取得部１４１）は、異常予測ポート対に含まれる各レジスタＩｎｇ,Ｅｇのクレジット値を読み出す。
ここで、図２に示す例においては、ＣＭ＃０の異常制御部１４のバッファ管理情報取得部１４１が、ポートＡの送信回路Ｔｘ−Ａ（回路Ｉ）および受信回路Ｒｘ−Ａ（回路ＩＶ）のレジスタＩｎｇ,Ｅｇのクレジット値（ａ，ｂ，ｇ，ｈ）をリードする。また、ＣＭ＃１の異常制御部１４のバッファ管理情報取得部１４１が、ポートＤの送信回路Ｔｘ−Ｄ（回路ＩＩＩ）および受信回路Ｒｘ−Ｄ（回路ＩＩ）のレジスタＩｎｇ,Ｅｇのクレジット値（ｃ，ｄ，ｅ，ｆ）をリードする。
【００９４】
ステップＦ３において、ＣＭ＃０の異常制御部１４の特定部１４４が、ポート１００Ａの送信回路Ｔｘ−Ａおよび受信回路Ｒｘ−ＡのレジスタＩｎｇ,Ｅｇの各クレジット値（ａ，ｂ，ｇ，ｈ）をアラーム閾値Ｔａとそれぞれ比較する。また、ＣＭ＃１の異常制御部１４の特定部１４４が、ポート１００Ｄの送信回路Ｔｘ−Ｄおよび受信回路Ｒｘ−ＤのレジスタＩｎｇ,Ｅｇの各クレジット値（ｅ，ｆ，ｃ，ｄ）をアラーム閾値Ｔａとそれぞれ比較する。
【００９５】
これらの比較の結果、ＰＣＩｅバス３０の第１方向経路３０ａに接続された、送信回路Ｔｘ−Ａもしくは受信回路Ｒｘ−ＤのレジスタＩｎｇ,Ｅｇのクレジット値（ａ，ｂ，ｇ，ｈ）がアラーム閾値Ｔａを超えている場合には（ステップＦ３の“「Ｉ−ＩＩ」側のリード結果がアラーム閾値を超えているとき”ルート参照）、ステップＦ４に移行する。すなわち、特定部１４４は、ＣＭ＃０からＣＭ＃１への第１方向経路３０ａに関して異常個所があると判定する。
【００９６】
特定部１４４は、送信回路Ｔｘ−ＡのレジスタＩｎｇ,Ｅｇのクレジット値と、受信回路Ｒｘ−ＤのレジスタＩｎｇ,Ｅｇのクレジット値とを比較対象とし（ステップＦ５）、これらのクレジット値を用いて故障発生箇所の特定を行なう。なお、この故障発生箇所の特定方法の詳細は図９を用いて後述する。
一方、ＰＣＩｅバス３０の第２方向経路３０ｂに接続された、送信回路Ｔｘ−Ｄもしくは受信回路Ｒｘ−ＡのレジスタＩｎｇ,Ｅｇのクレジット値（ｅ，ｆ，ｇ，ｈ）がアラーム閾値Ｔａを超えている場合には（ステップＦ３の“「ＩＩＩ−ＩＶ」側のリード結果がアラーム閾値を超えているとき”ルート参照）、ステップＦ６に移行する。すなわち、特定部１４４は、ＣＭ＃１からＣＭ＃０への第２方向経路３０ｂに関して異常個所があると判定する。
【００９７】
特定部１４４は、送信回路Ｔｘ−ＤのレジスタＩｎｇ,Ｅｇのクレジット値と、受信回路Ｒｘ−ＡのレジスタＩｎｇ,Ｅｇのクレジット値とを比較対象とし（ステップＦ７）、これらのクレジット値を用いて故障発生箇所の特定を行なう。なお、この故障発生箇所の特定方法の詳細は図９を用いて後述する。
また、ＰＣＩｅバス３０の第１方向経路３０ａに接続された、送信回路Ｔｘ−Ａもしくは受信回路Ｒｘ−ＤのレジスタＩｎｇ,Ｅｇのクレジット値（ａ，ｂ，ｈ，ｇ）と、第２方向経路３０ｂに接続された、送信回路Ｔｘ−Ｄもしくは受信回路Ｒｘ−ＡのレジスタＩｎｇ,Ｅｇのクレジット値（ｅ，ｆ，ｇ，ｈ）の両方がアラーム閾値Ｔａを超えている場合には（ステップＦ３の“「Ｉ−ＩＩ」側と「ＩＩＩ−ＩＶ」側の両方でアラーム閾値を超えているとき”ルート参照）、ステップＦ８に移行する。すなわち、異常経路が不明であるとして、段階的な異常経路特定を行なう。なお、この段階的な異常経路特定手法の詳細は、図１０を用いて後述する。
【００９８】
次に、実施形態の一例としてのストレージ装置１における特定部１４４による故障発生箇所の特定処理を、図２を参照しながら、図９に示すフローチャート（ステップＧ１〜Ｇ１０）に従って説明する。
なお、以下においては、ＣＭ＃１からＣＭ＃０への第２方向経路３０ｂに関して異常個所が生じた例について示す。また、以下の例においては、ＣＭ＃０が主として処理を行なうものであり、ＣＭ＃１が従として処理を行なうものとする。
【００９９】
ステップＧ１において、一方のＣＭ１０の異常制御部１４（バッファ管理情報取得部１４１）が、他方の異常制御部１４にクレジット値のリード指示を送信する。これにより、ＣＭ１０間での同期処理が開始される。
例えば、ＣＭ＃１の異常制御部１４は、ＣＭ＃０の異常制御部１４に、ＣＭ＃０に備えられた回路Ｉ，ＩＶのクレジット値（ａ，ｂ，ｇ，ｈ）のリード指示を送信する。
【０１００】
ステップＧ２において、クレジット値のリード指示を受信した異常制御部１４は、この指示に応じて、当該指示の送信元のＣＭ１０の異常制御部１４に、クレジット値のリード指示を送信する。これにより、ＣＭ１０間での同期処理が完了する。
例えば、ＣＭ＃０の異常制御部１４が、ＣＭ＃１の異常制御部１４に、ＣＭ＃１に備えられた回路ＩＩ，ＩＩＩのクレジット値（ｃ，ｄ，ｅ，ｆ）のリード指示を送信する。
【０１０１】
ＣＭ＃０からＣＭ＃１に対してリード指示を応答することで、これらのＣＭ１０間でクレジット値採取の同期をとることができ、また、ＣＭ＃１からのリード指示を正常に受信した旨の応答としても機能する。
なお、上記例においては、最初にＣＭ＃１の異常制御部１４からＣＭ＃０の異常制御部１４にリード指示を送信しているが、先にＣＭ＃０の異常制御部１４からＣＭ＃１の異常制御部１４にリード指示を送信してもよく、種々変形して実施することができる。また、いずれのＣＭ１０の異常制御部１４から他方の異常制御部１４にリード指示を送信するかを、ユーザが任意に設定してもよい。
【０１０２】
ステップＧ３において、ＣＭ＃０，＃１の各異常制御部１４は、同時に、対象の回路のクレジット値を一定間隔で、複数回（例えば、３回）読み出す。なお、これらのクレジット値を読み出す間隔や回数は適宜変更して実施することができ、また、ユーザが任意に設定することができる。
ステップＧ４において、ＣＭ＃１の異常制御部１４が、ＣＭ＃０の異常制御部１４に、ＣＭ＃１に備えられた回路ＩＩ，ＩＩＩのクレジット値（ｃ，ｄ，ｅ，ｆ）のリード結果を送信する。すなわち、従として処理を行なう一方のＣＭ１０の異常制御部１４が、リードしたクレジット値を、主として処理を行なう他方の異常制御部１４に送信する。
【０１０３】
ステップＧ５において、ＣＭ＃０の異常制御部１４が、ＣＭ＃１の異常制御部１４から、ＣＭ＃１に備えられた回路ＩＩ，ＩＩＩのクレジット値（ｃ，ｄ，ｅ，ｆ）のリード結果を受信する。すなわち、主として処理を行なうＣＭ１０の異常制御部１４が、従として処理を行なうＣＭ１０の異常制御部１４からクレジット値を受信する。
ステップＧ６において、主として処理を行なうＣＭ１０の異常制御部１４の特定部１４４が、異常経路を構成する送信回路ＴｘのレジスタＥｇのクレジット値と、受信回路ＲｘのレジスタＩｎｇのクレジット値とを比較する。
【０１０４】
例えば、特定部１４４は、異常箇所があると判定された通信経路３０ｂに接続された、送信回路Ｔｘ−Ｄ（回路ＩＩＩ）のレジスタＥｇのクレジット値ｆと、受信回路Ｒｘ−Ａ（回路ＩＶ）のレジスタＩｎｇのクレジット値ｇとを比較する。
この比較の結果、回路ＩＩＩのクレジット値ｆが回路ＩＶのクレジット値ｇ以下の場合には（ステップＧ６の“「ＩＩＩ−ｆ」＝「ＩＶ−ｇ」ｏｒ「ＩＩＩ−ｆ」＜「ＩＶ−ｇ」のとき”ルート参照）、特定部１４４はＣＭ＃０を被疑ＣＭと判定する（ステップＧ９）。
【０１０５】
ステップＧ１０において、被疑ＣＭ１０に対する切り離し処理やリブート処理が行なわれる。
一方、回路ＩＩＩのクレジット値ｆが回路ＩＶのクレジット値ｇよりも大きい場合には（ステップＧ６の“「ＩＩＩ−ｆ」＞「ＩＶ−ｇ」のとき”ルート参照）、被疑ＣＭを特定することができない（ステップＧ７）。
【０１０６】
このように被疑ＣＭを特定できない場合には、ステップＧ８において、予め設定されたシステム設計仕様に従っていずれかのＣＭ１０の被疑ＣＭとして特定する。例えば、スレーブ側のＣＭ１０を被疑ＣＭとみなしたり、他の被疑ＣＭ判定手法をさらに適用することで、被疑ＣＭの特定を図る。
なお、上述したステップＧ６における比較・判定方法には、以下の（ａ），（ｂ）に示す２種類の手法のうちいずれを用いてもよい。
【０１０７】
（ａ）時間重視の手法
ステップＧ３において一定間隔を置いてリードした複数のクレジット値について、ステップＧ６において行なった複数の比較結果において、同一結果数が最も多い結果を最終的な比較結果として採用する。
例えば、ステップＧ３においてクレジット値のリードを３回行なった場合に、「ＩＩＩ−ｆ」＜「ＩＶ−ｇ」という結果を２回取得し、「ＩＩＩ−ｆ」＞「ＩＶ−ｇ」という結果を１回取得したとする。このような場合には、取得回数が多い「ＩＩＩ−ｆ」＜「ＩＶ−ｇ」という結果を最終的な比較結果として採用する。
【０１０８】
（ｂ）精度重視の手法
ステップＧ３において一定間隔を置いてリードした複数のクレジット値について、ステップＧ６において行なった複数の比較結果において、同一結果が所定回数（例えば３回）以上連続して得られるまで、ステップＧ３〜Ｇ６の処理を繰り返し行なう。
なお、予め設定された規定時間を経過しても、同一結果が連続して得られない（結果が安定しない）場合には、上記（ａ）時間重視の手法で判定してもよく、また、被疑ＣＭを特定することができない（ステップＧ７参照）と判定し、ステップＧ８に移行してもよい。
【０１０９】
次に、実施形態の一例としてのストレージ装置１における特定部１４４による段階的な異常経路特定手法を、図１０に示すフローチャート（ステップＨ１〜Ｈ５）に従って説明する。
前述した図８のステップＦ３の比較結果において、「Ｉ−ＩＩ」側と「ＩＩＩ−ＩＶ」側の両方でアラーム閾値を超えている場合には、異常経路が不明であるとして、以下に示す段階的な異常経路特定を行なう。
【０１１０】
ステップＨ１において、図８のステップＦ２でリードした、異常予測ポート対に含まれる各レジスタＩｎｇ,Ｅｇのクレジット値に基づいて、第１方向経路３０ａと第２方向経路３０ｂとのうち、クレジット値が大きい方の通信経路３０に異常箇所があると仮定して、図９に示した故障発生箇所の特定処理を行なう。
この特定処理の結果、被疑ＣＭ１０を特定できた場合には（ステップＨ１の“被疑箇所特定が可能”ルート参照）、ステップＨ２において、被疑ＣＭ１０に対する切り離し処理やリブート処理が行なわれる。
【０１１１】
一方、回被疑ＣＭ１０を特定できなかった場合には（ステップＨ１の“被疑箇所特定が不可”ルート参照）、ステップＨ３において、ステップＨ１で異常個所があると仮定しなかった方の通信経路３０に異常箇所があると仮定して、図９に示した故障発生箇所の特定処理を行なう。
この特定処理の結果、被疑ＣＭ１０を特定できた場合には（ステップＨ３の“被疑箇所特定が可能”ルート参照）、ステップＨ４において、被疑ＣＭ１０に対する切り離し処理やリブート処理が行なわれる。
【０１１２】
一方、回被疑ＣＭ１０を特定できなかった場合には（ステップＨ３の“被疑箇所特定が不可”ルート参照）、ステップＨ５において、予め設定されたシステム設計仕様に従っていずれかのＣＭ１０の被疑ＣＭとして特定する。
このように、実施形態の一例としてのストレージ装置１によれば、バッファ管理情報取得部１４１がＣＭ１０内の各ポート１００に備えられた各レジスタＩｎｇ,Ｅｇのクレジット値をリードし、これらのクレジット値に基づき、バッファフル予測部１４２が各バッファのバッファフルの発生を予測する。
【０１１３】
そして、バッファフル予測部１４２がバッファフルの予兆を検知すると、抑制処理部１４５が、同一ＣＭ上のＣＰＵ１１をバッファ使用量を抑制する抑制モードに移行させる。
これにより、バッファフルの発生を回避することができ、バッファフル（クレジット枯渇）によるマシンダウンの発生を阻止することができる。
またこの際、抑制処理部１４５が、ＣＰＵ１１に対して割り込み信号線１５を介した割り込み通知により抑制モード通知を行なうことで、バッファ使用量抑制モードに迅速に移行させることができる。これにより、バッファ詰まりが実際に発生する前に被疑ＣＭ１０を切り離すことができ、システムダウンを抑止することができる。
【０１１４】
異常判定部１４３が、一定間隔で取得した複数のクレジット値を、それぞれアラーム解除閾値Ｔａｃと比較することで、クレジット値の継時的な監視を行なう。そして、その監視結果に基づいて、バッファフル発生の懸念が解消したか否かを判断する。このバッファフル発生の懸念が解消していない場合には、本ストレージ装置１においてハードウェア故障が発生していることを判断する。
【０１１５】
すなわち、異常判定部１４３は、バッファフルの発生が予測されたポート１００について、クレジット値の監視を継時的に行なうことで、本ストレージ装置１においてハードウェア故障が発生していることを判断する。これにより、異常判定部１４３は、本ストレージ装置１においてハードウェア故障が発生していることを容易に判断することができる。
また、特定部１４４が、バッファフル予測部１４２によりクレジット値がアラーム閾値Ｔａを超えたことが検知された異常予測ポート１００について、当該ポート１００に備えられる送信回路Ｔｘおよび受信回路Ｒｘの各クレジット値に基づき、異常が発生している通信経路を特定する。これにより、異常発生箇所の特定を容易に行なうことができる。
【０１１６】
さらに、特定部１４４が、異常経路を構成する、送信回路ＴｘのレジスタＥｇのクレジット値と、受信回路ＲｘのレジスタＩｎｇのクレジット値との大小関係に基づいて被疑ＣＭ１０の特定を行なう。これにより、被疑ＣＭの特定を容易に行なうことができる。
そして、開示の技術は上述した実施形態に限定されるものではなく、本実施形態の趣旨を逸脱しない範囲で種々変形して実施することができる。本実施形態の各構成及び各処理は、必要に応じて取捨選択することができ、あるいは適宜組み合わせてもよい。
【０１１７】
例えば、上述した実施形態においては、ＰＣＩｅバスにより構成されたシステムについて説明したが、これに限定されるものではなく、ＰＣＩｅ以外の通信プロトコルに適用してもよい。
また、上述した実施形態においては、ＬＳＩとして構成した異常制御部１４をＣＭ１０に搭載しているが、これに限定されるものではなく、種々変形して実施することができる。例えば、異常制御部１４としての機能をＣＰＵ１１等のプロセッサがプログラムを実行することにより実現してもよい。また、異常制御部１４としての各機能をＣＰＵ１１やＰＣＩｅスイッチ１２等の他の機器に搭載してもよい。
【０１１８】
さらに、上述した実施形態においては、ＣＭ＃０に備えられた異常制御部１４が、当該ＣＭ＃０における各クレジット値の収集を行ない、ＣＭ＃１に備えられた異常制御部１４が、当該ＣＭ＃１における各クレジット値の収集を行なっているが、これに限定されるものではない。
すなわち、ＣＭ＃０に備えられた異常制御部１４がＣＭ＃１における各クレジット値の収集を行なってもよく、ＣＭ＃１に備えられた異常制御部１４がＣＭ＃０における各クレジット値の収集を行なってもよい。
【０１１９】
また、ＣＭ＃０もしくはＣＭ＃１のいずれかにのみ異常制御部１４を備え、この異常制御部１４がＣＭ＃０及びＣＭ＃１の各クレジット値の収集を行なってもよい。
また、上述した開示により本実施形態を当業者によって実施・製造することが可能である。
以上の実施形態に関し、更に以下の付記を開示する。
【０１２０】
（付記１）
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを通信路を介して接続される通信システムであって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、前記バッファの使用状況を示すバッファ使用状況情報を取得する取得部と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する特定部とを備えることを特徴とする通信システム。
【０１２１】
（付記２）
前記取得部が、
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートに備えられた各記憶部に格納されたクレジット情報を読み出すことを特徴とする、付記１記載の通信システム。
【０１２２】
（付記３）
前記通信路が複数の通信経路を備えて構成され、
前記特定部が、
前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記クレジット情報に基づき、前記複数の通信経路の中から異常発生箇所に相当する通信経路を特定することを特徴とする、付記２記載の通信システム。
【０１２３】
（付記４）
前記特定部が、
前記複数の通信経路のうちいずれか１つの通信経路に関する前記クレジット情報が第１閾値より大きい場合に、当該第１閾値よりも大きいクレジット情報を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定することを特徴とする、付記３記載の通信システム。
【０１２４】
（付記５）
前記特定部が、
前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記クレジット情報が、送信側の前記記憶部に格納された前記クレジット情報以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定することを特徴とする、付記４記載の通信システム。
【０１２５】
（付記６）
前記特定部が、
２つ以上の前記通信経路において前記クレジット情報が前記第１閾値より大きい場合に、
前記２つ以上の通信経路に対して、値が大きいクレジット情報を格納する前記記憶部に対応する通信経路から優先して、受信側の前記記憶部に格納された前記クレジット情報の値が、送信側の前記記憶部に格納された前記クレジット情報の値以上であるか否かを判定し、
受信側の前記記憶部に格納された前記クレジット情報が、送信側の前記記憶部に格納された前記クレジット情報以上である場合に、前記第１の装置および前記第２の装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定することを特徴とする、付記４または５記載の通信システム。
【０１２６】
（付記７）
前記取得部によって取得された前記各クレジット情報に基づき、前記各バッファにおけるバッファフルの発生を予測するバッファフル予測部と、
前記バッファフル予測部が前記バッファフルの発生を予測すると、制御装置をバッファ使用量を抑制する動作モードに移行させる、バッファ使用抑制処理部と
を備えることを特徴とする、付記２〜６のいずれか１項に記載の通信システム。
【０１２７】
（付記８）  前記バッファフル予測部により前記バッファフルの発生が予測された前記通信ポートに対して、所定時間経過後に取得した当該通信ポートにおける前記クレジット情報を、所定の第２の閾値と比較し、前記クレジット情報が前記第２の閾値よりも大きいことを検知した場合に、前記通信ポートに関連する異常の発生を判定する異常判定部を備えることを特徴とする、付記７記載の通信システム。
【０１２８】
（付記９）
前記異常判定部が、
前記バッファフル予測部により、前記バッファフルの発生が予測されたポートに含まれる前記クレジット情報を前記第２の閾値と複数回比較し、前記クレジット情報が所定回数連続して前記第２の閾値以下であることを検知した場合に、前記バッファフルの発生のおそれが解消したと判断することを特徴とする、付記８記載の通信システム。
【０１２９】
（付記１０）
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを接続する通信路における異常発生箇所を特定する異常制御装置であって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、送受信される前記データを格納するバッファの使用状況を示すバッファ使用状況情報を取得する取得部と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する特定部とを備えることを特徴とする異常制御装置。
【０１３０】
（付記１１）
前記取得部が、
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートに備えられた各記憶部に格納されたクレジット情報を読み出すことを特徴とする、付記１０記載の異常制御装置。
【０１３１】
（付記１２）
前記通信路が複数の通信経路を備えて構成され、
前記特定部が、
前記第１の通信装置および前記第２の通信装置において、前記通信経路毎に備えられる前記記憶部に格納された前記クレジット情報に基づき、前記複数の通信経路の中から異常発生箇所に相当する通信経路を特定することを特徴とする、付記１１記載の異常制御装置。
【０１３２】
（付記１３）
前記特定部が、
前記複数の通信経路のうちいずれか１つの通信経路に関する前記クレジット情報が第１閾値より大きい場合に、当該第１閾値よりも大きいクレジット情報を格納する前記記憶部に対応する通信経路を、異常発生箇所に相当する通信経路として特定することを特徴とする、付記１２記載の異常制御装置。
【０１３３】
（付記１４）
前記特定部が、
前記異常発生箇所に相当する通信経路として特定された前記通信経路について、受信側の前記記憶部に格納された前記クレジット情報が、送信側の前記記憶部に格納された前記クレジット情報以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定することを特徴とする、付記１３記載の異常制御装置。
【０１３４】
（付記１５）
前記特定部が、
２つ以上の前記通信経路において前記クレジット情報が前記第１閾値より大きい場合に、
前記２つ以上の通信経路に対して、値が大きいクレジット情報を格納する前記記憶部に対応する通信経路から優先して、受信側の前記記憶部に格納された前記クレジット情報の値が、送信側の前記記憶部に格納された前記クレジット情報の値以上であるか否かを判定し、
受信側の前記記憶部に格納された前記クレジット情報が、送信側の前記記憶部に格納された前記クレジット情報以上である場合に、前記第１の通信装置および前記第２の通信装置のうち受信側の前記記憶部を備える通信装置が異常発生箇所であると特定することを特徴とする、付記１３または１４記載の異常制御装置。
【０１３５】
（付記１６）
前記取得部によって取得された前記各クレジット情報に基づき、前記各バッファにおけるバッファフルの発生を予測するバッファフル予測部と、
前記バッファフル予測部が前記バッファフルの発生を予測すると、制御装置をバッファ使用量を抑制する動作モードに移行させる、バッファ使用抑制処理部と
を備えることを特徴とする、付記１１〜１５のいずれか１項に記載の異常制御装置。
【０１３６】
（付記１７）
前記バッファフル予測部により前記バッファフルの発生が予測された前記通信ポートに対して、所定時間経過後に取得した当該通信ポートにおける前記クレジット情報を、所定の第２の閾値と比較し、前記クレジット情報が前記第２の閾値よりも大きいことを検知した場合に、前記通信ポートに関連する異常の発生を判定する異常判定部を備えることを特徴とする、付記１６記載の異常制御装置。
【０１３７】
（付記１８）
前記異常判定部が、
前記バッファフル予測部により、前記バッファフルの発生が予測されたポートに含まれる前記クレジット情報を前記第２の閾値と複数回比較し、前記クレジット情報が所定回数連続して前記第２の閾値以下であることを検知した場合に、前記バッファフルの発生のおそれが解消したと判断することを特徴とする、付記１７記載の異常制御装置。
【０１３８】
（付記１９）
送受信されるデータを格納するバッファをそれぞれ有する第１の通信装置と第２の通信装置とを接続する通信路における異常発生箇所を特定する異常制御方法であって、
前記第１の通信装置および前記第２の通信装置のそれぞれから、前記バッファの使用状況を示すバッファ使用状況情報を取得する処理と、
取得した前記バッファ使用状況情報に基づいて、前記通信路における異常発生箇所を特定する処理を備えることを特徴とする異常制御方法。
【０１３９】
（付記２０）
前記バッファ使用状況情報として、前記第１の通信装置および前記第２の通信装置の通信ポートに備えられた各記憶部に格納されたクレジット情報を読み出すことを特徴とする、付記１９記載の異常制御方法。
【符号の説明】
【０１４０】
１    ストレージ装置
１０−１，１０−２，１０    ＣＭ
１１    ＣＰＵ
１２    スイッチ（第１の通信装置，第２の通信装置）
１３    ＣＡ
１４    異常制御部（異常制御装置）
１５    割り込み信号線
３０    ＰＣＩｅバス（通信路）
３０ａ    第１方向経路，通信経路
３０ｂ    第２方向経路，通信経路
１４１    バッファ管理情報取得部
１４２    バッファフル予測部
１４３    異常判定部
１４４    特定部
１４５    抑制処理部
１４６    閾値記憶部
１００Ａ〜１００Ｊ，１００    ポート
【図１】
0006428048.tif 000002
【図２】
0006428048.tif 000003
【図３】
0006428048.tif 000004
【図４】
0006428048.tif 000005
【図５】
0006428048.tif 000006
【図６】
0006428048.tif 000007
【図７】
0006428048.tif 000008
【図８】
0006428048.tif 000009
【図９】
0006428048.tif 000010
【図１０】
0006428048.tif 000011
【図１１】
0006428048.tif 000012