一文读懂础光Linux

础光Linux是国科础石针对汽车行业的操作系统,专注于实时性、功能安全和稳定性的提升。通过CPU亲和性、CPU隔离、内存锁定和电源管理等方面的优化,实现了100us的实时性。此外,还依据ISO26262规范进行功能安全增强,并集成稳定性补丁。配套的评测和诊断工具能帮助进行系统性能分析和问题定位。未来,础光Linux将持续优化并支持更多车载芯片,推动自动驾驶场景的Linux操作系统标准化。
摘要由CSDN通过智能技术生成

引言:

国科础石已于2月针对其操作系统产品——础光Linux进行开源,并发布了整体操作系统产品的开源战略。在此背景下,本文将介绍础光Linux的优化措施以及测试性能,让大家进一步了解该系统优化后的性能优势,并针对下一步优化方向提出了规划。

1.先从操作系统领域的行业现状说起;

根据汽标委2019年10月发布的《车用操作系统标准体系》对车用操作系统的定义,础光Linux属于“智能驾驶操作系统”。

图:车用操作系统分类

车控操作系统分为安全车控操作系统和智能驾驶操作系统

    • 安全车控操作系统主要面向经典车辆控制领域,如动力系统、底盘系统和车身系统等,该类操作系统对实时性和安全性要求极高,生态发展已趋于成熟。
    • 智能驾驶操作系统主要面向智能驾驶领域,应用于智能驾驶域控制器,该类操作系统对安全性和可靠性要求较高,同时对性能和运算能力的要求也较高。该类操作系统目前在全世界范围内都处于研究发展的初期,生态尚未完备。
  • 车载操作系统主要面向信息娱乐和智能座舱,主要应用于车机中控系统,对于安全性和可靠性的要求处于中等水平,该类操作系统发展迅速,依托于该类操作系统的生态也处于迅速发展时期。

包含础光Linux在内的础光系列操作系统定位于安全车控操作系统以及智能驾驶操作系统。致力于打造强实时性、高可靠的汽车之魂。

图:础光操作系统产品矩阵图

包含础光Linux在内的础光系列操作系统定位于安全车控操作系统以及智能驾驶操作系统。致力于打造强实时性、高可靠的汽车之魂。

在软件定义汽车时代, 操作系统是自动驾驶汽车的核心技术,作为软件架构的一种, 设计搭建高质量的车控操作系统架构对自动驾驶汽车的快速发展具有重要影响。快速变化的需求、智能化持续迭代、车载硬件和软件系统复杂程度的提升对车控操作系统的性能、 可扩展性、易用性、系统可靠性提出了严峻的挑战。

针对智能汽车架构,车控操作系统运行基础是异构、分布式计算平台,既具有安全车控操作系统的功能和特点,还能够提供高性能、高可靠的传感器、分布式通信、自动驾驶通用框架等模块以支持自动驾驶感知、规划、决策、控制与执行的共性实现。

图:车控操作系统参考架构

而目前众多的实时性嵌入式操作系统中,基于Linux的嵌入式操作系统,由于其源代码开放、系统稳定等特性,使其日益受到人们的欢迎。但Linux是作为服务器操作系统而设计,注重性能和吞吐量,而车载场景中的操作系统更在意实时性。与实时性直接相关的就是代码执行流程中的各种不确定性。因此,需要寻找Linux中的不确定性流程并加以改进,将Linux改造成强实时性的嵌入式操作系统,具有非常高的现实意义。

为此国科础石潜心打造了础光Linux系统,遵循开源协议并加入openSDV社区,基于Linux的实时性增强、支持云原生及主流车载芯片;通过继承Linux的良好的软硬件生态,对NPU/GPU/Cuda等加速硬件无缝衔接,节省厂商大量的适配和移植成本,可为客户提供长期技术支持服务。

2.础光Linux 在提升性能方面,做了哪些工作?

础光Linux相较于优化前版本,在实时性、功能安全性、稳定性等方面均实现一定程度上的提升,同时搭配自研的调优及诊断工具可以实现数字化评测及内容可视化。

2.1 实时性增强

Linux被设计为通用操作系统,比较注重性能和吞吐量,而车载场景中的操作系统更注意实时性,其中比较重要的指标有上下文切换时间,调度延迟,中断延迟等。

针对这些指标,础石研发了诊断调优工具, 抓取系统中所有进程数据进行细致分析后发现:大部分抖动由中断线程和rcu线程,软中断线程,高优先级用户线程之间互相竞争资源导致。由于系统级的线程通常需要结合业务进行优化,由此国科础石对不同场景做了不同的综合调优。

优化措施1:CPU 亲和性

当系统调度进程至某个CPU上运行之前,会考虑CPU负载, 缓存命中率, 访存延迟等因素。但系统未来的负载情况不能准确预知,如果选择的CPU不合适,缓存失效,单个物理CPU过于繁忙导致的LLC争用, 调度颠簸,会带来额外的开销。因此在业务负载较稳定时,可指定CPU亲和性来减小系统判断失误的可能性。

优化措施2:CPU 隔离

同一个CPU在不同的时刻下,有可能在执行用户线程, 中断处理函数, 内核线程,每次上下文切换都伴随着不同程度的缓存失效。如果可以明确某个外设与业务进程有对应关系,或某个业务是CPU密集型的,那么可以尝试将一个或多个CPU隔离出来,再接着做中断或进程绑定,从而减少系统其余部分对当前业务的干扰, 减小不确定性。

优化措施3:内存锁定

当系统内存压力较大时,扫描非活跃页的例程会挑选合适的进程来回收内存。如果被选中,当下次进程缺页时所引起的额外延迟将远远大于正常访存的时间。将进程地址空间的物理页锁定,从而避免被换出至swap,可以显著的提升业务进程的实时性。

