实时优化: 链路延迟计算

简介: ![](http://blog.iotwrt.com/images/realtime2.svg) # 1. 背景 如何为自动驾驶程序计算链路延迟? 一般来说在互联网开发上, 我们采用[Distributed Systems Tracing](https://research.google.com/archive/papers/dapper-2010-1.pdf)(比如说Go

1. 背景

如何为自动驾驶程序计算链路延迟?

一般来说在互联网开发上, 我们采用Distributed Systems Tracing(比如说Google Dapper), 来追踪一次服务调用的链路延迟.
但是对机器人程序来说, 是不存在"服务调用"的概念的. 链路上可能大部分程序都是time-based, 对数据都是buffer的形式来使用. 无法建立上下游的关联.

换种思路, 其实可以大问题分解成小问题: 通过各部分task/io的执行情况, 来证明某个链路的延迟.

2. 延迟计算

stop链路如下, 从决策一直到底盘:

Decider --> Planning --> Control --> Guardian --> Chassis

这里的程序逻辑如下:
(time-based, 100hz)表示是定时触发, 频率为100hz

Decider --> Planning(time-based, 10hz) --> Control(time-based, 100hz) --> Guardian(event-based) --> Chassis(time-based, 100hz)

如下假设是Decider到Planning发decision的一个io情况:

max_delay(测量) = Planning收到queue - Decider发出 = cpu调度响应时间 + 处理时间 = 10ms

根据上面的数据, 该io的deadline可以设置到10ms

关于deadline概念:

Planning的timer callback执行情况如下:

max_delay(测量) = Planning完成task- timer wakeup = cpu调度响应时间 + 处理时间 = 10ms

根据上面的数据, Planning的timer task的deadline可以设置10ms

(time-based任务的deadline的start为timer wakeup时间, event-based任务的deadline的start为event input的时间)

最终:

Decider到Planning消费decision的延迟 = Planning周期间隔(100ms) + Planning Timer Deadline(10ms) + io Deadline(10ms) = 120ms

其他地方同理, 一个个计算过来叠加, 就可以得到整个链路的预期最大延迟.
这样算过来的值会偏大, 但还是足够合理.

3. 其他

使用上述方法, 链路的延迟就简化为deadline一种可变量.
控制了deadline, 就可以保证所有链路延迟的确定.

  • 不做实时性优化, deadline是不可确定/不可控的, 从而所有链路的预期最大延迟也都是不可确定.

    • "CPU分配与任务调度"算是一项实时性优化.
  • 即时是做了实时性优化, 也不能保证task/io的执行就不会超过deadline

    • 所以要使用deadline监控, 以此反馈指导程序设计
    • 最终要做到deadline在99.99%情况下都不会被突破
相关文章
|
4月前
|
存储 监控 数据可视化
链路追踪所需要了解的知识
【2月更文挑战第29天】链路追踪,或称调用链监控,用于记录跨服务的逻辑请求信息,协助开发者优化性能和定位问题。它捕获异常、错误和有价值的数据。
|
27天前
|
存储 数据可视化 Java
分布式链路追踪最全详解
分布式链路追踪最全详解
|
30天前
|
存储 监控 开发者
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
分布式链路监控系统问题之系统拆分后链路追踪技术的问题如何解决
|
4月前
|
存储 监控 Java
一文看懂分布式链路监控系统
本文通过阿里的Eagleeye(鹰眼)和开源的Skywalking,从数据模型、数据埋点以及数据存储三个方面介绍分布式链路监控系统的实现细节,其中将重点介绍Skywalking字节码增强的实现方案。
91518 6
|
4月前
|
存储 监控 Cloud Native
初探分布式链路追踪(下)
初探分布式链路追踪(下)
111 2
|
4月前
|
存储 数据采集 消息中间件
初探分布式链路追踪(上)
初探分布式链路追踪(上)
136 2
|
数据采集 存储 移动开发
关于数据埋点的认识以及在流量分析系统中的实际使用
关于数据埋点的认识以及在流量分析系统中的实际使用
858 0
关于数据埋点的认识以及在流量分析系统中的实际使用
|
SQL 缓存 运维
使用篇丨链路追踪(Tracing)很简单:链路实时分析、监控与告警
使用篇丨链路追踪(Tracing)很简单:链路实时分析、监控与告警
6473 5
使用篇丨链路追踪(Tracing)很简单:链路实时分析、监控与告警
|
存储 缓存 运维
进阶篇丨链路追踪(Tracing)很简单:链路成本指南
进阶篇丨链路追踪(Tracing)很简单:链路成本指南
|
消息中间件 数据可视化 JavaScript
什么是链路追踪?分布式系统如何实现链路追踪?
什么是链路追踪?分布式系统如何实现链路追踪?