实时Linux





当对处理器或数据流施加时间要求时,需要一个实时操作系统。因此,它经常在特殊设备中扮演控制单元的角色。科学实验,医学成像应用,工业控制设备都是实时系统。汽车发动机的燃油喷射机构,家用和军事设备的控制器也是实时系统。



此外,不同的事件具有不同的时间要求。例如,防抱死制动系统的等待时间要求范围为3-5毫秒。也就是说,从车轮首次检测到打滑的那一刻起,控制防抱死制动系统会在3-5毫秒内做出反应并纠正这种情况。



在开源生态系统中,实时内核功能已经存在了十多年。红帽企业Linux(RHEL)对实时内核的支持已经同时提供。但是,许多系统管理员误解了其基本概念和实际操作行为。在本文中,我将描述它的一些主要功能,与标准内核的区别以及安装步骤。



实时CPU调度程序



对于不同类型的问题,可以指定软实时系统硬实时系统前者不能保证关键流程的实时时间是准确的。他们仅保证该过程将比非关键过程更受青睐。后者有更严格的要求,任务要么在指定的时间范围内完成,要么被认为未完成。



我们称事件延迟为从事件发生到服务为止的时间。有两种类型的延迟会影响实时OS的性能。



  • CPU . , . , interrupt service routine (ISR).





    . 1 .
  • , , . , . .





    . 2 .






实时操作系统的最重要功能是立即响应需要访问CPU资源的关键进程。结果,用于实时操作系统的调度程序必须支持抢先中断算法。这些算法根据每个过程的重要性为它们分配优先级。如果调度程序还支持抢占,则将根据需要抢占CPU上的当前进程,以支持更高优先级的进程。





图。3规划者的分类。



实时调度程序有几种算法。



  • Rate-Monotonic Scheduling — . , . .





    n, ln2 ≈ 0.693147.
  • Earliest-deadline-first (EDF) Scheduling . , , . RMS, EDF , . , , .





    . 4 EDF.



    . 4 T1 T2 , T2. T3 T1, 23.
  • POSIX real-time-scheduling. POSIX.4 . , .



    • SCHED_FIFO — , « — » (FIFO). 32 .
    • SCHED_RR — SCHED_FIFO, ( ) . 32 .
    • SCHED_OTHER — ; - .




安装和使用RHEL Real Time



首先,您需要连接红帽企业Linux实时存储库并安装RT软件包组。



[root@server ~]# subscription-manager repos --enable rhel-8-for-x86_64-rt-rpms
[root@server ~]# yum groupinstall RT


RT包括以下组件:



  • kernel-rt-具有实时功能的内核;
  • rt-setup-安装Red Hat Enterprise Linux实时环境;
  • rt-tests -RT功能测试实用程序;
  • rt-eval-评估在给定系统上使用RT的可能性;


安装RT并重新引导后,请确保已加载kernel-rt。



[root@server ~]# uname -a
Linux rt-server.example.com 4.18.0-80.rt9.138.el8.x86_64 …


让我们看一下kernel-rt和标准内核之间的一些区别。



  • 在高负载下,将检查任务优先级(1-99)。
  • 访问CPU资源时,优先级高(99)的任务优先。
  • 不执行完全公平调度(CFS)策略
  • 使用SCHED_FIFO策略SCHED_RR




图。5将kernet_rt与标准内核进行比较。





该图分别显示了使用RHEL Linux 7和RHEL Real Time内核的系统的百万重复响应时间的示例。此图中的蓝点表示具有标准RHEL 7内核的系统的响应时间(以微秒为单位),绿点表示RHEL 7实时。从图中可以看出,kernel-rt的特征是方差低得多,因此,系统响应时间的可预测性更高。



设置和测试



安装RT之后,可能需要进行其他调整和调整才能获得最一致的系统响应时间。金融或电信部门的公司可能会提出此类要求。设置本身是一个反复的过程,您需要在过程开始之前耐心等待。不可能调整几个变量并了解已经获得了最好的结果。rt-tests软件包中



hwlatdetect实用程序将通过轮询时钟源并查找模糊的间隙来显示由硬件和固件引起的延迟。



[root@server ~]#  hwlatdetect --duration=60s
hwlatdetect:  test duration 60 seconds
	detector: tracer
	parameters:
		Latency threshold: 10us
		Sample window:     1000000us
		Sample width:      500000us
		Non-sampling period:  500000us
		Output File:       None

Starting test
test finished
Max Latency: Below threshold
Samples recorded: 0
Samples exceeding threshold: 0


在此示例中,参数指示延迟和检测方法。默认等待时间阈值设置为10微秒(10μs)。



RT还具有一个称为rteval的实用程序,用于在负载下测试实时系统性能。该程序使用SCHED_OTHER调度程序给系统增加了沉重的负担,然后测量每个活动CPU上的实时响应。目的是使各种任务持续运行,例如分配/释放内存,磁盘I / O,计算,复制内存等。



每个测量线程都带有一个时间戳,在一定时间间隔内处于空闲状态,然后在唤醒时花费另一个时间戳。测量延迟等于t1 - (t0 + i),其中



  • t1-实际测量时间;
  • t0-第一个时间戳的理论唤醒时间;
  • 我是等待间隔。


rteval实用程序报告如下所示。



System:
Statistics:
	Samples:           1440463955
	Mean:              4.40624790712us
	Median:            0.0us
	Mode:              4us
	Range:             54us
	Min:               2us
	Max:               56us
	Mean Absolute Dev: 1.0776661507us
	Std.dev:           1.81821060672us

CPU core 0       Priority: 95
Statistics:
	Samples:           36011847
	Mean:              5.46434910711us
	Median:            4us
	Mode:              4us
	Range:             38us
	Min:               2us
	Max:               40us
	Mean Absolute Dev: 2.13785341159us
	Std.dev:           3.50155558554us


二手材料












All Articles