Runbook: CRM (Critical Resource Monitor) で threshold 越えアラートが出る¶
実行前提
本ページは原則として観測・整理系の手順だが、config bgp shutdown all / config interface shutdown / 大量 route 削除など、リソース解放のために実行する操作はトラフィック断を伴う。実行前に影響範囲を controller / NOC と合意し、ロールバック手順(config bgp startup all / config interface startup <if> / 退避済み route の再投入)を準備すること。
症状¶
- syslog に
CRM_THRESHOLD_EXCEEDED/THRESHOLD_TYPE_USEDが出力される - 新しい route / nexthop / FDB エントリが ASIC に書けず
SAI_STATUS_TABLE_FULL crm show resources allのUsedがAvailableに迫っている
想定原因(優先度順)¶
- ASIC 容量に対する実需要超過: route テーブル / FDB の物理上限
- threshold 設定が低すぎる: high=70% など過敏設定で誤検知
- leak: orchagent が delete を ASIC に流していない(programming bug / syncd 詰まり)
- 特定 resource 種別の偏り: ACL counter / mirror / Nexthop group が過大
- multi-asic で 1 ASIC に偏った programming
切り分け手順¶
flowchart TD
A[CRM threshold 超過アラート] --> B{どのリソース?}
B -- ROUTE/NEIGHBOR --> B1[BGP/ARP 学習量と max を比較]
B -- ACL_ENTRY/COUNTER --> B2[ACL_TABLE 数を整理]
B -- NEXTHOP/GROUP --> B3[ECMP group merge / nh 数削減]
B -- FDB --> B4[VLAN aging / mac 学習量確認]
B1 --> C[crm config threshold で適正値を設定]
B2 --> C
B3 --> C
B4 --> C
確認コマンド¶
1. 現在の使用量¶
Used/Available/% Usedを確認
2. resource 種別の内訳¶
crm show resources ipv4 route
crm show resources ipv4 nexthop
crm show resources fdb
crm show resources acl-group
crm show resources acl-table
3. COUNTERS_DB / ASIC_DB 突合¶
sonic-db-cli COUNTERS_DB hgetall "CRM:STATS"
sonic-db-cli ASIC_DB keys "ASIC_STATE:SAI_OBJECT_TYPE_ROUTE_ENTRY:*" | wc -l
- COUNTERS_DB と ASIC_DB の実数が乖離 → orchagent / syncd の leak 可能性
4. 閾値の妥当性¶
- 期待:
*_threshold_type=percentage、*_high_threshold/*_low_thresholdがモデルに合っている
5. orchagent ログ¶
対処方法¶
- 実需要超過: route summarization、不要 nexthop の削減、ACL の集約
- threshold 調整:
crm config thresholds ipv4 route high 85等で適正化(ロールバック: 元値を控えて同コマンドで戻す) - leak 疑い:
docker restart swssは影響が極めて大きい。先にsonic-db-cliで APPL_DB と ASIC_DB の差分を取得しベンダ / コミュニティに報告 - multi-asic 偏り: ECMP hash の見直し、internal BGP の announce 制御
- ACL counter 過剰: 未使用 ACL rule の整理、
SAI_ACL_COUNTER不要分の解放
確認¶
対処後の正常化を以下で裏取りする。
- 症状解消: 「症状」節で挙げた事象 (counter / log / state) が回復していること
- 再発監視: 数分〜数十分の間隔で同コマンドを再実行し、値がフラップしていないこと
- 副作用なし: 関連サブシステム (syslog /
show interfaces counters errors/show ip bgp summary等) に新規 error が出ていないこと - 永続化:
sudo config save -y済みでconfig_db.jsonに変更が反映されていること (恒久対処の場合)
短時間で再発する場合は「想定原因」リストの次候補に進む。
関連ページ¶
引用元¶
-
sonic-net/sonic-swss @ master — crmorch.cpp ↩
-
sonic-net/sonic-utilities @ master — crm/main.py ↩