コンテンツにスキップ

FLEX_COUNTER_TABLE テーブル

概要

orchagent / syncd に対し、各種ハードウェアカウンタのポーリング有効化と周期、bulk API のチャンクサイズを指定するテーブル1syncdFlexCounter モジュールがこのテーブルを購読し、SAI bulk counter API の周期呼び出しスケジュールを切り替える。fast-reboot 時の FLEX_COUNTER_DELAY_STATUS = true で system-ready まで停止可能。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>FLEX_COUNTER_TABLE")]
  DM["syncd"]
  CDB --> DM
  SAI["SAI<br/>sai_*_stats"]
  DM --> SAI

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

FLEX_COUNTER_TABLE|<group>

<group> は固定の counter グループ名。23 グループ前後が YANG で定義される(下表)。

共通フィールド

各グループ共通でとりうる leaf:

フィールド 説明
FLEX_COUNTER_STATUS enum enable/disable ポーリング有効化
FLEX_COUNTER_DELAY_STATUS boolean_type system-ready まで起動遅延
POLL_INTERVAL uint32 (100..2^32-1) [ms] ポーリング間隔
BULK_CHUNK_SIZE uint32 (1..2^32-1) 1 回の bulk API で扱うエントリ数
BULK_CHUNK_SIZE_PER_PREFIX string プレフィクス別 bulk チャンクサイズ

各グループは上記のうち一部のみ持つ(例: PFCWDFLEX_COUNTER_STATUSFLEX_COUNTER_DELAY_STATUS のみ)。

主なグループ

グループ 対象
BUFFER_POOL_WATERMARK バッファプール watermark
DEBUG_COUNTER drop reason 等のデバッグカウンタ
ENI DASH ENI カウンタ
DASH_METER / HA_SET DASH 関連
PFCWD PFC watchdog
PG_DROP / PG_WATERMARK priority group ドロップ / watermark
PORT / PORT_RATES / PORT_BUFFER_DROP / PORT_PHY_ATTR ポート系
QUEUE / QUEUE_WATERMARK キュー系
RIF / RIF_RATES router-interface 系
ACL ACL ヒットカウンタ
FLOW_CNT_TRAP host-IF trap flow
FLOW_CNT_ROUTE route flow(FLOW_COUNTER_ROUTE_PATTERN と連携)
TUNNEL tunnel 系
WRED_ECN_QUEUE / WRED_ECN_PORT WRED/ECN マーキング
SRV6 SRv6
SWITCH スイッチレベルグローバル

関連サブテーブル

  • FLOW_COUNTER_ROUTE_PATTERN (key: ip_prefix): default VRF のルートフロー対象パターン
    • max_match_count (uint32, 1..50): バインドする最大ルート数
  • FLOW_COUNTER_ROUTE_PATTERNVRF 版 list (key: vrf_name, ip_prefix): VRF / VNET 名スコープ

購読者

  • syncdFlexCounter: SAI bulk counter API スケジュール
  • FlexCounterOrch (orchagent 内)
  • pfcwdwatermarkmgr 等のカウンタ依存モジュール

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: FLOW_COUNTER_ROUTE_PATTERNCOUNTERS_DB(実カウンタ値の読み出し先)
  • 関連 CLI: counterpoll <group> enable/disablecounterpoll <group> interval <ms>
  • 関連 YANG: sonic-flex_counter

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: FLEX_COUNTER_TABLE|<group> (PORT / QUEUE / PG_WATERMARK / RIF 等)`。
  • FLEX_COUNTER_STATUS: enablePOLL_INTERVAL: 1000〜10000ms。

よくある誤設定

  • POLL_INTERVAL を極端に短く(100ms 等)するとカウンタ集計で CPU が貼り付く。

確認コマンド

sonic-db-cli CONFIG_DB keys 'FLEX_COUNTER_TABLE|*'
counterpoll show

値依存挙動マトリクス

FLEX_COUNTER_STATUS

グループ 挙動
enable PORT m_port_counter_enabled = true → ポート統計 COUNTER_ID_LIST を投入
enable PORT_BUFFER_DROP m_port_buffer_drop_counter_enabled = true
enable QUEUE m_queue_enabled = true → キュー COUNTER_ID_LIST を投入
enable QUEUE_WATERMARK m_queue_watermark_enabled = true
enable PG_DROP m_pg_enabled = true
enable PG_WATERMARK m_pg_watermark_enabled = true
enable WRED_ECN_PORT m_wred_port_counter_enabled = true
enable WRED_ECN_QUEUE m_wred_queue_counter_enabled = true
enable RIF gIntfsOrch に COUNTER_ID_LIST を渡す
enable BUFFER_POOL_WATERMARK gBufferOrch に通知
enable TUNNEL vxlan_tunnel_orch に通知
enable FLOW_CNT_ROUTE m_route_flow_counter_enabled = true
disable 全グループ 対応カウンタを停止。FLOW_CNT_ROUTEm_route_flow_counter_enabled = false
未設定 全グループ デフォルト disable("counters are disabled for polling by default")

例外条件・特殊挙動

条件 挙動
BUFFER_QUEUE / BUFFER_PG key 形式不正 SWSS_LOG_ERROR("Invalid BUFFER_QUEUE key: [%s]") → エントリスキップ
queue / PG インデックスが非整数 std::invalid_argument をキャッチし SWSS_LOG_ERROR → そのポートのカウンタ設定は適用されない
FLEX_COUNTER_STATUS 未設定 デフォルト disable。エントリがなければカウンタ収集は行われない
create_only_config_db_buffers フラグ読み取りエラー SWSS_LOG_ERROR → バッファカウンタ関連設定がデフォルト動作になる可能性
POLL_INTERVAL の極端な短縮 コード上バリデーションなし。100ms 等ではカウンタ集計で orchagent / syncd CPU が貼り付くリスク