Skip to content

数据模型与落盘规范

Run 目录结构(必须)

每次运行输出一个目录:

runs/<run_id>/
  scenario.yaml
  strategy.json
  versions.json
  schedule_decisions.csv
  traces.csv
  metrics.csv
  report.md

其中:

  • scenario.yaml:本次运行使用的场景快照
  • strategy.json:策略 id 与参数快照
  • versions.json:可复现所需的版本与环境信息
  • schedule_decisions.csv:每步的调度决策与调度开销
  • traces.csv:包级别原始事件(发送/接收)
  • metrics.csv:聚合指标(按 step 或窗口)
  • report.md:本次 run 的关键统计与图表

versions.json(最小字段)

  • git_commit:代码提交版本
  • python_version:Python 版本
  • deps:关键依赖版本(可用 pip freeze 的子集)
  • unet_cmd:UNET 启动命令(如适用)
  • unet_host / unet_port
  • scenario_id / strategy_id / seed / K / delta_t_s

Payload Header 协议(24 bytes,little-endian)

为保证跨 UNET 版本/事件字段差异时仍能稳定计算指标,发送 payload 前增加固定头部:

  • run_id:uint32
  • step_id:uint32
  • seq:uint32
  • tx_time_ms:uint64
  • src:uint16
  • dst:uint16

编码:

  • struct.pack('<IIIQHH', run_id, step_id, seq, tx_time_ms, src, dst)
  • payload = header + user_data

traces.csv(建议字段)

最小建议字段(能拿到多少写多少,拿不到留空):

  • t_tx_ms:发送时间(来自 header.tx_time_ms)
  • t_rx_ms:接收时间(来自系统采集或 wall-clock)
  • run_id / step_id / seq
  • src / dst
  • payload_len:user_data 长度
  • ok:是否成功(若无显式失败,可用“未收到”推断)
  • meta_json:扩展字段(SNR/RSSI/agent/service 等)

metrics.csv(建议字段)

按 step 聚合或按窗口聚合,建议字段:

  • step_id
  • throughput_bps
  • loss_rate
  • delay_p50_ms / delay_p95_ms
  • sync_error_ms
  • schedule_overhead_ms