73 lines
4.6 KiB
Markdown
73 lines
4.6 KiB
Markdown
|
|
---
|
|||
|
|
tags: []
|
|||
|
|
date created: 星期三, 十一月 26日 2025, 11:02:01 晚上
|
|||
|
|
date modified: 星期三, 十一月 26日 2025, 11:03:40 晚上
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
# 2.6 工程基线总结报告 - 时序同步与数据一致性
|
|||
|
|
|
|||
|
|
**适用范围**: 全系统(时钟源管理 + 数据流打点 + 算法时空对齐 + 延迟监控)
|
|||
|
|
|
|||
|
|
## 1. 核心架构基线 (Core Architecture Baselines)
|
|||
|
|
|
|||
|
|
本章节构建了一套从物理层到应用层、从硬件时钟到算法逻辑的严密时空治理体系。核心目标是确保分布式相控阵雷达在微秒级精度下的**时空一致性 (Spatiotemporal Coherence)**。
|
|||
|
|
|
|||
|
|
| 决策领域 | 核心基线 (Baseline Established) | 关键技术特征 (Key Specs) | 设计意图/依据 |
|
|||
|
|
| :--- | :--- | :--- | :--- |
|
|||
|
|
| **2.6.1 时钟源** | **HW PTP + TSC 软时钟** | IEEE 1588v2 (真值) + CPU TSC (极速读取) + 动态校准回路。 | 解决“高精度”与“低开销”的矛盾,提供纳秒级读取速度与亚微秒级同步精度。 |
|
|||
|
|
| **2.6.2 打点策略** | **入站即决 (Ingress Timestamping)** | 优先硬件 TSU,兜底内核 `SO_TIMESTAMPNS`。**不可变出生时间戳**。 | 消除 OS 调度与应用层排队带来的不确定性抖动,确立全链路时间基准 (T0)。 |
|
|||
|
|
| **2.6.3 对齐机制** | **原地乱序重组 (In-Place Scatter)** | `Addr = Base + PulseIdx * Pitch`。双触发提交 (满额/超时)。 | 在 1GbE 受限网络环境下,以 O(1) 复杂度处理乱序与抖动,保障 FFT 相干性。 |
|
|||
|
|
| **2.6.4 融合策略** | **异步外推 (Extrapolate to Meas)** | $\Delta t = t_{meas} - t_{track}$。**丢弃乱序 (Drop OOSM)**。 | 尊重数据的物理生成时间,消除处理延迟对状态估计的污染,适配相控阵异步体制。 |
|
|||
|
|
| **2.6.5 延迟审计** | **逐级埋点 (Granular Checkpointing)** | 5 个关键检查点。**P99 & Jitter** 监控。触发热节流。 | 建立系统性能的“心电图”,实现从“定性感觉”到“定量观测”的转变。 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 关键技术规范详解
|
|||
|
|
|
|||
|
|
### 2.6.1 高精度统一时钟源 (Unified Clock)
|
|||
|
|
|
|||
|
|
- **物理层**: 依赖 `linuxptp` (`ptp4l` + `phc2sys`) 将网卡 PHC 同步至 GPS/北斗主时钟。
|
|||
|
|
- **应用层**: 封装 `HighPrecisionClock` 类。
|
|||
|
|
- **读取**: 使用 `rdtsc` 指令 (开销 < 20ns)。
|
|||
|
|
- **校准**: 后台线程每秒运行,计算线性映射 $T = T_{base} + \alpha \cdot (TSC - TSC_{base})$,并执行**平滑 (Slewing)** 以保证单调性。
|
|||
|
|
|
|||
|
|
### 2.6.2 多级打点策略 (Timestamping)
|
|||
|
|
|
|||
|
|
- **生成**: 在 `DataReceiver` I/O 线程通过 `recvmmsg` 的辅助数据 (`CMSG`) 提取内核/硬件时间戳。
|
|||
|
|
- **流转**: 该时间戳写入 `RawDataPacket.header.timestamp_us`,在后续的信号处理、点迹提取、航迹关联中**全程透传**,严禁被“当前系统时间”覆盖。
|
|||
|
|
|
|||
|
|
### 2.6.3 CPI 对齐机制 (Alignment)
|
|||
|
|
|
|||
|
|
- **容器**: 预分配页锁定内存池 (`MemoryPool`)。
|
|||
|
|
- **写入**: 基于 UDP 包头的 `PulseIndex` 直接计算内存偏移量,**零拷贝**写入。
|
|||
|
|
- **容错**:
|
|||
|
|
- **抖动窗**: 允许首包到达后 10% CPI 时长的等待。
|
|||
|
|
- **丢包**: 丢包率 < 5% 时执行**零填充 (Zero Padding)** 并标记降级;> 5% 时整块丢弃。
|
|||
|
|
|
|||
|
|
### 2.6.4 航迹关联与更新 (Association)
|
|||
|
|
|
|||
|
|
- **核心算子**: `KalmanFilter::predict(dt)`。
|
|||
|
|
- **逻辑**: 始终将航迹状态(老)外推到量测时间(新)。
|
|||
|
|
- **防护**:
|
|||
|
|
- **乱序保护**: 若 $t_{meas} < t_{track}$,直接丢弃量测,不执行回溯滤波。
|
|||
|
|
- **跳变保护**: 若 $\Delta t > 10s$,触发时钟故障告警,执行强制重置。
|
|||
|
|
|
|||
|
|
### 2.6.5 全链路审计 (Auditing)
|
|||
|
|
|
|||
|
|
- **指标**:
|
|||
|
|
- **Rx Latency**: $T_{Dispatch} - T_{Ingress}$ (组包耗时)
|
|||
|
|
- **Queue Latency**: $T_{AlgoStart} - T_{Dispatch}$ (排队耗时 -> 核心拥塞指标)
|
|||
|
|
- **Compute Latency**: $T_{AlgoEnd} - T_{AlgoStart}$ (算力耗时)
|
|||
|
|
- **Total Residence**: $T_{Egress} - T_{Ingress}$ (全系统驻留时间)
|
|||
|
|
- **闭环**: `Queue Latency` P99 > 阈值 $\rightarrow$ 触发 `SystemOverloadEvent` $\rightarrow$ 启动流量整形。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 风险与应对 (Risk Mitigation)
|
|||
|
|
|
|||
|
|
| 潜在风险 | 现象 | 应对/缓解措施 |
|
|||
|
|
| :--- | :--- | :--- |
|
|||
|
|
| **PTP 失锁** | `timestamp_us` 精度退化至毫秒级。 | 监控 `ptp4l` 的 RMS 误差。若失锁,数据包标记 `TIME_LOW_PRECISION`,显控端降级显示或告警。 |
|
|||
|
|
| **TSC 漂移** | 不同 CPU 核之间时间微弱不同步。 | 确认 CPU 支持 `constant_tsc` 和 `nonstop_tsc` 特性。在校准算法中引入异常值剔除。 |
|
|||
|
|
| **严重乱序** | 网络拥塞导致大量 OOSM 丢弃。 | 增大 2.6.3 的抖动等待窗口(牺牲延迟换取完整性);检查交换机 QoS 配置。 |
|