Skip to content

Issue 7:实现调度决策明细追踪,支持策略比较与事后调试 #1491

@iliujunn

Description

@iliujunn

涉及文件: runtime.pyV1RuntimeHost)、client/inspect.py

问题描述:

可解释调度是 SAGE 调度层的一等设计目标:每次调度决策应记录结构化追踪(约束集、候选集、评分、最终选择),并支持在替代策略下重放追踪记录进行策略比较。当前 _scheduler_observability 只维护 6 个聚合计数器(selection_totalfallback_count 等),完全无法支撑上述能力。

需要实现的内容:

  • SchedulingDecisionRecord:结构化记录每次 backend 选择的决策明细,字段至少包含:decision_idrequest_id(或关联上下文)、timestamp_mscandidates(候选 backend 列表及其当时的队列深度/负载指标)、filters_applied(过滤步骤及过滤原因)、selected_backend_idselection_reason(例如:"min_queue_depth")、fallback(是否触发了 fallback 及原因)、spillover(是否触发远端 spillover)、policy(本次使用的调度策略名称)。
  • V1RuntimeHost 的调度路径中创建 SchedulingDecisionRecord,存入有界循环缓冲区(类似 _runtime_state_query_auditdeque(maxlen=...))。在更新 _scheduler_observability 聚合计数器的同时,写入结构化记录。
  • V1RuntimeInspector.query_scheduling_decisions() 中暴露读取接口,支持按 request_idbackend_idpolicy 或时间窗口查询调度记录,返回有序结果列表。
  • 策略重放(policy replay)为可选高级能力:给定一段历史决策记录和一个替代策略配置,模拟若使用该策略会得到哪些不同的 backend 选择,从而支持 "FIFO → LoadAware 会改变哪些决策" 类型的分析。

任务目标: 让单次调度决策可追踪、可查询,从根本上实现 SAGE 可解释调度的设计目标,并为尾延迟事故的事后分析提供结构化证据。

完成标准: SchedulingDecisionRecord 结构化记录包含 candidates、filters、selection_reason、fallback、policy 等字段,写入有界缓冲区后可通过 V1RuntimeInspector 按 request_id 或时间窗口查询。


父 Issue: #1484

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions