(57)【特許請求の範囲】
【請求項１】
ペリフェラル・コンポーネント・インターコネクト・エクスプレス（PCIe）ポートを有するデバイスに適用されるパケットバックプレッシャー検出方法であって、
前記デバイスにより、前記PCIeポートのパケット送信キュー内の各送信対象パケットが前記PCIeポートにおいて現在送信される必要があるパケットになった場合、現在送信される必要がある前記パケットをバッファに記憶するステップであり、現在送信される必要がある前記パケットは、前記パケット送信キュー内の最初のパケットであり、前記バッファに記憶された前記パケットは、前記PCIeポートを使用することにより送信された後に前記バッファから除去されるステップと、
前記デバイスにより、前記バッファの先頭に記憶された各パケットの記憶持続時間を記録し、各パケットの前記記録された記憶持続時間を累積し、これにより、前記バッファ内のパケット記憶の累積持続時間を取得するステップと、
前記デバイスにより、前記累積持続時間が第１閾値に到達した場合、前記PCIeポートにおいて停滞した各送信対象パケットによってパケットバックプレッシャーが前記PCIeポートにおいて発生したと決定するステップと
を含む方法。
【請求項２】
前記バッファは、いずれかの時点で最大で１つのパケットを記憶する、請求項１に記載の方法。
【請求項３】
前記バッファの容量は、少なくとも２つのパケットを記憶する容量であり、前記バッファの前記容量は、前記パケット送信キューの容量未満であり、前記パケット送信キューは、全ての送信対象パケットを記憶する、請求項１に記載の方法。
【請求項４】
前記デバイスにより、予め設定された条件において前記累積持続時間を０にリセットするステップを更に含む、請求項１乃至３のうちいずれか１項に記載の方法。
【請求項５】
前記デバイスにより、予め設定された条件において前記累積持続時間を０にリセットするステップは、
前記デバイスにより、リセットタイマを設定し、計時を実行し、前記リセットタイマにより記録された時間が第２閾値に到達した場合、前記累積持続時間を０にリセットするステップを含む、請求項４に記載の方法。
【請求項６】
前記デバイスにより、予め設定された条件において前記累積持続時間を０にリセットするステップは、
前記デバイスにより、前記累積持続時間が０にリセットされてから前記バッファに記憶されているパケットの数量を記録し、前記数量が第３閾値に到達した場合、前記累積持続時間を０にリセットするステップを含む、請求項４に記載の方法。
【請求項７】
前記デバイスにより続いて記録された、各パケットの前記記憶持続時間は、持続時間キューを形成し、前記方法は、
前記デバイスにより、前記持続時間キューの長さが第４閾値に到達した場合、前記持続時間キューから最も早く記録された記憶持続時間を削除し、前記累積持続時間から、前記持続時間キューから削除された前記最も早く記録された記憶持続時間を減算するステップを更に含む、請求項１乃至６のうちいずれか１項に記載の方法。
【請求項８】
前記デバイスにより、前記バッファ内のいずれかのパケットの記録された記憶持続時間が第５閾値に到達した場合、パケットバックプレッシャーが前記PCIeポートにおいて発生したと決定するステップであり、前記第５閾値が前記第１閾値未満であるステップを更に含む、請求項１乃至７のうちいずれか１項に記載の方法。
【請求項９】
前記デバイスにより、前記PCIeポートのパケット送信キュー内の各送信対象パケットが前記PCIeポートにおいて現在送信される必要があるパケットになった場合、現在送信される必要がある前記パケットをバッファに記憶するステップは、
前記デバイスにより、前記PCIeポートの第１方向におけるパケット送信キュー内の各送信対象パケットが前記PCIeポートにおいて現在送信される必要があるパケットになった場合、前記第１方向において現在送信される必要がある前記パケットを前記バッファに記憶するステップであり、前記第１方向が前記PCIeポートのアップストリーム方向又はダウンストリーム方向であるステップを含み、
前記方法は、
前記デバイスにより、前記PCIeポートの第２方向におけるパケット送信キュー内の各送信対象パケットが前記PCIeポートにおいて現在送信される必要があるパケットになった場合、前記第２方向において現在送信される必要がある前記パケットを第２バッファに記憶するステップであり、前記第２方向が前記第１方向と反対であり、前記第２バッファに記憶された前記パケットは、前記PCIeポートを使用することにより送信された後に前記第２バッファから除去され、前記第２バッファは、いずれかの時点で最大で１つのパケットを記憶するステップと、
前記デバイスにより、前記第２バッファの先頭に記憶された各パケットの記憶持続時間を記録し、前記第２バッファに記憶された各パケットの前記記録された記憶持続時間を累積し、これにより、前記第２バッファ内のパケット記憶の第２累積持続時間を取得するステップと、
前記デバイスにより、前記第２累積持続時間が前記第１閾値に到達した場合、前記PCIeポートにおいて停滞した各送信対象パケットによってパケットバックプレッシャーが前記PCIeポートにおいて発生したと決定するステップと
を更に含む、請求項１乃至８のうちいずれか１項に記載の方法。
【請求項１０】
PCIeポートを有するデバイスに適用されるパケットバックプレッシャー検出装置であって、
前記PCIeポートのパケット送信キュー内の各送信対象パケットが前記PCIeポートにおいて現在送信される必要があるパケットになった場合、現在送信される必要がある前記パケットをバッファに記憶するように構成されたキャッシュモジュールであり、現在送信される必要がある前記パケットは、前記パケット送信キュー内の最初のパケットであり、前記バッファに記憶された前記パケットは、前記PCIeポートを使用することにより送信された後に前記バッファから除去されるキャッシュモジュールと、
前記バッファの先頭に記憶された各パケットの記憶持続時間を記録し、各パケットの前記記録された記憶持続時間を累積し、これにより、前記バッファ内のパケット記憶の累積持続時間を取得するように構成された計時モジュールと、
前記累積持続時間が第１閾値に到達した場合、前記PCIeポートにおいて停滞した各送信対象パケットによってパケットバックプレッシャーが前記PCIeポートにおいて発生したと決定するように構成された決定モジュールと
を含む装置。
【請求項１１】
前記バッファは、いずれかの時点で最大で１つのパケットを記憶する、請求項１０に記載の装置。
【請求項１２】
前記バッファの容量は、少なくとも２つのパケットを記憶する容量であり、前記バッファの前記容量は、前記パケット送信キューの容量未満であり、前記パケット送信キューは、全ての送信対象パケットを記憶する、請求項１０に記載の装置。
【請求項１３】
予め設定された条件において前記計時モジュールにより決定された前記累積持続時間を０にリセットするように構成された時間リセットモジュールを更に含む、請求項１０乃至１２のうちいずれか１項に記載の装置。
【請求項１４】
前記時間リセットモジュールは、
リセットタイマを設定し、計時を実行し、前記リセットタイマにより記録された時間が第２閾値に到達した場合、前記計時モジュールにより決定された前記累積持続時間を０にリセットするように構成される、請求項１３に記載の装置。
【請求項１５】
前記時間リセットモジュールは、
前記累積持続時間が０にリセットされてから前記バッファに記憶されているパケットの数量を記録し、前記数量が第３閾値に到達した場合、前記計時モジュールにより決定された前記累積持続時間を０にリセットするように構成される、請求項１３に記載の装置。
【請求項１６】
前記計時モジュールにより続いて記録された、各パケットの前記記憶持続時間は、持続時間キューを形成し、前記装置は、
前記持続時間キューの長さが第４閾値に到達した場合、前記持続時間キューから最も早く記録された記憶持続時間を削除し、前記計時モジュールにより決定された前記累積持続時間から、前記持続時間キューから削除された前記最も早く記録された記憶持続時間を減算するように構成された計時制御モジュールを更に含む、請求項１０乃至１５のうちいずれか１項に記載の装置。
【請求項１７】
前記決定モジュールは、
前記計時モジュールにより記録された、前記バッファ内のいずれかのパケットの記憶持続時間が第５閾値に到達した場合、パケットバックプレッシャーが前記PCIeポートにおいて発生したと決定するように更に構成され、前記第５閾値が前記第１閾値未満である、請求項１０乃至１６のうちいずれか１項に記載の装置。
【請求項１８】
プロセッサと、メモリと、PCIeポートと、バスとを含むパケットバックプレッシャー検出デバイスであり、前記プロセッサ、前記メモリ及び前記PCIeポートは、前記バスを使用することにより接続されて相互通信を実現し、前記メモリは、コンピュータ実行命令を記憶するように構成され、前記デバイスが実行する場合、前記プロセッサは、前記メモリ内の前記コンピュータ実行命令を実行し、これにより、前記デバイス内のハードウェアリソースを使用することにより、請求項１乃至９のうちいずれか１項に記載の方法の動作を実行するデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ技術の分野に関し、特にパケットバックプレッシャー検出方法、装置及びデバイスに関する。
【背景技術】
【０００２】
ペリフェラル・コンポーネント・インターコネクト・エクスプレス（Peripheral  Component  Interconnect  express、PCIe）システムでは、PCIeポートを有するデバイスは、PCIeポートを使用することによりパケットを伝送し得る。例えば、中央処理装置（Central  Processing  Unit、CPU）がPCIeポートを使用することによりPCIeスイッチのアップストリームポート（Upstream  Port、UP）に接続され、PCIeスイッチのダウンストリームポート（Downstream  Port、DP）がエンドポイント（Endpoint、EP）デバイスに接続される。CPUがパケットをEPに送信する場合、まず、CPUは、パケットをPCIeスイッチのUPに送信し、次に、PCIeスイッチのUPは、パケットをEPに接続されたDPに送信し、次に、DPは、パケットをEPに送信する。
【０００３】
２つのPCIeポートの間のリンクが故障になった場合、送信対象パケットは、PCIeポートにおいて停滞し、すなわち、パケットバックプレッシャーが発生する。パケットバックプレッシャーがタイムリーに検出できない場合、パケットを送信するデバイスにおいて命令のタイムアウトが発生する。結果として、デバイスがハング（hang）し、正常に動作することができない。
【０００４】
既存のパケットバックプレッシャー検出方法は以下の通りである。PCIeポートにおける全ての送信対象パケットは、キャッシュユニットに記憶される。キャッシュユニットに記憶された各パケットについてタイマが設定され、キャッシュユニット内のパケットの記憶持続時間を記録する。いずれかのパケットについて設定されたタイマが満了した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定され、PCIeポートにおけるパケットバックプレッシャーを示すエラーパケットがエラー処理ユニットに送信される。
【０００５】
しかし、１つのデバイスは、複数のPCIeポートを含む可能性があり、一般的に、大量の送信対象パケットが各PCIeポートにおけるキャッシュユニットに記憶される。従来技術におけるパケットバックプレッシャー検出方法では、大量のタイマリソースが申請され、エラー処理ユニットは、大量のエラー処理レポートを受信する。結果として、デバイス内の帯域幅が過度に占有され、デバイス内のリソースが浪費される。
【発明の概要】
【０００６】
この出願は、パケットバックプレッシャー検出解決策における過大な量のオーバーヘッドが存在するという従来技術の課題を解決するためのパケットバックプレッシャー検出方法、装置及びデバイスを提供する。
【０００７】
第１態様によれば、この出願は、パケットバックプレッシャー検出方法を提供し、方法は、PCIeポートを有するデバイスに適用される。デバイスは、PCIeポートを有するCPU、PCIeスイッチ又はエンドポイント（End  point、EP）デバイスでもよい。デバイスがCPUである場合、PCIeポートは、CPUのPCIeポート、例えば、ルートコンプレックス（Root  Complex、RC）を実行するCPUのルートポート（Root  Port、RP）である。デバイスがPCIeスイッチである場合、PCIeポートは、PCIeスイッチのアップストリームポート又はダウンストリームポートのいずれかである。デバイスがEPである場合、PCIeポートは、EPがPCIeシステム内の他のデバイスに接続されるPCIeポートである。PCIeポートのパケット送信キュー内の各送信対象パケットがPCIeポートにおいて現在送信される必要があるパケットになった場合、デバイスは、現在送信される必要があるパケットをバッファに記憶し、バッファに記憶されたパケットは、PCIeポートを使用することにより送信された後にバッファから除去される。バッファは、いずれかの時点で最大で１つのパケットを記憶する。バッファは、ランダムアクセスメモリ（Random Access  Memory、RAM）又はフラッシュ（Flash）のような独立した記憶コンポーネントでもよく、或いは記憶コンポーネントを分割することにより取得された記憶領域でもよい。デバイスは、バッファに記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定する。バッファに記憶された各パケットの記憶持続時間を記録する機能は、デバイス内で計時機能を有するハードウェアモジュールにより実現されてもよく、或いはデバイスのCPUによりアプリケーションプログラムを実行することにより実現されてもよい。
【０００８】
パケットバックプレッシャーがPCIeポートにおいて発生したとデバイスが決定する解決策では、１つのPCIeポートの１つの方向におけるパケットバックプレッシャーについて、計時は、いずれかの時点でバッファ内の１つのパケットの記憶持続時間に対してのみ実行される。したがって、計時がPCIeポートにおける全ての送信対象パケットに対して同時に実行される従来技術の解決策に比べて、この解決策は、システムオーバーヘッドを実質的に減少させることができる。さらに、リンク障害のためパケットバックプレッシャーがPCIeポートにおいて発生した場合、デバイスは、リンク障害について１回のみパケットバックプレッシャーエラーを生成し、これによって、エラーの連発の発生を回避し、システム安定性を改善する。さらに、パケットバックプレッシャーが発生したか否かは、バッファ内のパケット記憶の累積持続時間に従って決定されるため、以下の場合、すなわち、どのパケットの記憶持続時間も指定の閾値を超えないが、複数のパケットの記憶持続時間の累積値が過度に大きいため、パケットを送信するデバイスが正常に動作することができないことが回避できる。
【０００９】
任意選択の実現では、バッファの容量は、少なくとも２つのパケットが記憶されることができることでもよい。複数のパケットは、キャッシュユニット内の送信順序に従ってソートされる。バッファの容量は、キャッシュユニットの容量未満である。デバイスのプロセッサは、バッファ内のパケットの記憶持続時間を記録し、パケットがバッファのパケットキュー内の最初のパケットであり、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定するように構成される。
【００１０】
任意選択の実現では、デバイスは、累積持続時間の値を第１閾値に直接設定し、バッファ内のパケットの記憶持続時間を記録した後に毎回、累積持続時間から各パケットの記憶持続時間を減算してもよい。累積持続時間が０以下である場合、デバイスは、パケットバックプレッシャーが発生したと決定する。この方法を使用することにより、従来技術の課題が解決されることができ、システムオーバーヘッドが減少し、パケットバックプレッシャー検出の精度が改善される。
【００１１】
任意選択の実現では、デバイスは、予め設定された条件においてバッファ内のパケット記憶の記録された累積持続時間を減少させる。減少方式は、累積持続時間を０にリセットすること、又は累積持続時間から送信されたパケットの記憶持続時間を減算することを含む。この実現では、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーがPCIeポートにおいて発生したとデバイスが決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００１２】
任意選択の実現では、デバイスは、予め設定された条件においてバッファ内のパケット記憶の累積持続時間を０にリセットする。この実現では、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーがPCIeポートにおいて発生したとデバイスが決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００１３】
任意選択の実現では、デバイスは、リセットタイマを設定し、計時を実行し、リセットタイマにより記録された時間が第２閾値に到達した場合、バッファ内のパケット記憶の累積持続時間を０にリセットする。リセットタイマは、デバイスのプロセッサによりアプリケーションプログラム命令を実行することにより実現されてもよく、或いはデバイス内のタイマとして使用されるハードウェアモジュールにより実現されてもよい。この実現では、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーがPCIeポートにおいて発生したとデバイスが決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００１４】
任意選択の実現では、リセットタイマの値は、第２閾値に直接設定されてもよく、第２閾値に基づいて次第に低下する。リセットタイマの値が０に等しくなった場合、累積持続時間は、０にリセットされる。
【００１５】
任意選択の実現では、デバイスは、バッファに記憶されているパケットの数量を記録し、記録された数量が第３閾値に到達した場合、バッファ内のパケット記憶の累積持続時間を０にリセットする。カウント機能は、デバイスのプロセッサによりアプリケーションプログラム命令を実行することにより実現されてもよく、或いはデバイス内のカウンタとして使用されるハードウェアモジュールにより実現されてもよい。この実現では、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーがPCIeポートにおいて発生したとデバイスが決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００１６】
任意選択の実現では、デバイスにより続いて記録された、バッファ内の各パケットの記憶持続時間は、持続時間キューを形成する。持続時間キューの長さが第４閾値に到達した場合、デバイスは、持続時間キューから最も早く記録された記憶持続時間を削除し、累積持続時間から、持続時間キューから削除された最も早く記録された記憶持続時間を減算する。この実現では、累積持続時間は、バッファに最近キャッシュされた指定量のパケット（指定量の値は第４閾値である）のバッファ内の記憶持続時間の和であり、パケット記憶持続時間のピーク値は、２つの統計単位内に入らず、これにより、パケット記憶持続時間のピーク値が常に検出できることが確保され、パケットバックプレッシャー検出の感度が改善される。
【００１７】
任意選択の実現では、デバイスにより続いて記録された、バッファ内の各パケットの記憶持続時間は、持続時間キューを形成する。デバイスは、持続時間キュー内の全ての持続時間を累積し、これにより、ウィンドウ持続時間を取得し、持続時間キューの長さが第４閾値に到達した場合、デバイスは、持続時間キューから最も早く記録された記憶持続時間を削除し、ウィンドウ持続時間から、持続時間キューから削除された最も早く記録された記憶持続時間を減算する。ウィンドウ持続時間が第６閾値に到達した場合、デバイスは、パケットバックプレッシャーがPCIeポートにおいて発生したと決定する。ウィンドウ持続時間は０にリセットされないため、パケット記憶持続時間のピーク値が常に検出できることが確保され、パケットバックプレッシャー検出の感度が改善される。
【００１８】
任意選択の実現では、バッファ内のいずれかのパケットの記録された記憶持続時間が第５閾値に到達した場合、デバイスは、パケットバックプレッシャーがPCIeポートにおいて発生したと決定し、第５閾値が第１閾値未満である。この実現では、いずれかのパケットの記憶持続時間が第５閾値より大きい場合、デバイスは、パケットバックプレッシャーが発生したと決定する。したがって、パケットが過度に長期間バッファにキャッシュされているが、累積持続時間が第１閾値を超えない場合、デバイスは、パケットバックプレッシャーが発生したことをできるだけ早く決定し、これにより、デバイスにより実行されるパケットバックプレッシャー検出の感度が改善される。
【００１９】
任意選択の実現では、PCIeポートの第１方向におけるパケット送信キュー内の各送信対象パケットがPCIeポートにおいて現在送信される必要があるパケットになった場合、デバイスは、第１方向において送信される必要があるパケットをバッファに記憶し、第１方向がPCIeポートのアップストリーム方向又はダウンストリーム方向である。PCIeポートの第２方向におけるパケット送信キュー内の各送信対象パケットがPCIeポートにおいて現在送信される必要があるパケットになった場合、デバイスは、第２方向において送信される必要があるパケットを第２バッファに記憶し、第２方向が第１方向と反対であり、第２バッファに記憶されたパケットは、PCIeポートを使用することにより送信された後に第２バッファから除去され、第２バッファは、いずれかの時点で最大で１つのパケットを記憶する。デバイスは、第２バッファに記憶された各パケットの記憶持続時間を記録し、第２バッファに記憶された各パケットの記録された記憶持続時間を累積し、これにより、第２バッファ内のパケット記憶の第２累積持続時間を取得する。第２累積持続時間が第１閾値に到達した場合、デバイスは、パケットバックプレッシャーがPCIeポートにおいて発生したと決定する。この実現では、デバイスは、PCIeスイッチの１つのポートのアップストリーム及びダウンストリーム方向における送信対象パケットで発生したパケットバックプレッシャーを検出することができ、これにより、パケットバックプレッシャー検出の感度及び妥当性が改善される。
【００２０】
任意選択で、第２バッファの容量は、少なくとも２つのパケットが記憶されることができることでもよく、第２バッファの容量は、キャッシュユニットの容量未満である。
【００２１】
任意選択の実現では、デバイスは、第２PCIeポートを更に含む。デバイスは、第２PCIeポートのパケット送信キュー内の各送信対象パケットが第２PCIeポートにおいて現在送信される必要があるパケットになった場合、第２PCIeポートにおいて送信される必要があるパケットを第３バッファに記憶し、第３バッファに記憶されたパケットが第２PCIeポートを使用することにより送信された後にバッファから除去され、第３バッファがいずれかの時点で最大で１つのパケットを記憶し、第３バッファに記憶された各パケットの記憶持続時間を記録し、第３バッファに記憶された各パケットの記録された記憶持続時間を累積し、これにより、第３バッファ内のパケット記憶の第３累積持続時間を取得し、第３累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーが第２PCIeポートにおいて発生したと決定するように更に構成される。この実現では、デバイスは、複数のPCIeポートにおいて発生したパケットバックプレッシャーを検出することができ、これにより、パケットバックプレッシャー検出の効率が改善される。
【００２２】
任意選択で、第３バッファの容量は、少なくとも２つのパケットが記憶されることができることでもよく、第３バッファの容量は、キャッシュユニットの容量未満である。
【００２３】
第２態様によれば、この出願は、パケットバックプレッシャー検出装置を提供し、装置は、第１態様又は第１態様の任意選択の実現のいずれか１つによる方法を実行するように構成される。具体的には、装置は、第１態様又は第１態様の任意選択の実現のいずれか１つによる方法を実行するように構成されたモジュールを含む。
【００２４】
第３態様によれば、この出願は、パケットバックプレッシャー検出デバイスを提供し、デバイスは、第１態様又は第１態様の任意選択の実現のいずれか１つによる方法を実行するように構成される。具体的には、デバイスは、バスと、バスに個別に接続されたPCIeポート、メモリ及びプロセッサとを含む。PCIeポートは、パケットを送信するように構成される。メモリは、PCIeポートのパケット送信キューを記憶するように構成される。プロセッサは、第１態様又は第１態様の任意選択の実現のいずれか１つによる方法を実行するように構成される。
【００２５】
第４態様によれば、この出願は、コンピュータプログラムを記憶するように構成されたコンピュータ読み取り可能媒体を提供し、コンピュータプログラムが第１態様又は第１態様の任意選択の実現のいずれか１つによる方法を実行するために使用される命令を含む。
【００２６】
この出願では、前述の態様において提供される実現に基づいて、組み合わせが更に行われてもよく、これにより、より多くの実現を提供する。
【図面の簡単な説明】
【００２７】
この出願の実施例における技術的解決策についてより明確に説明するために、以下に、実施例を説明するために必要な添付図面を簡単に紹介する。明らかに、以下の説明における添付図面は、この出願のいくつかの実施例のみを示しており、当業者は、創造的取り組みを行うことなく、依然としてこれらの添付図面から他の図面を導き得る。
【図１】PCIeシステムの概略図である。
【図２】従来技術におけるパケットバックプレッシャー検出方法の概略図である。
【図３】この出願の実施例によるPCIeシステムの概略図である。
【図４】この出願の実施例によるデバイス10の詳細な構成の概略図である。
【図５】この出願の実施例によるPCIeスイッチの概略構成図である。
【図６】この出願の実施例によるパケットバックプレッシャー検出方法の概略フローチャートである。
【図７】この出願の実施例によるパケットバックプレッシャー検出方法のより詳細な概略フローチャートである。
【図８】パケット記憶持続時間とパケットシーケンス番号との間の関係の図である。
【図９】この出願の実施例によるPCIeスイッチの概略図である。
【図１０】この出願の実施例によるPCIeスイッチの概略図である。
【図１１】この出願の実施例によるPCIeスイッチの概略図である。
【図１２】この出願の実施例によるパケットバックプレッシャー検出装置700の概略図である。
【図１３】この出願の実施例によるパケットバックプレッシャー検出デバイス800の概略図である。
【発明を実施するための形態】
【００２８】
この出願の実施例の理解を容易にするため、まず、以下に、PCIeシステム及び従来技術におけるパケットバックプレッシャー検出方法について説明する。
【００２９】
図１は、PCIeシステムの可能な実現の概略図である。RP110は、CPU100のPCIeポートである。SW200は、PCIeスイッチ（Switch、SW)である。UP210は、SW200のアップストリームポートであり、DP221〜DP223は、SW200のダウンストリームポートであり、EP301〜EP303は、エンドポイントデバイスである。CPU100は、複数のCPUの集合でもよい。
【００３０】
UP210は、CPU100のRP110から、CPU100によりEPに送信されるべきパケットを受信し、パケットをEPに接続されたDPに送信するように構成される。例えば、CPU100によりEP301に送信されるべきパケットを受信した後に、UP210は、パケットをEP301に接続されたDP221に送信し、パケットをEP301に送信するためにDP221を使用する。
【００３１】
DPとEPとの間のリンクが故障になった場合、CPUによりEPに送信されるべきパケットは、DPにおいて停滞し、パケットバックプレッシャーが発生する。パケットバックプレッシャーがタイムリーに発見されない場合、CPU内のパケット処理が低下するか、或いは延滞になり、深刻な命令タイムアウトでさえCPU内で発生する。結果として、CPUがハングし、正常に動作することができない。
【００３２】
図２は、従来技術におけるパケットバックプレッシャー検出方法を示す。この方法では、PCIeスイッチのDPにおける全ての送信対象パケットは、キャッシュユニットに記憶される。キャッシュユニットに記憶された各パケットについてタイマ401が設定され、キャッシュユニット内のパケットの記憶持続時間を記録するように構成される。パケットがPCIeポートから送信された後に、タイマは、パケットの記憶持続時間に対して実行される計時を終了させる。タイマ401が満了した場合、これは、パケットが過度に長期間キャッシュユニットに記憶されていることを示す。言い換えると、パケットは、タイムアウト持続時間内にPCIeポートから送信されることができず、これは、パケットバックプレッシャーがPCIeポートにおいて発生したことを示す。タイマ401は、バックプレッシャーがPCIeポートにおいて発生したことを示すエラーレポートをエラー処理ユニット402に報告する。
【００３３】
しかし、PCIeスイッチは、複数のDPを含み、複数のパケット（例えば、128個のパケット）が各DPのキャッシュユニットにキャッシュされることができる。各DPにおける各パケットについてタイマが設定された場合、大量のタイマがPCIeスイッチ内に設定される必要がある。結果として、システムオーバーヘッドが実質的に増加する。さらに、ひとたびDPとEPとの間のリンクが故障になると、DPのキャッシュユニット内のパケットに対応するタイマが満了した後に、キャッシュユニット内の大量の他のパケットに対応するタイマが次々に満了し、エラー処理ユニット402は、パケットバックプレッシャーが１つのPCIeポートにおいて発生したことを示す大量のエラーレポートを受信し、エラーレポートの連発さえ発生し、エラー処理ユニット402によるパケットバックプレッシャー問題を解決する際の困難性が増加する。結果として、デバイス内の帯域幅が過度に占有され、デバイス内のリソースが浪費され、エラー処理ユニット402によるPCIeポートにおけるパケットバックプレッシャーの正常処理が影響を受ける。
【００３４】
従来技術における前述の課題を解決するために、この出願の実施例は、パケットバックプレッシャー検出方法及び装置を提供する。以下に、添付図面及び具体的な実施例を参照して、この出願の技術的解決策について詳細に説明する。この出願の実施例及び実施例の具体的な特徴は、この出願の技術的解決策について詳細に説明することを意図するものであり、この出願の技術的解決策を限定することを意図するものではないことが理解されるべきである。この出願の実施例及び実施例の技術的特徴は、互いに矛盾しない場合、互いに組み合わされてもよい。
【００３５】
図３は、この出願の実施例におけるPCIeシステムの概略図を示す。デバイス10は、PCIeポート11を含み、デバイス20は、PCIeポート21を含む。パケットは、PCIeポート11とPCIeポート21との間のリンクを使用することにより、デバイス10とデバイス20との間で伝送される。
【００３６】
以下では、デバイス10がPCIeポート11において発生したパケットバックプレッシャーを検出する例が説明のために使用される。図４は、デバイス10の詳細な構成の概略図である。キャッシュユニット12は、PCIeポート11の送信対象パケットを記憶するように構成される。PCIeポート11のパケット送信キュー内の各送信対象パケットがPCIeポート11において現在送信される必要があるパケットになった場合、デバイス10は、現在送信される必要があるパケットをバッファ13に記憶する。バッファ13に記憶されたパケットは、PCIeポート11を使用することにより送信された後にバッファから除去される。バッファは、いずれかの時点で最大で１つのパケットを記憶する。例えば、PCIeポート11のパケット送信キューは、{パケット1,パケット2,パケット3,...}である。パケット1は、パケット送信キュー内の最初のパケット、すなわち、PCIeポートのパケット送信キュー内にあり、現在送信される必要があるパケットである。パケット1は、バッファ13に記憶される。パケット1がPCIeポート11を使用することにより送信された後に、記憶されたパケット1は、バッファ13から除去され、パケット1が送信された後に取得されたパケット送信キュー{パケット2,パケット3,...}内にあり、現在送信される必要があるパケット2が記憶され、以下同様である。バッファ13は、いずれかの時点で、PCIeポートのパケット送信キュー内にあり、現在送信される必要がある１つのパケットを記憶するように構成される。バッファ13は、記憶されたパケットがPCIeポート11から送信された後にのみ、他のパケットを記憶することができる。バッファ13は、ランダムアクセスメモリRAM又はflashのような独立したレジスタ又は他の記憶デバイスでもよく、或いはバッファ13は、レジスタ又は他の記憶デバイスを分割することにより取得された記憶領域でもよい。
【００３７】
キャッシュユニット内のパケットについて、パケットの送信順序は、要求メッセージ内で搬送されたパケット優先度に従って決定されてもよく、或いはパケットは、予め設定された仲裁ポリシーに従ってソートされてもよく、パケットは、順序に従って送信される点に留意すべきである。本発明は限定を課さない。
【００３８】
任意選択で、バッファ13の容量は、キャッシュユニット12内の少なくとも２つのパケットが記憶されることができることでもよい。複数のパケットは、キャッシュユニット12内の送信順序に従ってソートされる。例えば、図４におけるキャッシュユニット12内のパケット1及びパケット2の双方がバッファ13に記憶される。パケット1は、キャッシュユニット12のパケットキュー内の最初のパケット、すなわち、PCIeポートのパケット送信キュー内にあり、現在送信される必要があるパケットである。パケット2は、キャッシュユニット12内で送信される必要がある２番目のパケットである。デバイス10は、パケット2をバッファ13に事前に記憶し、これにより、キャッシュユニット12内の送信対象パケットを先取りし、これによって、パケット処理持続時間を減少させ、パケット処理効率を改善する。
【００３９】
プロセッサ14は、PCIeポート11において発生したパケットバックプレッシャーを検出する役目をする。具体的には、プロセッサ14は、バッファに記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポート11において発生したと決定するように構成される。
【００４０】
任意選択で、複数のパケットがバッファに記憶される場合、プロセッサ14は、バッファ内の１つのパケットの記憶持続時間を記録するように構成される。パケットは、バッファのパケットキュー内の最初のパケットである。例えば、図４に示すように、キャッシュユニット12内の送信対象パケットの順序が{パケット1,パケット2,パケット3,...}であり、２つのパケットがデバイス10に記憶されることが許可されている場合、パケット1及びパケット2がバッファ13に記憶されたとき、バッファ13のパケットキューの検出順序は、{パケット1,パケット2}であり、プロセッサ14は、パケット1の記憶持続時間を記録するように構成される。パケット1がPCIeポートから送信された後に、バッファ13のパケットキューの検出順序は、{パケット2,パケット3}であり、プロセッサ14は、パケット2の記憶持続時間を記録するように構成され、以下同様である。プロセッサ14は、バッファ13のパケットキュー内の最初のパケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポート11において発生したと決定するように構成される。
【００４１】
プロセッサ14は、処理コンポーネントでもよく、或いは複数の処理コンポーネントの集合でもよい。プロセッサ14は、特定用途向け集積回路（Application-Specific  Integrated  Circuit、ASIC）、又は本発明の解決策のプログラム実行を制御するように構成された１つ以上の集積回路でもよい。或いは、プロセッサ14は、中央処理装置CPUのような汎用プロセッサである。CPUは、デバイス10内にあり、実行可能命令を記憶するために使用されるメモリ内のアプリケーションプログラム命令を読み取り、アプリケーションプログラム命令を実行し、これにより、プロセッサ14により実現される機能を実現する。
【００４２】
パケットバックプレッシャーがPCIeポート11において発生したとデバイス10が決定する解決策では、計時は、いずれかの時点で、バッファ13に記憶されたパケットの記憶持続時間に対してのみ実行され、バッファ13に記憶されるパケットの数量は、1より大きくない。したがって、計時がPCIeポートにおける全ての送信対象パケットに対して同時に実行される従来技術の解決策に比べて、この解決策は、システムオーバーヘッドを実質的に減少させることができる。さらに、リンク障害のためパケットバックプレッシャーがPCIeポートにおいて発生した場合、デバイス10は、リンク障害について１回のみパケットバックプレッシャーエラーを生成し、これによって、エラーの連発の発生を回避し、システム安定性を改善する。さらに、パケットバックプレッシャーが発生したか否かは、バッファ内のパケット記憶の累積持続時間に従って決定されるため、以下の場合、すなわち、どのパケットの記憶持続時間も指定の閾値を超えないが、複数のパケットの記憶持続時間の累積値が過度に大きいため、デバイスが正常に動作することができないことが回避できる。
【００４３】
任意選択で、デバイス10のプロセッサ14は、累積持続時間の値を第１閾値に設定し、バッファ13内のパケットの記憶持続時間を記録した後に毎回、累積持続時間から各パケットの記憶持続時間を減算してもよい。累積持続時間が０以下である場合、デバイス10は、パケットバックプレッシャーが発生したと決定する。この方法を使用することにより、従来技術の課題が解決されることができ、システムオーバーヘッドが減少し、パケットバックプレッシャー検出の精度が改善される。
【００４４】
任意選択で、プロセッサ14は、予め設定された条件においてバッファ13内のパケット記憶の記録された累積持続時間を減少させるように更に構成され、これにより、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーがPCIeポートにおいて発生したとプロセッサ14が決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００４５】
任意選択で、プロセッサ14が予め設定された条件においてバッファ13内のパケット記憶の記録された累積持続時間を減少させる実現は、プロセッサ14が予め設定された条件においてバッファ13内のパケット記憶の累積持続時間を０にリセットすることである。
【００４６】
任意選択で、プロセッサ14が予め設定された条件においてバッファ13内のパケット記憶の累積持続時間を０にリセットする実現は、リセットタイマを設定し、計時を実行し、リセットタイマにより記録された時間が第２閾値に到達した場合、バッファ13内のパケット記憶の累積持続時間を０にリセットすることである。
【００４７】
具体的には、リセットタイマにより記録される時間は、システム実行時間であり、すなわち、リセットタイマにより記録される時間は、デバイス10が開始した後に計時を開始する。リセットタイマにより記録される時間は、各パケットがバッファに記憶される時間と、パケットがキャッシュユニットからバッファに動かされる時間と、パケットがバッファから除去される時間と、バッファがアイドルである時間とを含む、中断なしの累積時間である。プロセッサ14により記録された累積持続時間は、バッファ13内のパケットの記憶持続時間を記録するためにのみ使用され、記録時間は、複数の時間セグメントの累積である。さらに、第２閾値は、第１閾値より大きい。プロセッサ14により記録された累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーが発生したと決定されてもよいが、累積持続時間に対して処理は実行されない。リセットタイマにより記録された時間が第２閾値に到達した場合、バッファ13内のパケット記憶の累積持続時間は０にリセットされ、これにより、パケットバックプレッシャー検出の精度を改善する。
【００４８】
任意選択で、リセットタイマの値は、第２閾値に直接設定されてもよく、第２閾値に基づいて次第に低下する。リセットタイマの値が０に等しくなった場合、累積持続時間は、０にリセットされる。
【００４９】
任意選択で、プロセッサ14が予め設定された条件においてバッファ13内のパケット記憶の累積持続時間を０にリセットする実現は、バッファ13に記憶されているパケットの数量を記録し、記録された数量が第３閾値に到達した場合、バッファ13内のパケット記憶の累積持続時間を０にリセットすることである。
【００５０】
任意選択で、プロセッサ14が予め設定された条件においてバッファ13内のパケット記憶の記録された累積持続時間を減少させる実現は、以下の通りである。続いて記録された、バッファ13内の各パケットの記憶持続時間は、持続時間キューを形成する。持続時間キューの長さが第４閾値に到達した場合、プロセッサは、持続時間キューから最も早く記録された記憶持続時間を削除し、累積持続時間から、持続時間キューから削除された最も早く記録された記憶持続時間を減算する。この実現では、持続時間キューは、固定の長さを有するウィンドウに類似する。新たなパケットがバッファ13に記憶された場合、ウィンドウが移動し、これにより、累積持続時間は、バッファに最近キャッシュされた指定量のパケット（指定量の値は第４閾値である）のバッファ13内の記憶持続時間の和である。固定の長さを有するウィンドウを使用することにより、パケット記憶持続時間のピーク値は、２つの統計期間内に入らず、これにより、パケット記憶持続時間のピーク値が常に検出できることが確保され、パケットバックプレッシャー検出の感度が改善される。
【００５１】
任意選択で、プロセッサ14は、バッファ13内のいずれかのパケットの記録された記憶持続時間が第５閾値に到達した場合、パケットバックプレッシャーがPCIeポート11において発生したと決定するように更に構成され、第５閾値が第１閾値未満である。この実現では、パケットが過度に長期間バッファ13にキャッシュされているが、累積持続時間が第１閾値を超えない場合、プロセッサは、パケットバックプレッシャーがPCIeポート11において発生したことをできるだけ早く決定することができ、これにより、デバイスにより実行されるパケットバックプレッシャー検出の感度が改善される。
【００５２】
この出願のこの実施例では、デバイス10は、CPUでもよく、PCIeポート11は、CPUのルートコンプレックス（Root  Complex、RC）のルートポート（Root  Port、RP）のようなCPUのPCIeポートである。CPUに接続されたデバイス20は、スイッチ又はEPでもよい。或いは、デバイス10は、PCIeスイッチでもよく、PCIeポート11は、PCIeスイッチのUP又はDPである。PCIeポート11がUPである場合、デバイス20は、CPU又は他のスイッチのDPである。PCIeポート11がDPである場合、デバイス20は、EP又は他のスイッチのUPである。DPとして使用されるPCIeポート11が非トランスペアレント（non-transparent、NT）ポートである場合、デバイス20は、CPUでもよい。或いは、デバイス10は、EPでもよく、デバイス20は、EPに接続されたCPU又はスイッチでもよく、或いはデバイス10は、拡張PCIe構成におけるルートコンプレックス（Root  Complex、RC）として使用されるEPであり、PCIeポート11は、拡張PCIe構成におけるRCのポートであり、デバイス20は、スイッチ、他のEP又はCPUである。
【００５３】
デバイス10がPCIeスイッチである例を使用することにより、以下に、この出願の実施例において提供されるパケットバックプレッシャー検出方法について説明する。
【００５４】
図５は、この出願の実施例によるPCIeスイッチSW500の概略図である。SW500は、CPUに接続するために使用されるUP510と、EPに接続するために使用されるDP520とを含む。SW500は、少なくとも１つのDPを含んでもよく、DP520は、SW500のいずれか１つのDPである。DP520において、EPに送信されるべき１つ以上のパケットが存在し、これらのパケットは、パケット送信キューを形成する。DP520は、パケット送信キュー内のパケットの順序に従ってパケットを続いて送信する。これらの送信対象パケットは、キャッシュユニット521及びバッファ522に記憶される。バッファ522は、パケット送信キュー内の最初のパケット、すなわち、現在送信される必要があるパケットを記憶し、バッファ522は、いずれかの時点で最大で１つのパケットを記憶する。キャッシュユニット521は、２番目のパケット及びその後のパケットをパケット送信キューに記憶するように構成される。バッファ522に記憶されたパケットがDP520を使用することによりEPに送信された場合、前にキャッシュユニット521に記憶されており、最初に送信される必要があるパケットは、DP520において現在送信される必要があるパケットになり、キャッシュユニット521からバッファ522に動かされる。
【００５５】
任意選択で、バッファ522の容量は、少なくとも２つのパケットが記憶されることができることでもよい。バッファ522の容量は、キャッシュユニットの容量未満である。複数のパケットは、キャッシュユニット521内の送信順序に従ってソートされる。
【００５６】
SW500は、バッファ522に記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ522内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP520において発生したと決定するように構成されたプロセッサ530を更に含む。プロセッサ530の実現については、プロセッサ14の実現を参照する。
【００５７】
当業者は、図５が、デバイス10がPCIeスイッチである場合に使用されるパケットバックプレッシャー検出解決策の例のみを示しており、図５は、この出願の保護範囲を限定することができないことを認識し得る。例えば、DP520がNTポートである場合、DP520は、他のCPUに接続されてもよい。他の例では、バッファ522は、DP520によりUP510に送信されるべきパケットの送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。プロセッサ530は、バッファ522内のパケット記憶の累積持続時間に従って、パケットバックプレッシャーがDP520からUP510へのパケット送信方向において発生したか否かを決定する。同様に、パケットバックプレッシャー検出方法はまた、パケットバックプレッシャーがUP510からDP520へのパケット送信方向において発生したか否かを検出することにも適用可能であり、パケットバックプレッシャーがUP510からCPUへのパケット送信方向において発生したか否かを検出することに適用可能である。
【００５８】
任意選択で、デバイス10は、累積持続時間の値を第１閾値に設定し、バッファ522内のパケットの記憶持続時間を記録した後に毎回、累積持続時間から各パケットの記憶持続時間を減算してもよい。累積持続時間が０以下である場合、デバイス10は、パケットバックプレッシャーが発生したと決定する。この方法を使用することにより、従来技術の課題が解決されることができ、システムオーバーヘッドが減少し、パケットバックプレッシャー検出の精度が改善される。
【００５９】
図５において提供されるPCIeスイッチを参照して、この出願の実施例は、PCIeスイッチの第１ポートにおいて発生したパケットバックプレッシャーを検出するための方法を提供する。第１ポートは、PCIeスイッチのアップストリームポート又はダウンストリームポートのいずれかでもよい。図６を参照すると、パケットバックプレッシャー検出方法は以下のステップを含む。
【００６０】
ステップ601：第１ポートのパケット送信キュー内の各送信対象パケットが第１ポートにおいて現在送信される必要があるパケットになった場合、PCIeスイッチは、現在送信される必要があるパケットをバッファに記憶し、バッファに記憶されたパケットは、第１ポートを使用することにより送信された後にバッファから除去され、バッファは、いずれかの時点で最大で１つのパケットを記憶する。
【００６１】
具体的には、第１ポートにおいて現在送信される必要があるパケットは、第１ポートにおいて送信されていない全てのパケットの中で最初に送信されるべきパケットである。バッファは、いずれかの時点で最大で１つのパケットを記憶し、記憶されたパケットが第１ポートを使用することにより送信された後にのみ、次のパケットを記憶する。バッファの実現については、バッファ13を参照する。
【００６２】
パケットは、第１ポートのアップストリーム方向又はダウンストリーム方向に送信されてもよいため、バッファは、第１ポートの方向のうち１つにおいて現在送信される必要があるパケットを記憶するように構成される。第１ポートがアップストリームポートである場合、第１ポートのアップストリーム方向は、パケットが第１ポートからCPUに送信される方向であり、第１ポートのダウンストリーム方向は、パケットが第１ポートからPCIeスイッチのダウンストリームポートに送信される方向である。第１ポートがダウンストリームポートである場合、第１ポートのアップストリーム方向は、パケットが第１ポートからPCIeスイッチのアップストリームポートに送信される方向であり、第１ポートのダウンストリーム方向は、パケットが第１ポートからエンドポイントEPデバイスに送信される方向である。
【００６３】
ステップ602：PCIeスイッチは、バッファに記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得する。
【００６４】
例えば、時点t0の前にパケットがバッファに記憶されておらず、累積持続時間が0であることが仮定される。パケット1がt0の後の時点t1にバッファに入り、t1の後の時点t2に第１ポートから宛先エンド（例えば、EP）に送信される。バッファ内のパケット1の記録された記憶持続時間は、t2-t1であり、バッファ内のパケット記憶の累積持続時間は、t2-t1である。パケット2がt2の後の時点t3にバッファに入り、t3の後の時点t4に第１ポートから宛先エンドに送信される。バッファ内のパケット2の記録された記憶持続時間は、t4-t3であり、バッファ内のパケット記憶の累積持続時間は、(t2-t1)+(t4-t3)である。
【００６５】
PCIeスイッチがバッファに記憶された各パケットの記憶持続時間を記録することは、PCIeスイッチのプロセッサにより実現されてもよい。プロセッサは、CPUのような汎用プロセッサでもよく、バッファに記憶されたパケットに対して計時を実行する機能は、アプリケーションプログラム命令を実行することにより、プロセッサにより実現されてもよく、或いはタイマとして使用されるハードウェアモジュールを呼び出すことにより、プロセッサにより実現されてもよい。或いは、プロセッサは、ASICのような集積回路でもよく、バッファに記憶されたパケットに対して計時を実行する機能は、集積回路内の部分回路構成により実現されてもよい。
【００６６】
ステップ603：記録された累積持続時間が第１閾値に到達した場合、PCIeスイッチは、パケットバックプレッシャーが第１ポートにおいて発生したと決定する。
【００６７】
具体的には、第１閾値の具体的なデータは、デバイスにより許容されるパケット停滞度により決定されてもよく、経験値、例えば、60sに設定されてもよい。第１閾値は、初期設定でPCIeスイッチ内に設定されてもよく、或いはユーザにより設定されてもよい。例えば、PCIeスイッチのプロセッサは、構成ユニットを含み、構成ユニットは、ユーザの構成データを受信し、構成データに従って第１閾値を決定するように構成される。記録された累積持続時間が第１閾値に到達した場合、これは、第１ポートのパケット送信速度が過度に低いことを示し、プロセッサは、パケットバックプレッシャーが第１ポートにおいて発生したと決定する。
【００６８】
パケットバックプレッシャー検出方法では、１つのPCIeポートの１つの方向におけるパケットバックプレッシャーについて、計時は、いずれかの時点でバッファ内の１つのパケットの記憶持続時間に対してのみ実行される。したがって、計時がPCIeポートにおける全ての送信対象パケットに対して同時に実行される従来技術の解決策に比べて、この解決策は、システムオーバーヘッドを実質的に減少させることができる。さらに、リンク障害のためパケットバックプレッシャーがPCIeポートにおいて発生した場合、PCIeスイッチは、リンク障害について１回のみパケットバックプレッシャーエラーを生成し、これによって、エラーの連発の発生を回避し、システム安定性を改善する。さらに、パケットバックプレッシャーが発生したか否かは、バッファ内のパケット記憶の累積持続時間に従って決定されるため、以下の場合、すなわち、どのパケットの記憶持続時間も指定の閾値を超えないが、複数のパケットの記憶持続時間の累積値が過度に大きいため、パケットを送信するCPUが正常に動作することができないことが回避できる。例えば、PCIeスイッチは、10個のDPを含む。図２に示すパケットバックプレッシャー検出方法が使用される場合、各DPにおいて各パケットに対応するタイマは満了しないが、各パケットの記憶持続時間は、タイムアウト持続時間に近づく。CPUは、10個のDPにおけるパケットバックプレッシャーにより影響を受け、キャッシュユニット内の10個のDPにおけるパケットの記憶持続時間がタイムアウト持続時間に近づくため、おそらく命令タイムアウトがCPUにおいて発生する。
【００６９】
任意選択で、図７を参照すると、この出願のこの実施例において、パケットバックプレッシャー検出方法は以下のステップを更に含む。
【００７０】
ステップ604：PCIeスイッチは、予め設定された条件においてバッファ内のパケット記憶の記録された累積持続時間を減少させる。
【００７１】
ステップ604は、以下の方式を含むが、これらに限定されない複数の実現を含んでもよい。
【００７２】
方式1：PCIeスイッチは、予め設定された条件においてバッファ13内のパケット記憶の累積持続時間を０にリセットする。
【００７３】
同様に、方式1は、以下の方式を含む複数の実現を有してもよい。
【００７４】
リセット方式1では、PCIeスイッチは、リセットタイマを設定し、計時を実行し、リセットタイマにより記録された時間が第２閾値に到達した場合、バッファ内のパケット記憶の累積持続時間を０にリセットする。
【００７５】
例えば、第２閾値は600sに設定される。リセットタイマは、0sから計時を実行するのを開始し、ひとたび時間が600sに到達すると、プロセッサは、累積持続時間を０にリセットする。
【００７６】
累積持続時間を０にリセットした後に、リセットタイマは、再び０から計時を実行するのを開始する。或いは、累積持続時間を０にリセットした後に、リセットタイマは、記録された第２閾値に基づいて計時を実行し続け、計時の各時間にリセットタイマの値が第２閾値まで増加した場合、累積持続時間を０にリセットする。
【００７７】
任意選択で、リセットタイマの値は、第２閾値に直接設定されてもよく、第２閾値に基づいて次第に低下する。リセットタイマの値が０に等しくなった場合、累積持続時間は、０にリセットされる。
【００７８】
リセットタイマは、PCIeスイッチのプロセッサにより実現されてもよい。プロセッサが汎用プロセッサである場合、リセットタイマは、アプリケーションプログラム命令を実行することにより、プロセッサにより実現されてもよく、或いはタイマとして使用されるハードウェアモジュールを呼び出すことにより、プロセッサにより実現されてもよい。プロセッサがASICのような集積回路である場合、リセットタイマは、プロセッサの集積回路内の部分回路構成により実現されてもよい。
【００７９】
リセット方式2では、PCIeスイッチは、バッファに記憶されているパケットの数量を記録し、記録された数量が第３閾値に到達した場合、バッファ内のパケット記憶の累積持続時間を０にリセットする。
【００８０】
例えば、第３閾値は1024に設定される。PCIeスイッチは、バッファにキャッシュされた最初のパケットからカウントを開始し、ひとたびカウントによって取得された数量が1024に到達すると、PCIeスイッチは、バッファ内のパケット記憶の累積持続時間を０にリセットする。
【００８１】
累積持続時間を０にリセットした後に、累積持続時間が０にリセットされた後にバッファに記憶されているパケットについて、PCIeスイッチは、再び０からカウントを開始する。或いは、PCIeスイッチは、記録された第３閾値に基づいて、バッファに記憶されているパケットの数量をカウントし続け、カウントによって取得された数量が第３閾値まで増加した場合、累積持続時間を０にリセットする。
【００８２】
PCIeスイッチがバッファに記憶された全てのパケットの数量を記録することは、PCIeスイッチのプロセッサにより実現されてもよい。プロセッサが汎用プロセッサである場合、カウント機能は、アプリケーションプログラム命令を実行することにより、プロセッサにより実現されてもよく、或いはカウンタとして使用されるハードウェアモジュールを呼び出すことにより、プロセッサにより実現されてもよい。プロセッサがASICのような集積回路である場合、カウント機能は、プロセッサの集積回路内の部分回路構成により実現されてもよい。
【００８３】
リセット方式1又はリセット方式2のいずれかが実現のために選択されてもよく、或いは２つのリセット方式の双方が実現されてもよい。２つのリセット方式の双方が実現される場合、ひとたびリセットタイマにより記録された時間が第２閾値に到達すると、或いはカウントによって取得された、バッファに記憶されたパケットの数量が第３閾値に到達すると、PCIeスイッチは、リセットタイマにより決定された累積持続時間を０にリセットする。任意選択の実現では、リセットタイマにより記録された時間が第２閾値に到達した場合、PCIeスイッチは、リセットタイマにより記録された時間と、カウントによって取得された、バッファに記憶されたパケットの数量との双方を０にリセットする必要がある。カウントによって取得された、バッファに記憶されたパケットの数量が第３閾値に到達した場合、PCIeスイッチは、リセットタイマにより記録された時間と、カウントによって取得された、バッファに記憶されたパケットの数量との双方を０にリセットする必要がある。他の任意選択の実現では、リセットタイマにより記録された時間が第２閾値に到達した場合、PCIeスイッチは、リセットタイマにより記録された時間を０にリセットするが、カウントによって取得された、バッファに記憶されたパケットの数量を０にリセットしない。カウントによって取得された、バッファに記憶されたパケットの数量が第３閾値に到達した場合、PCIeスイッチは、カウントによって取得された、バッファに記憶されたパケットの数量を０にリセットするが、リセットタイマにより記録された時間を０にリセットしない。
【００８４】
バッファにキャッシュされたいずれかのパケットの記憶持続時間が０より大きいため、十分な量のパケットがバッファにキャッシュされた後、或いはパケットがバッファに十分に長期間キャッシュされた後に、バッファ内のパケット記憶の累積持続時間は、確実に第１閾値に到達することができる。この出願のこの実施例から、バッファがパケットを過度に長期間キャッシュしているため、バッファ内のパケット記憶の累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーが発生しないことが習得され得る。同様に、過大な量のパケットがバッファにキャッシュされているため、バッファ内のパケット記憶の累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーは発生しない。
【００８５】
方式1では、パケットがバッファに十分に長期間（すなわち、第２閾値）記憶された後、或いは十分な量（すなわち、第３閾値）のパケットがバッファに記憶された後に、PCIeスイッチは、バッファ内のパケット記憶の累積持続時間を０にリセットすることができ、これにより、バックプレッシャーパケット以外の過大な量の正常パケットの累積記憶持続時間が第１閾値に到達したため、パケットバックプレッシャーが第１ポートにおいて発生したとPCIeスイッチが決定する場合が回避でき、パケットバックプレッシャー検出の精度が改善される。
【００８６】
方式2では、PCIeスイッチにより続いて記録された、バッファ内の各パケットの記憶持続時間は、持続時間キューを形成する。持続時間キューの長さが第４閾値に到達した場合、PCIeスイッチは、持続時間キューから最初に記録された記憶持続時間を削除し、累積持続時間から、持続時間キューから削除された最初に記録された記憶持続時間を減算する。
【００８７】
具体的には、PCIeスイッチは、パケットの記憶持続時間をバッファに続いて記録し、記録された持続時間は、記録順序に従って持続時間キューを形成する。持続時間キューの始めの持続時間は、持続時間キュー内の最も早く記録された記憶持続時間である。例えば、まず、パケット1がバッファに記憶され、記憶持続時間はΔt1である。次に、パケット2が記憶され、記憶持続時間はΔt2である。次に、パケット3が記憶され、記憶持続時間はΔt3である。この場合、持続時間キューは、(Δt1,Δt2,Δt3)であり、持続時間キューの始めのΔt1が、持続時間キューに含まれる全ての記憶持続時間内で最も早く記録された持続時間である。第４閾値が4であることが仮定される。パケット4は、パケット3が送信された後にバッファに記憶され、リセットタイマは、パケット4の記憶持続時間Δt4を記録する。この場合、持続時間キューの長さが4に到達し、リセットタイマは、持続時間キューから最も早く記録された記憶持続時間Δt1を削除し、新たな持続時間キュー(Δt2,Δt3,Δt4)を形成する。対応して、リセットタイマにより記録された、バッファ内のパケット記憶の累積持続時間は、(Δt1+Δt2+Δt3)から(Δt2+Δt3+Δt4)に変化する。
【００８８】
図８に示すパケット記憶持続時間とパケットシーケンス番号との間の関係の図を参照すると、持続時間キューは、固定の長さを有するウィンドウに類似する。新たなパケットがバッファに記憶された場合、ウィンドウが移動し、これにより、累積持続時間は、バッファに最近キャッシュされた指定量のパケット（指定量の値は第４閾値である）のバッファ内の記憶持続時間の和である。固定の長さを有するウィンドウを使用することにより、パケット記憶持続時間のピーク値は、２つの統計単位内に入らず、これにより、パケット記憶持続時間のピーク値が常に検出できることが確保され、パケットバックプレッシャー検出の感度が改善される。
【００８９】
パケット記憶持続時間のピーク値が２つの統計単位内に入る例は以下の通りである。第３閾値が300であると仮定すると、パケットカウンタは、番号が1であるパケットからカウントを開始し、番号が300であるパケットまでカウントした場合、パケットカウンタは、リセットタイマにより決定された累積持続時間を０にリセットする。番号が1〜300であるパケットの記憶持続時間の和は、第１閾値を超えないため、パケットバックプレッシャーは検出できない。同様に、番号が600であるパケットが検出された場合、パケットカウンタは、リセットタイマにより決定された累積持続時間を０に再びリセットする。番号が301〜600であるパケットの記憶持続時間の和は、第１閾値を超えないため、パケットバックプレッシャーは検出できない。しかし、パケット記憶持続時間のピーク値は、番号が300であるパケットの近くに現れるため、実際には、番号が151〜450であるパケットの記憶持続時間の和は、既に第１閾値より大きく、パケットバックプレッシャーが既に発生している。しかし、パケット記憶持続時間のピーク値が２つの統計単位内に入るため、パケットバックプレッシャーが検出できない。
【００９０】
方式1又は方式2のいずれかが実現されてもよく、或いは２つの方式の双方が実現されてもよい。２つの方式の双方が実現される場合、第４閾値は、第３閾値未満になるように設定され、例えば、第３閾値は1024であり、第４閾値は300である。
【００９１】
或いは、方式2では、PCIeスイッチは、持続時間キュー内の全ての持続時間を累積し、これにより、ウィンドウ持続時間を取得し、持続時間キューの長さが第４閾値に到達した場合、持続時間キューから最も早く記録された記憶持続時間を削除し、ウィンドウ持続時間から、持続時間キューから削除された最も早く記録された記憶持続時間を減算する。ウィンドウ持続時間が第６閾値に到達した場合、PCIeスイッチは、パケットバックプレッシャーが第１ポートにおいて発生したと決定する。ウィンドウ持続時間は０にリセットされないため、パケット記憶持続時間のピーク値が常に検出できることが確保され、パケットバックプレッシャー検出の感度が改善される。
【００９２】
任意選択で、この出願の可能な実施例では、パケットバックプレッシャー検出方法は以下のステップを更に含む。
【００９３】
ステップ605：バッファ内のいずれかのパケットの記録された記憶持続時間が第５閾値に到達した場合、PCIeスイッチは、パケットバックプレッシャーが第１ポートにおいて発生したと決定し、第５閾値が第１閾値未満である。
【００９４】
具体的には、PCIeスイッチは、パケットキャッシュ時間の累積持続時間に従って、パケットバックプレッシャーが発生したか否かを決定することができるだけでなく、いずれかのパケットの記憶持続時間が第５閾値より大きい場合、パケットバックプレッシャーが発生したと決定することもできる。したがって、パケットが過度に長期間バッファにキャッシュされているが、累積持続時間が第１閾値を超えない場合、PCIeスイッチは、パケットバックプレッシャーが発生したことをできるだけ早く決定し、これにより、パケットバックプレッシャー検出の感度が改善される。第５閾値は、第１閾値未満であり、例えば、第１閾値は60sであり、第５閾値は5sである。
【００９５】
任意選択で、この出願のこの実施例では、パケットバックプレッシャーが発生したと決定した後に、PCIeスイッチは、パケットバックプレッシャーエラーレポートを生成し、パケットバックプレッシャーエラーレポートに従ってパケットバックプレッシャーを処理する。PCIeスイッチがパケットバックプレッシャーを処理する方式については、従来技術における様々なパケットバックプレッシャー処理方式を参照し、例えば、PCIeスイッチは、パケットバックプレッシャーが発生したリンクを切断するか、或いはメッセージ信号中断（Message  Signal  Interrupt、MSI）をCPUに送信する。さらに、PCIeスイッチにより生成されたパケットバックプレッシャーエラーレポートは、累積持続時間を第１閾値に到達させるパケットのパケットヘッダ情報を更に含んでもよい。
【００９６】
任意選択で、この出願の可能な実施例では、第２閾値〜第６閾値は、初期設定で設定されてもよく、或いはユーザにより設定されてもよい。具体的には、PCIeスイッチのプロセッサは、構成ユニットを含み、構成ユニットは、ユーザの構成データを受信し、構成データに従って第２閾値〜第６閾値を決定するように構成される。
【００９７】
任意選択で、この出願の可能な実施例では、PCIeスイッチは、同じプロセッサを使用することにより、PCIeスイッチの１つのポート（UP又はDP）のアップストリーム及びダウンストリームの２つの方向においてパケットバックプレッシャーを検出することができる。
【００９８】
図９に示すように、バッファ522は、DP520からEPへの送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。第２バッファ524は、DP520からUP510への送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。第２キャッシュユニット523は、DP520からUP510への送信方向におけるパケット送信キュー内の２番目のパケット及びその後のパケットを記憶するように構成される。プロセッサ530は、バッファ522内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、バッファ522内のパケット記憶の第１累積持続時間を取得し、第１累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP520において発生したと決定するように構成される。プロセッサ530は、第２バッファ524内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、第２バッファ524内のパケット記憶の第２累積持続時間を取得し、第２累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP520において発生したと決定するように更に構成される。
【００９９】
任意選択の実現では、プロセッサ530は、予め設定された条件において累積持続時間及び第２累積持続時間を減少させるように構成される。プロセッサ530は、方式1、方式2又は２つの方式の組み合わせを使用することにより、第１累積持続時間及び第２累積持続時間を減少させる。
【０１００】
プロセッサ530がDP520からUP510へのパケット送信方向及びDP520からEPへのパケット送信方向においてパケットバックプレッシャーを検出する実現については、ステップ601〜ステップ605の実現を参照する。詳細はここでは再び説明しない。
【０１０１】
任意選択で、この出願のこの実施例では、PCIeスイッチは、同じプロセッサを使用することにより、パケットバックプレッシャーがPCIeスイッチの異なるポートにおいて発生したことを検出することができる。
【０１０２】
図１０に示すように、バッファ522は、DP520からEP301への送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。第３バッファ552は、DP550からEP302への送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。第３キャッシュユニット551は、DP550からEP302への送信方向におけるパケット送信キュー内の２番目のパケット及びその後のパケットを記憶するように構成される。プロセッサ530は、バッファ522内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、バッファ522内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP520において発生したと決定するように構成される。プロセッサ530は、第３バッファ552内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、第３バッファ552内のパケット記憶の第３累積持続時間を取得し、第３累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP550において発生したと決定するように更に構成される。
【０１０３】
任意選択の実現では、プロセッサ530は、予め設定された条件において第１累積持続時間を減少させ、予め設定された条件において第３累積持続時間を減少させるように更に構成される。プロセッサ530は、方式1、方式2又はこれらの組み合わせを使用することにより、第１累積持続時間及び第３累積持続時間を減少させる。
【０１０４】
プロセッサ530がDP520からEP301へのパケット送信方向及びDP550からEP302へのパケット送信方向においてパケットバックプレッシャーを検出する実現については、ステップ601〜ステップ605の実現を参照する。詳細はここでは再び説明しない。
【０１０５】
任意選択で、この出願の可能な実施例では、PCIeスイッチは、異なるプロセッサを使用することにより、PCIeスイッチの異なるポートにおいて発生したパケットバックプレッシャーを検出することができる。
【０１０６】
図１１に示すように、バッファ522は、DP520からEP301への送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。第３バッファ552は、DP550からEP302への送信方向におけるパケット送信キュー内にあり、現在送信される必要があるパケットを記憶するように構成される。プロセッサ530は、バッファ522内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、バッファ522内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP520において発生したと決定するように構成される。プロセッサ540は、第３バッファ552内の各パケットの記憶持続時間を記録し、記録された記憶持続時間を累積し、これにより、第３バッファ552内のパケット記憶の第４累積持続時間を取得し、第４累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがDP550において発生したと決定するように構成される。
【０１０７】
任意選択の実現では、プロセッサ530は、予め設定された条件において第１累積持続時間を減少させるように更に構成され、プロセッサ540は、予め設定された条件において第４累積持続時間を減少させるように更に構成される。プロセッサ530及びプロセッサ540は、それぞれ、方式1、方式2又は２つの方式の組み合わせを使用することにより、第１累積持続時間及び第４累積持続時間を減少させる。
【０１０８】
プロセッサ530がDP520からEP301へのパケット送信方向においてパケットバックプレッシャーを検出する実現及びプロセッサ540がDP550からEP302へのパケット送信方向においてパケットバックプレッシャーを検出する実現については、ステップ601〜ステップ605の実現を参照する。詳細はここでは再び説明しない。
【０１０９】
図６〜図１１に対応するパケットバックプレッシャー検出方法はまた、パケットバックプレッシャーがCPU又はEPのPCIeポートにおいて発生したか否かを検出することにも適用可能である点に留意すべきである。この出願のこの実施例では、詳細はここでは再び説明しない。
【０１１０】
図１２は、この出願の実施例によるパケットバックプレッシャー検出装置700の概略図である。装置700は、PCIeポートを有するデバイスに適用され、装置700は、
【０１１１】
PCIeポートのパケット送信キュー内の各送信対象パケットがPCIeポートにおいて現在送信される必要があるパケットになった場合、送信される必要があるパケットをバッファに記憶するように構成されたキャッシュモジュール701であり、バッファに記憶されたパケットは、PCIeポートを使用することにより送信された後にバッファから除去されるキャッシュモジュール701と、
【０１１２】
バッファに記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得するように構成された計時モジュール702と、
【０１１３】
累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定するように構成された決定モジュール703とを含む。
【０１１４】
装置700は、特定用途向け集積回路（Application-Specific  Integrated  Circuit、ASIC）又はプログラマブルロジックデバイス（Programmable  Logic  Device、PLD）を使用することにより実現されてもよい。PLDは、コンプレックスプログラマブルロジックデバイス（complex  programmable  logic  device、CPLD）、フィールドプログラマブルゲートアレイ（field-programmable  gate  array、FPGA）、ジェネリックアレイロジック（generic  array  logic、GAL）又はこれらのいずれかの組み合わせでもよい。図６〜図１１に示すパケットバックプレッシャー検出方法がソフトウェアを使用することにより実現される場合、装置700及び装置700のモジュールは、ソフトウェアモジュールでもよい。
【０１１５】
任意選択で、装置700のバッファは、いずれかの時点で最大で１つのパケットを記憶する。
【０１１６】
任意選択で、装置700のバッファは、少なくとも２つのパケットを記憶してもよい。複数のパケットは、キャッシュユニット内の送信順序に従ってソートされる。バッファの容量は、キャッシュユニットの容量未満である。装置700は、バッファ内のパケットの記憶持続時間を記録し、パケットがバッファのパケットキュー内の最初のパケットであり、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定するように構成される。
【０１１７】
任意選択の実現では、デバイスは、バッファ内のパケットの記憶持続時間を記録した後に毎回、第１閾値から各パケットの記憶持続時間を減算してもよい。第１閾値が０以下である場合、デバイスは、パケットバックプレッシャーが発生したと決定する。この方法を使用することにより、従来技術の課題が解決されることができ、システムオーバーヘッドが減少し、パケットバックプレッシャー検出の精度が改善される。
【０１１８】
任意選択で、この出願のこの実施例では、装置700は、
【０１１９】
予め設定された条件において計時モジュールにより決定された累積持続時間を０にリセットするように構成された時間リセットモジュール704を更に含む。
【０１２０】
任意選択で、この出願のこの実施例では、時間リセットモジュール704は、
【０１２１】
リセットタイマを設定し、計時を実行し、リセットタイマにより記録された時間が第２閾値に到達した場合、計時モジュールにより決定された累積持続時間を０にリセットするように具体的に構成される。
【０１２２】
任意選択で、リセットタイマの値は、第２閾値に直接設定されてもよく、第２閾値に基づいて次第に低下する。リセットタイマの値が０に等しくなった場合、累積持続時間は、０にリセットされる。
【０１２３】
任意選択で、この出願の可能な実施例では、時間リセットモジュール704は、バッファに記憶されているパケットの数量を記録し、数量が第３閾値に到達した場合、計時モジュールにより決定された累積持続時間を０にリセットするように具体的に構成される。
【０１２４】
任意選択で、この出願の可能な実施例では、計時モジュール702により続いて記録された、各パケットの記憶持続時間は、持続時間キューを形成し、装置700は、
【０１２５】
持続時間キューの長さが第４閾値に到達した場合、持続時間キューから最も早く記録された記憶持続時間を削除し、計時モジュールにより決定された累積持続時間から、持続時間キューから削除された最も早く記録された記憶持続時間を減算するように構成された計時制御モジュール705を更に含む。
【０１２６】
任意選択で、この出願の可能な実施例では、決定モジュール703は、計時モジュールにより記録された、バッファ内のいずれかのパケットの記憶持続時間が第５閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定するように更に構成され、第５閾値が第１閾値未満である。
【０１２７】
装置700に含まれるモジュールの実現については、ステップ601〜ステップ605の実現を参照する。装置700は、PCIeスイッチに適用されることに限定されず、CPU又はEPにも適用され得る点に留意すべきである。
【０１２８】
図１３は、この出願の実施例によるパケットバックプレッシャー検出デバイス800の概略図である。デバイス800は、バス801と、バス801に個別に接続されたPCIeポート802、メモリ803及びプロセッサ804とを含む。
【０１２９】
PCIeポート802は、パケットを送信するように構成される。
【０１３０】
メモリ803は、PCIeポートのパケット送信キューを記憶するように構成される。
【０１３１】
プロセッサ804は、PCIeポート802のパケット送信キュー内の各送信対象パケットがPCIeポート802において現在送信される必要があるパケットになった場合、送信される必要があるパケットをバッファに記憶し、バッファに記憶されたパケットが、PCIeポート802を使用することにより送信された後にバッファから除去され、バッファに記憶された各パケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得し、累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーがPCIeポート802において発生したと決定するように構成される。
【０１３２】
任意選択で、この出願のこの実施例では、メモリ803は、命令を記憶するように更に構成される。
【０１３３】
プロセッサ804は、メモリ803に記憶された命令を実行し、これにより、プロセッサ804の機能を実現するように構成される。
【０１３４】
任意選択で、バッファは、いずれかの時点で最大で１つのパケットを記憶する。
【０１３５】
任意選択で、バッファの容量は、少なくとも２つのパケットが記憶されることができることでもよく、バッファの容量は、キャッシュユニットの容量未満である。プロセッサ804は、バッファのパケットキュー内の最初のパケットの記憶持続時間を記録し、各パケットの記録された記憶持続時間を累積し、これにより、バッファ内のパケット記憶の累積持続時間を取得するように構成される。
【０１３６】
任意選択で、この出願のこの実施例では、プロセッサ804は、予め設定された条件において累積持続時間を０にリセットするように更に構成される。
【０１３７】
任意選択で、この出願のこの実施例では、プロセッサ804は、
リセットタイマを設定し、計時を実行し、リセットタイマにより記録された時間が第２閾値に到達した場合、累積持続時間を０にリセットするように具体的に構成される。
【０１３８】
任意選択で、この出願のこの実施例では、プロセッサ804は、
バッファに記憶されているパケットの数量を記録し、数量が第３閾値に到達した場合、累積持続時間を０にリセットするように具体的に構成される。
【０１３９】
任意選択で、この出願のこの実施例では、プロセッサ804により続いて記録された、各パケットの記憶持続時間は、持続時間キューを形成し、プロセッサ804は、
【０１４０】
持続時間キューの長さが第４閾値に到達した場合、持続時間キューから最初に記録された記憶持続時間を削除し、累積持続時間から、持続時間キューから削除された最初に記録された記憶持続時間を減算するように更に構成される。
【０１４１】
任意選択で、この出願のこの実施例では、プロセッサ804は、
【０１４２】
バッファ内のいずれかのパケットの記録された記憶持続時間が第５閾値に到達した場合、パケットバックプレッシャーがPCIeポートにおいて発生したと決定するように更に構成され、第５閾値が第１閾値未満である。
【０１４３】
任意選択で、この出願のこの実施例では、デバイスは、第２PCIeポート805を更に含む。
【０１４４】
プロセッサ804は、第２PCIeポート805のパケット送信キュー内の各送信対象パケットが第２PCIeポートにおいて現在送信される必要があるパケットになった場合、第２PCIeポート805において送信される必要があるパケットを第３バッファに記憶し、第３バッファに記憶されたパケットが第２PCIeポート805を使用することにより送信された後に第３バッファから除去され、第３バッファがいずれかの時点で最大で１つのパケットを記憶し、第３バッファに記憶された各パケットの記憶持続時間を記録し、第３バッファに記憶された各パケットの記録された記憶持続時間を累積し、これにより、第３バッファ内のパケット記憶の第３累積持続時間を取得し、第３累積持続時間が第１閾値に到達した場合、パケットバックプレッシャーが第２PCIeポート805において発生したと決定するように更に構成される。
【０１４５】
デバイス800のコンポーネントの実現については、ステップ601〜ステップ605の実現を参照する。デバイス800はPCIeスイッチに限定されず、CPU又はEPでもよい点に留意すべきである。
【０１４６】
プロセッサ804は、CPUでもよく、MCPUでもよく、或いは他の汎用プロセッサ、デジタルシグナルプロセッサ（DSP）、特定用途向け集積回路（ASIC）、フィールドプログラマブルゲートアレイ（FPGA）、他のプログラマブルロジックデバイス等でもよい。汎用プロセッサは、マイクロプロセッサでもよく、或いはプロセッサは、いずれかの従来のプロセッサ等でもよい。メモリは、ユニバーサルシリアルバス（Universal  Serial  Bus、USB）フラッシュドライブ、取り外し可能ハードディスク、読み取り専用メモリ（ROM、Read-Only  Memory）、ランダムアクセスメモリ（RAM、Random  Access  Memory）、磁気ディスク又は光ディスクのような、プログラムコードを記憶することができるいずれかの媒体を含む。
【０１４７】
この出願の実施例は、サーバを提供し、サーバは、パケットバックプレッシャー検出方法を実現することができるデバイス10を含む。
【０１４８】
この出願の実施例は、ストレージコントローラを提供し、ストレージコントローラは、パケットバックプレッシャー検出方法を実現することができるデバイス10を含む。
【０１４９】
この出願の実施例は、コンピュータプログラムを記憶するように構成されたコンピュータ読み取り可能媒体を更に提供する。コンピュータプログラムは、図６又は図１１のいずれか１つに対応するパケットバックプレッシャー検出方法及び方法のいずれか任意選択の実現におけるステップを実行するための命令を含む。
【０１５０】
この出願の実施例では、前述の態様において提供される実現に基づいて、組み合わせが行われてもよく、これにより、より多くの実現を提供する。
【０１５１】
当業者は、この出願の実施例が方法、システム又はコンピュータプログラムプロダクトとして提供されてもよいことを理解するべきである。したがって、この出願は、ハードウェアのみの実施例、ソフトウェアのみの実施例又はソフトウェアとハードウェアとの組み合わせを用いた実施例の形式を使用してもよい。さらに、この出願は、コンピュータ使用可能プログラムコードを含む１つ以上のコンピュータ使用可能記憶媒体（ディスクメモリ、CD-ROM及び光メモリを含むが、これらに限定されない）上に実現されたコンピュータプログラムプロダクトの形式を使用してもよい。
【０１５２】
この出願は、この出願の実施例による方法、デバイス（システム）及びコンピュータプログラムプロダクトのフローチャート及び／又はブロック図を参照して記載されている。コンピュータプログラム命令は、フローチャート及び／又はブロック図内の各処理及び／又は各ブロック、並びにフローチャート及び／又はブロック図内の処理及び／又はブロックの組み合わせを実現するために使用されてもよいことが理解されるべきである。これらのコンピュータプログラム命令は、機械を生成するように、汎用プロセッサ、専用コンピュータ、埋め込み式プロセッサ、又は他のプログラム可能データ処理デバイスのプロセッサに提供され、これにより、コンピュータ又は他のプログラム可能データ処理デバイスのプロセッサにより実行される命令は、フローチャート内の１つ以上の処理及び／又はブロック図内の１つ以上のブロックにおける具体的な機能を実現するための装置を生成する。
【０１５３】
明らかに、当業者は、この出願の精神及び範囲を逸脱することなく、この出願に様々な変更及び変形を行うことができる。この出願は、この出願の以下の特許請求の範囲及びこれらの均等技術により規定される範囲内に入る限り、この出願のこれらの変更及び変形をカバーすることを意図する。
【図１】
0006660400.tif 000002
【図２】
0006660400.tif 000003
【図３】
0006660400.tif 000004
【図４】
0006660400.tif 000005
【図５】
0006660400.tif 000006
【図６】
0006660400.tif 000007
【図７】
0006660400.tif 000008
【図８】
0006660400.tif 000009
【図９】
0006660400.tif 000010
【図１０】
0006660400.tif 000011
【図１１】
0006660400.tif 000012
【図１２】
0006660400.tif 000013
【図１３】
0006660400.tif 000014