01 | 背景
▌ 软件定义汽车
随着智能网联汽车技术的进步,软件和人工智能技术已成为汽车产业的重要支撑,推动了汽车从传统机械代步工具向新一代移动智能终端的转变。汽车电子电气架构的升级当下已从分布式向域控制/中央集中式方向发展。通信架构由 LIN/CAN 总线向以太网方向发展。整车软件架构从面向信号的软硬件耦合架构向面向服务的分层解耦软件架构转变。
从最初的各个子系统独立的 ECU 运算,到按功能划分的域控制器集成化运算,再到最终实现整车运算能力的高度集中、智能化分配算力。形成由一个 CCU(中央计算平台)承担智能车控、自动驾驶、智能座舱三域的全部计算工作。
▌ 从 “马力” 到 “算力”
传统汽车时代的竞争,主要是围绕动力、操控和空间来展开。但智能汽车发展的背后,是整车计算平台的演进。算力是智能汽车实现高级自动驾驶功能的基础,它直接关系到车辆的智能水平、安全性和用户体验。
高通第四代8295智能座舱芯片算力 30 TOPS,英伟达最新自动驾驶 NVIDIA DRIVE Thor 芯片算力 2000 TOPS。智能汽车中搭载 2 颗 8295 加上 2 颗 Thor 芯片,算力将达到了惊人的 4060 TOPS。
02 | 可观测性对于智能汽车的重要性
车端算力军备竞赛背后,反映出了当下新能源车企之间激烈的竞争。
但是算力不等于智能,智能汽车水平的提高,除了算力,还要与数据、软件优化的协同配合,才能充分利用硬件的算力。目前智能汽车的发展阶段已经由 “堆料” 阶段发展到 “提质” 的高质量发展阶段。未来决定汽车差异性的,将是软件迭代、优化带来的性能和功能提升。
由于车端可观测性技术手段的缺乏,如何实现从 “堆料” 阶段发展到 “提质” 的高质量发展成为一大难题。比如智能座舱 APP 的车端控制存在延迟、异常等问题导致用户使用体验不佳,无法观测到从云端到车端完整的调用链过程。无法快速定位车端应用的函数性能瓶颈,导致系统性能优化无从下手,效率低下。
03 | 车端可观测性挑战
随着 “软件定义汽车” “马力到算力” 不断的发展,当下车端智能车控、自动驾驶、智能座舱三域之间复杂的域间系统调用、域内系统调用及车云互联等场景下,如何快速定位问题、定位性能瓶颈;车端应用开发测试如何保障软件质量、提升效能,成为智能汽车当下一大挑战。具体有以下几个方面:
▌ 复杂的车端通信场景
车端智能车控、自动驾驶、智能座舱等应用系统业务交互的访问关系复杂度越来越高,动态性也越来越强。但由于车端可观测性的 “黑盒” 化,使得观测整个系统的运行状态变得困难。无法动态捕捉业务系统之间的访问路径、无法透明地洞察业务内各服务之间的调用关系,无法实现不同通信场景的通信全景图以及端到端调用链路追踪。主要通信场景包括:
▌ 多源的车端数据采集
车端智能应用系统包含大量的软件和硬件,包括传感器、控制器、通信模块、操作系统、智能座舱应用、自动驾驶系统等。如何零侵扰、低成本、高性能地获取车端各控制域、各类型观测数据成为一大挑战。多源可观测性数据包括:
▌ 故障诊断和快速定界
车云通信、车内域间通信等复杂场景下,常见的业务异常诊断和定界通常需要 1 天以上的周期,难以快速确定问题边界,而且整个过程需要不同技术栈不同团队的协同排查,消耗大量时间精力,因此效率低下。快速诊断和定界不同系统间的故障点成为一大挑战。
▌ 智能应用算力优化
智能汽车的硬件和软件需要定期的更新和维护,车端应用系统的性能和质量是否达标,关系到业务是否可以如期交付和快速上线。如何观测应用进程在车端 CPU、GPU 的资源消耗和性能状态,如何观测应用的 CPU on/off 性能持续剖析数据,如何观测进程在 GPU 多核心的调度情况、系统 IO /锁等导致的性能瓶颈。车端应用开发和测试阶段保障软件质量、提升 DevOps 效能,成为当下一大挑战。
04 | DeepFlow 车端可观测解决之道
▌ “行驶中的数据中心”
DeepFlow 已在金融、运营商、电力等行业有非常多的落地实践,并实现了金融交易核心系统、运营商通信核心系统、电力核心系统的全面可观测性,帮助客户提升了对系统稳定性、可靠性的信心,是核心业务系统的重要保障。
DeepFlow 从行业应用场景再到智能汽车车端的可观测性落地实践一路走来,我们发现不同落地应用场景有区别也有相通点,存在异曲同工之妙。从 “软件定义汽车” “马力到算力” 在我们看来,智能汽车可以类比为一个在马路上行驶的中小型数据中心。在车端算力平台运行的 Android 系统、Linux 系统之上,DeepFlow 同样也适配了车端 “数据中心” 的可观测性解决方案。
图1:车端算力平台可观测
▌ 可观测性关键技术-eBPF
DeepFlow 通过 eBPF 技术零侵扰实现的全景图、分布式追踪和持续剖析等能力为车端的可观测性建设提供了开创性的新思路。基于 eBPF 实现了车端应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。
图2:基于 eBPF 的车端可观测性建设
05 | 智能汽车可观测解决方案实践
▌ “白盒化” -自动绘制车端通信全景图
DeepFlow 可实现自动化绘制出车端通信场景中端到端系统调用全景图,全景拓扑可以与多指标进行结合,当指标量超过阈值时,则将通过标红的形式可视化出来。从而直接观测到车端应用的上下游调用全貌:
图3:DeepFlow 车端通信场景全景图
基于 DeepFlow 全景图,可以从上帝视角观测系统指标和调用拓扑,从而实现:
同时,DeepFlow 可实现车端业务系统端到端的全栈调用链路追踪,可以实现完整追踪 用户-云端-车端应用-XCU 完整的应用调用链路。展示一次手机 APP 远程开门操作、智能座舱应用访问互联网业务请求从 APP-云端-车端-车端执行单元 完整端到端执行情况,快速定位完整调用链路上的性能瓶颈、时延占比分析、异常分析。
图4:DeepFlow 车端业务系统全栈调用链追踪
▌ 高性能多源数据采集
DeepFlow 采集器目前已适配高通 SOC Android 系统、英伟达 Linux Drive 系统。并支持 eBPF 数据采集。
图5:DeepFlow 采集器适配高通 SOC、英伟达 Linux 系统
DeepFlow Agent 使用 Rust 语言实现,有着极致的处理性能和内存安全性。Agent 主要从三个 eBPF 接口获取数据,自下而上依次是:
DeepFlow 运行于智能座舱车规级 SOC 芯片 Android 系统、英伟达 Linux Drive 系统之上,采集系统之上的智能座舱、自动驾驶应用的 eBPF 观测信号汇集展现如下智能座舱、自动驾驶应用观测数据:
▌ 快速故障诊断和问题定界
DeepFlow 实现的车端全场景可观测性,可以观测智能汽车各个域间、域内的系统运行状态,通过 eBPF 数据采集和分析快速发现潜在故障隐患和问题定位,帮助车企在系统研发、测试、整车路侧各个阶段中快速故障定位和定界,快速迭代优化。
案例1:基于观测指标趋势回溯能力,快速定位自动驾驶应用至智能座舱应用之间的系统响应时延毛刺异常。
图6:DeepFlow 观测指标趋势回溯
一键下钻详细调用日志,快速发现响应时延高的具体应用请求端点,并通过全栈路径定位响应时延慢发生在服务端智能座舱应用侧,从而实现快速的故障诊断和问题定界。
图7:DeepFlow 调用日志详情
案例2:智能座舱应用端到端分布式追踪,车联网控制数据与云端业务系统通过 MQTT Broker 连接实现数据交互,通过在云端解析 MQTT 数据实现智能云端服务-车端应用观测数据联动,拉齐跨部门问题定界能力。
图8:DeepFlow 端到端分布式追踪
▌ 智能应用算力优化及性能剖析
DeepFlow 可实现观测车端系统运行过程中热点逻辑的执行以及判断热点逻辑是否合理,快速识别出热点函数(On/Off CPU 火焰图),通过对热点函数的优化,帮助车端应用在开发和测试阶段快速优化迭代软件质量、提升效率,提升车端应用的整体性能。
案例:在车端 GPU 算力资源非常宝贵,我们希望自动驾驶系统高效率的利用 GPU 算力资源,但是经常遇到应用进程在 CPU 核心上执行存在性能瓶颈,导致 CPU 核心资源被占满但 GPU 资源被浪费的问题。通过 DeepFlow 的持续性能剖析功能可观测到自动驾驶系统中雷达数据处理应用在 CPU 上执行的热点函数。
图9:DeepFlow 持续性能剖析
06 | 总结
随着新能源智能汽车行业市场竞争的加剧,以及人工智能、自动驾驶等新技术不断发展,车企需要更加智能化和高效的手段来提高产品质量、提高效率和提高市场竞争力。
DeepFlow 可观测性解决方案采集到丰富的观测数据,包括车辆系统指标观测数据、调用链路追踪数据、系统运行性能数据等,这些数据可以为车企提供全方位的数据支撑,为产品迭代优化、用户体验提升等决策提供参考依据。帮助车企提高产品质量、提高效率、增强竞争力,为智能汽车智能化注入新动能。