Runbook: SmartSwitch DPU の graceful shutdown が完了しない¶
実行前提
DPU の shutdown は当該 DPU に hosting されている ENI / VNET datapath を即時停止する。SDN controller 側で session migration が完了していない状態での shutdown は VM 通信断につながる。実行前に controller 側で ENI を別 DPU へ migration し、show dash eni で対象 DPU 上の ENI が 0 になったことを確認してから shutdown する。ロールバックは config chassis modules startup DPU<n>、ただし保留中フローは復元できない。
症状¶
config chassis modules shutdown DPU0がタイムアウトshow chassis modules statusでoper_statusがOnlineのまま- shutdown 後も DPU プロセスが残り CPU を消費
想定原因(優先度順)¶
- active ENI / flow 残存: drain 完了前に shutdown 要求
- chassisd ↔ DPU 内部 RPC タイムアウト
- STATE_DB の状態遷移が遅延:
CHASSIS_MODULE_TABLE更新詰まり - PCIe / power 制御コマンドの失敗: platform plugin の異常
- 暴走プロセスが SIGTERM を無視
切り分け手順¶
flowchart TD
A[DPU の graceful shutdown が失敗] --> B{NPU から shutdown 要求送出?}
B -- No --> B1[chassisd / dpu_mgr のログを確認]
B -- Yes --> C{DPU 側 ack 返却?}
C -- No --> C1[PCIe / 制御チャネルの疎通確認]
C -- Yes --> D{drain 完了したか?}
D -- No --> D1[traffic drain の閾値・timeout を見直し]
D -- Yes --> E[最終的に強制 shutdown を実施]
確認コマンド¶
1. 現状¶
show chassis modules status
show chassis modules midplane-status
sonic-db-cli STATE_DB hgetall "CHASSIS_MODULE_TABLE|DPU0"
sonic-db-cli CHASSIS_STATE_DB hgetall "CHASSIS_MIDPLANE_TABLE|DPU0"
2. DPU 上の ENI 残¶
3. chassisd ログ¶
4. DPU 内部状態¶
5. PCIe¶
対処方法¶
- ENI 残: controller 側で migration を実行、完了後に再 shutdown
- chassisd 詰まり:
docker restart pmon(注意: 他センサ / fan / xcvrd も再起動される) - 強制 shutdown:
config chassis modules shutdown DPU0 -f(対応 utilities 版でのみ。ロールバック:config chassis modules startup DPU0、ただしフロー復元不可) - platform plugin 異常: ベンダ提供 plugin の log と GitHub Issue で確認
関連ページ¶
引用元¶
-
sonic-net/sonic-platform-daemons @ master — chassisd ↩
-
sonic-net/sonic-utilities @ master — chassis_modules.py ↩