コンテンツにスキップ

config pfcwd サブコマンド

概要

config pfcwdPFC watchdog の設定操作を pfcwd 実行ファイルへ委譲するラッパー。Click 側で範囲・選択肢を検証し、実際の CONFIG_DB 更新や daemon 連携は pfcwd 側が担う1

コマンド一覧

コマンド 用途
config pfcwd start [options] <ports>... <detection-time> port 群で PFC watchdog を開始
config pfcwd stop PFC watchdog を停止
config pfcwd interval <poll_interval> counter polling 間隔を設定
config pfcwd counter_poll enable\|disable counter polling を有効/無効化
config pfcwd big_red_switch enable\|disable BIG_RED_SWITCH mode を有効/無効化
config pfcwd pfc_stat_history enable\|disable [ports]... historical statistics を有効/無効化
config pfcwd start_default default 設定で PFC watchdog を開始

各コマンドの詳細

config pfcwd start

用法:

config pfcwd start [--action drop|forward|alert]
                   [--restoration-time <100-60000>]
                   [--pfc-stat-history]
                   [--verbose]
                   <ports>... <detection-time>

<detection-time> は 100-5000 ms。--restoration-time は 100-60000 ms。ports には個別 port または all を渡す想定で、CLI は pfcwd start ... を組み立てて実行する2

その他の設定

  • stoppfcwd stop を実行する。
  • interval <poll_interval> は 100-1000 ms の範囲を Click で検証し、pfcwd interval <poll_interval> を実行する。
  • counter_poll, big_red_switch, pfc_stat_historyenable / disable のみ受け付ける。
  • start_defaultpfcwd start_default を実行する。

注意

  • このページで扱う config pfcwd は wrapper であり、DB table 名や永続化の詳細は pfcwd 側の実装に依存する。
  • show pfcwd config / show pfcwd stats も同じ pfcwd 実行ファイルへ委譲される。

関連リファレンス

  • (関連リンクなし)

引用元

データフロー (手動作成)

flowchart LR
  CLI["config pfcwd"]
  PW["pfcwd<br/>(scripts/pfcwd)"]
  CDB[("CONFIG_DB<br/>PFC_WD")]
  DM["pfcwd_orch / pfc_actions"]
  CLI --> PW
  PW --> CDB
  CDB --> DM

凡例

config 系 (CLI → pfcwd → CONFIG_DB → daemon) のミニ図。CONFIG_DB を直接介さないコマンドのため手動で記述。

関連 Topics

運用ヒント

典型的な利用シーン

  • PFC watchdog の有効化、polling interval / detection-time / restoration-time の調整。
  • deadlock 検出時の counters 取得。

よくある落とし穴

  • PFC が有効でない queue に対して PFCWD を設定しても検知されない。
  • forward action を選ぶと PFC 自体が無効化されるため、輻輳の影響範囲が広がる。
  • config pfcwd interval が TypeError でクラッシュする (issue #4535): pfc_stat_history 系コマンドが detection_time / restoration_time を持たない PFC_WD エントリを生成した場合、int(None) で例外が発生して polling interval を更新できなくなる。回避策: redis-cli -n 4 DEL "PFC_WD|EthernetX" で問題エントリを削除してから再試行する。
  • polling interval > detection time が無検証で受け付けられる (issue #4520): polling interval を先に大きな値に設定した後、detection time が小さいポートで pfcwd を有効化しても CLI はエラーを返さない。interval ≤ 最小 detection time となるよう手動で整合性を確認すること。

関連する show / debug

show pfcwd config
show pfcwd stats
show pfc counters

関連 CLI コマンド


  1. config pfcwd グループと各 command は config/main.py の PFC watchdog セクションで定義される。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L3450 

  2. start は Click の range/choice 検証後、pfcwd start に引数を渡す。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L3454