优化措施4:电源管理

出于节能的目的,当系统负载较小时,CPU可动态减小运行频率来节省用电,但由此引入的一些额外判断,如什么时候开始调整频率,调整的幅度应该是多少,在负载变化较大时,通常缺少合适的准则。注重延迟的场景,可以关闭电源管理或设置为性能模式来优化响应时间。

针对优化后的础石Linux操作系统,我们进行了实时性测试。测试过程中,采用开源实时性测试工具 cyclictest 从周期性任务调度的实时性上做一组对比试验,并构造了CPU、内存、网络、IO等大压力场景。这些压力如下图所示:

图:标准内核测试环境系统负载

图:抢占式内核测试环境系统负载

图:实时内核测试环境系统负载

图:实时+隔离优化内核测试环境系统负载

注: 图片中纵坐标为百分比,横坐标为资源监控取值数量

cpu_util: cpu平均利用率

mem_util: 内存平均利用率

io_util: 磁盘io平均利用率

if_util: 网络带宽利用率

最终,经过实时性增加优化的础石Linux达到100us的实时性,处于业界领先水平:

优化措施标准内核5.10Photon Linux
不加实时补丁,只打开抢占590004000
加入实时补丁17001500
实时性增强优化200100

2.2 功能安全增强

汽车行业的对功能安全的要求十分严苛,但Linux操作系统在功能安全方面始终无法满足部分要求,其主要原因是:

    • 代码量过于庞大,不适合做功能安全认证
    • Linux现有开发过程与功能安全认证要求不相符
    • 代码风格不符合车规级编程规范

但从行业现状角度分析,主机厂又对Linux有比较强烈的需求,那么针对Linux进行功能安全增强,以满足汽车功能安全标准,已成为业界一大课题。

我们可以看到业界的一些有益尝试,例如:redhat成立了相关的研发小组,希望对Linux操作系统代码进行ASIL-B级别的功能安全认证。

而础光Linux则根据ISO26262规范要求,对系统进行安全增强。通过在调度、中断、内存、IO等各大内核关键模块中添加功能安全组件,并对应用程序提供安全接口的方式,帮助主机厂从整体架构上尽量符合ISO26262规范要求。

础光功能安全增强组件会以础光Linux的扩展组件的形式存在,部分功能安全增强功能后续会在社区开源。目前,相关功能仍然在研发过程中,并会在今年陆续发布。

2.3 稳定性增强

在稳定性方面,础光Linux集成了大量有助于稳定性的补丁,如:

  • 外设相关,如pci/mmc/serial/mmc/alsa/drm模块
  • io相关,如mbcache/ext4等模块
  • net相关,如sunrpc/netfilter等模块

  • mm相关, 如kfence特性, 可检测常见的访存错误

以上组件均有较大可能会在车载系统中用到,不仅有助于提高产品质量更能极大减少故障率和修复代价。

2.4评测与诊断工具

    • 础光Linux实时性评测工具

础光Linux配套更高精度的实时性评测工具,支持关键实时性指标的精确度量,数据可视化,并能提供各类异常延迟堆栈信息,提供调优依据,评测方法和结果可由第三方复现,具体功能包括:

    • 丰富的压力模型
    • 开销极小(不影响压力模型)
    • 多角度多方面评测(中断、调度、锁、cyclitest等丰富测试手段)
    • 既能度量微秒级实时性指标,又能找到延迟毛刺调用链,研发工程师的真爱
    • 评测结果数据可视化(支持延迟TOPN、延时分布、散点对比图等形式展示)
    • 自动化测评平台(一键实时性评测和调优、自动化测试、报告可视化/下载/分享)
    • 支持x86、ARM架构

    • 础光Linux系统与应用诊断工具

础光Linux配套用于实时常态化的对操作系统和应用程序的性能、稳定性、业务异常抖动等问题进行根因诊断,可提前发现系统中的Corner-Case,也可帮助用户提前发现业务应用程序异常。具体功能包括:

    • 稳定、可靠,可在数十万机器超大规模集群中7*24小时常态化运行
    • 可诊断 C++ / java / go / python 应用
    • 可诊断操作系统内核异常事件
    • 可诊断网络抖动、IO异常、硬件响应时间
    • 可诊断内存泄漏、锁延迟异常
    • 可诊断系统cpu冲高、load冲高、io冲高等异常
    • 微秒级抖动根因分析
    • 支持秒级发现、秒级诊断和上报
    • 支持诊断报告查看、下载和分享

    • 础光Linux内核性能观测工具

基于础石在可观测性领域的长期实践成果,础光Linux将一部分具有实用价值的成熟工具加入内核,作为础光Linux的原生特性,以便最大程度地体现础光Linux在各方面的性能增强。具体功能包括:

    • 进程间流量的精细化统计与分析
    • 其他待合入功能

2.5 丰富的车载芯片支持

目前已经支持英伟达orin, 黑芝麻a1000等芯片,紫光展锐,瑞芯微,芯驰等正在适配中, 也计划与更多厂家开展合作,如地平线,飞腾等。上述相关车载芯片支持BSP也会陆续开放源代码。

3.础光Linux 产品的未来规划

面对当下Linux生态下自动驾驶场景对安全性、稳定性以及性能效率的严苛标准,国科础石将在产品端持续完成通用实时性优化,如内存与调度层面,并根据具体车载场景(如自动驾驶)进行特定实时性优化;实现快速域间通信,同时,也将兼容更多车载平台。

面对当下Linux操作系统版本混乱、缺少技术支持等痛点,础光Linux也会通过开源的方式,贡献自身专家团队开发的操作系统,持续为开发者提供技术支持。

携手行业,共同打造一套标准化的、可应用于自动驾驶场景的Linux操作系统。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值