コンテンツにスキップ

SCHEDULER テーブル

概要

キュー / ポートに適用するスケジューラ(DWRR / WRR / STRICT)と dual-rate token bucket policer (CIR / PIR / CBS / PBS) のプロファイルを保持する1qosorchSAI scheduler を生成、QUEUE.scheduler から leafref で参照される。

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

flowchart LR
  CDB[("CONFIG_DB<br/>SCHEDULER")]
  DM["QosOrch"]
  CDB --> DM
  SAI["SAI<br/>sai_scheduler_api"]
  DM --> SAI

凡例

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

key 構造

SCHEDULER|<name>

フィールド一覧

フィールド 必須 デフォルト 説明
name (key) string - スケジューラ名
type enum DWRR/WRR/STRICT - WRR スケジューリングアルゴリズム
weight uint8 (1..100) - 1 重み(DWRR/WRR で使用)
priority uint8 (0..9) - - 優先度
meter_type enum packets/bytes - bytes meter 単位
cir uint64 - - committed information rate(Bps or Pps)
pir uint64 - - peak information rate。cir > 0 必須、pir >= cir
cbs uint32 - - committed burst size。cir > 0 必須
pbs uint32 - - excess/peak burst size。pir > 0 必須、pbs >= cbs

制約 (must)

  • pir 単独設定禁止(cir 必須・cir > 0
  • pir >= cir
  • cbs 単独設定禁止(cir 必須)
  • pbs 単独設定禁止(pir 必須)、pbs >= cbs

購読者

  • qosorch: SAI scheduler を生成

関連 CONFIG_DB / YANG / CLI

  • 関連 CONFIG_DB: QUEUEPORT_QOS_MAP
  • 関連 CLI: なし
  • 関連 YANG: sonic-scheduler

関連リファレンス

引用元

関連 Topics

運用ヒント

典型値

  • key 形式: SCHEDULER|<name> (例 scheduler.0)。
  • type: STRICT / DWRR / WRR
  • weight: 1..100。
  • meter_type / pir (shaping 用)。

よくある誤設定

  • type: STRICT を全 queue に設定すると低優先 queue が永遠に starve。

確認コマンド

sonic-db-cli CONFIG_DB keys 'SCHEDULER|*'
show queue counters

値依存挙動マトリクス

type 値別挙動

SAI 変換 挙動
DWRR SAI_SCHEDULING_TYPE_DWRR 重み付きデフキュー方式。weight フィールドを帯域比率として使用。
WRR SAI_SCHEDULING_TYPE_WRR 重み付きラウンドロビン。weight フィールドを使用。
STRICT SAI_SCHEDULING_TYPE_STRICT 厳格優先。weight は無視。上位優先度 queue が常に先処理。全 queue に設定すると低優先が starve。
その他 なし SWSS_LOG_ERROR("Unknown scheduler type value:%s")task_invalid_entry。エントリ破棄、SAI 非反映。

meter_type 値別挙動

SAI 変換 挙動
packets SAI_METER_TYPE_PACKETS CIR/PIR の単位をパケット数として解釈。
bytes SAI_METER_TYPE_BYTES CIR/PIR の単位をバイト数として解釈(デフォルト)。

例外条件・特殊挙動

  • type フィールドが未知の値: typeDWRR / WRR / STRICT 以外の場合 SWSS_LOG_ERROR("Unknown scheduler type value:%s") を出して task_invalid_entry を返す。エントリは破棄されて SAI には反映されない。2
  • SAI scheduler profile 作成失敗: sai_scheduler_api->create_scheduler() が失敗した場合 SWSS_LOG_ERROR("Failed to create scheduler profile") で処理中断。2
  • SAI scheduler profile 削除失敗: QUEUE から参照されている SCHEDULER プロファイルを削除しようとすると SAI が EBUSY 等を返し SWSS_LOG_ERROR("Failed to remove scheduler profile") となる。CONFIG_DB からは削除されても ASIC には古いプロファイルが残留する。2
  • weight のオーバーフロー: weight フィールドは uint8 にキャストされるため 0-255 の範囲外は暗黙に切り捨てられる(バリデーションなし)。2
  • QUEUE 参照がある間は削除不可: QUEUE が参照している SCHEDULER を削除すると SAI レイヤで失敗する。QUEUE の参照を先に外してから削除する必要がある。2