为什么用Linux做实时应用开发
比传统 RTOS(VxWorks/ThreadX)生态强、网络好、驱动全、可跑复杂协议+边缘计算+AI ,同时做到 10--200μs 确定性延迟。
realtime linux的应用很多,有以下这些, 具体应用场景问下AI就可以,我就不在这大段的粘贴AI的回答了:)
- 工业自动化
- 机器人(工业/协作/移动)
- 汽车电子 / 车载实时控制
- 能源电力(光伏/储能/风电/电网)
- 医疗设备(生命体征/成像/手术设备)
- 通信与网络设备(低时延转发)
- 专业音视频与测控
知识储备
在linux上做实时应用开发,特别是系统调教,需要掌握一些操作系统及内核方面的知识。我在学习过程中读过一些不错的书以及资料,也推荐给各位。
- 深入理解计算机系统 (第3版)
这本书从程序员视角贯通软硬件,打破 "组成原理 / 操作系统 / 编译原理" 割裂,讲清代码如何在硬件上真实执行。 - Performance Analysis and Tuning on Modern CPU
这本书将主要对那些从事性能关键应用程序和进行低级优化的软件开发人员有用。仅举几个领域:高性能计算(HPC)、游戏开发、数据中心应用程序(如Facebook、Google等)、高频交易。 不仅如此,任何想更好地了解其应用程序性能并知道如何进行诊断和改进的开发人员都会从中受益。作者希望本书所呈现的材料能帮助读者培养新的技能,可以应用于他们的日常工作中。 - Making Linux do Hard Real-time(Jim Huang)
- Technical details of the real-time preemption
- 深入Linux内核架构 (Wolfgang Mauerer)
- OSADL
为低延迟操作优化Linux OS
提升Linux的实时性能,目前行业中有许多成熟且公开的方案,而且很多都是头部企业开源提供的,我在刚开始做项目的时候,第一步也是参考这些优化方案,初步调教系统。这些优化已经能显著提升系统的延迟。
我下面也只是简单介绍一下,具体的操作还是需要参考这些公司的教程及文档,这些文档写的还是相当不错的,我如果用AI总结贴出来,反而是多此一举。
Red Hat Enterprise Linux for Real Time
optimizing rhel for low latency operation 是红帽官方 RHEL8 RealTime 实时内核完整调优体系 ,覆盖从BIOS→固件→内核启动参数→调度→CPU隔离→中断绑定→内存→时钟→电源→日志→调试工具→网络→故障捕获→应用部署全链路,内容非常全面。
Linux-Based Runtime Systems Performance Optimization
CODESYS 是德国 CODESYS Group 推出的、硬件无关的工业自动化软件开发平台 ,核心是一套符合 IEC 61131-3 标准的 PLC 编程 IDE + 跨平台实时运行时(SoftPLC),全球装机量超 500 万套,被 500+ 控制器厂商采用。
该公司的运行时系统(Runtime / SoftPLC) 支持Linux(含 PREEMPT-RT)、Windows、嵌入式实时OS、容器(Docker)、虚拟化 ,具有微秒级实时性、支持多核、支持 EtherCAT/PROFINET 等工业总线。
本人目前的工作,就focus在这一领域。Linux-Based Runtime Systems Performance Optimization 是CODESYS提供给客户设置linux以提升runtime实时性能的一份公开资料。虽然大多数人并不是在为codesys runtime进行调优,但是即使是不同的实时应用,对linux的调教也是大致相同的,具有重要的参考意义。
Intel® Resource Director Technology (Intel® RDT)
Intel® Resource Director Technology (Intel® RDT) 是一整套用于 ** 监控与分配共享资源(LLC 缓存、内存带宽)** 的硬件 + 软件技术集合,主要面向服务器、虚拟化、实时 / 工业场景,解决 "吵闹邻居"(noisy neighbor)干扰问题。
其中最重要的一个技术是CAT。CAT 允许软件可控地重新分配 L3 缓存容量,隔离不同业务缓存争抢;可用于提升运行时确定性、工业实时负载、DPDK 转发、CODESYS RT 工控场景,做关键业务缓存资源独占隔离,降低调度抖动。
本作品采用 CC BY-NC-SA 4.0 协议发布,允许署名非商业转载,二次创作须以相同协议共享,禁止商用。