运行实时内核并评估其对应用程序的潜力和性能优势是值得的。
https://www.redhat.com/sysadmin/real-time-kernel
目录
实时内核功能在开源生态系统中已经存在了十多年。同样,红帽企业Linux(RHEL)对实时内核的支持已经使用了几年。但是,许多系统管理员仍然误解了其核心概念和实际操作行为。在本文中,我描述了它的一些关键功能,与标准内核的区别以及快速安装步骤。
最初,红帽推出了一种名为“红帽企业MRG”的产品,其中MRG代表消息传递,实时和网格。MRG 2基于RHEL 5和RHEL 6版本,而MRG 3完全基于RHEL6。从RHEL 7开始,不推荐使用MRG产品,并且将“ RHEL for Real-Time ”作为单独的产品推出。
什么是实时内核?
实时内核不一定优于或优于标准内核。相反,它满足不同的业务或系统要求。它是经过优化的内核,旨在维持低延迟,一致的响应时间和确定性。通过比较,标准RHEL内核专注于面向吞吐量的操作和任务的合理调度。实时内核也称为kernel-rt
或preempt-rt
。
标识实时内核的最简单方法是uname -r
在终端上执行命令,然后在内核版本中查找rt关键字。如果缺少rt,则系统使用标准内核。
以下输出是一个示例:
- #uname -r
- 3.10.0-1127.10.1.rt56.1106.el7
一些重要的kernel-rt
机制包括:
- 在重负载下检查任务的优先级(1-99)。
- 高优先级(99)的任务将优先执行CPU。
- 不使用完全公平调度(CFS)策略。
- 使用中的调度策略为SCHED_FIFO或SCHED_RR。
- 保持低延迟执行时间。
- 提供测量,记录和配置响应时间的机会。
为了进一步了解kernel-rt
与标准内核有何不同,下图说明了使用可以kernel-rt
在系统中保持较低的延迟和响应时间。
在上图中,蓝色曲线表示已调整的标准RHEL7内核上的响应时间(ms),而绿色点表示已调整的RHEL7上的响应时间(ms)kernel-rt
。绿色部分显示一致性,低延迟和低响应时间。要进一步研究该图和相关测试,请参考Red Hat官方指南“为何使用Red Hat Enterprise Linux实时优化延迟”。
下面,我列出了一些其他差异,这些差异对于将RHEL for Real Time与标准RHEL进行比较至关重要:
- Kexec和vmcore-安装和配置与标准RHEL相同。
- 第三方模块-所有模块在使用
kernel-rt
前都必须重新编译。 irqbalance
守护程序-默认情况下禁用。- 调度策略-仅使用SCHED_FIFO或SCHED_RR。
- 中断(IRQ)-使用专用CPU将进程彼此隔离。
实时安装RHEL
让我们进行快速安装,并观察安装中的其他软件包kernel-rt
。单独的ISO映像kernel-rt
可用于全新配置。用户/管理员还可以kernel-rt
在现有的标准RHEL系统上安装RPM软件包,然后重新引导。
第1步:从Red Hat客户门户网站下载和配置名为RHEL的ISO实时映像。您也可以使用现有的标准RHEL框并启用rhel-7-server-rt
存储库以获取kernel-rt
软件包。
步骤2:执行群组安装,以同时安装所有RT特定软件包。
步骤3:验证所有相关软件包。
步骤4:重新启动系统,然后kernel-rt
从启动控制台中选择。
用户应执行RT组安装,因为它提供了所有必需的kernel-rt
依赖程序包。下表显示了简短的从属软件包详细信息:
- kernel-rt-实时内核
- rt-setup-RT环境设置的最关键软件包。
- rtctl-配置内核线程的调度优先级。
- rt-test,rt-checks,rteval-用于测试系统功能和负载。
让我给您一个非常简短的实际场景,说明为什么RT组安装至关重要。领先的电信客户之一是在HP ProLiant BL460c Gen9计算机上运行实时RHEL内核(3.10.0-693.11.1.rt56.632.el7)作为三刀片集群环境。他们观察到群集环境中的流量延迟和超时。丢失或丢弃了大量UDP自检测信号(HB)数据包。我们观察到,有与网卡或群集模块上没有任何问题,一旦我们分析 pcap
和strace
数据包。进一步的诊断表明,该rt-setup
包装丢失了,因为kernel-rt
没有任何从属包装就强行安装了该包装。
环境 | 在7天内错过了HB | 使用rt设置在7天内错过了HB |
---|---|---|
主机名-a12 | 138 | 0 |
主机名-a13 | 113 | 0 |
主机名-a14 | 118 | 5 |
该rt-setup
程序包负责配置和运行 rt-entsk
守护程序,以防止IPI生成和实时任务延迟。
以下项目要点显示了rt-setup
(v2.0-6)的一些关键功能 :
- 创建实时组。
- 添加PAM的实时限制配置。
- 添加
/usr/bin/rt-setup-kdump
以在RT中配置kdump。 - 为线程irq和
/dev/rtc
访问添加udev特定的规则。 - 添加
/usr/bin/slub_cpu_partial_off
以cpu_partials
在SLUB中关闭。 - 添加网络套接字时间戳静态密钥守护程序(
rt-entsk
)。
Wrap up
运行实时内核并评估其潜力是值得的,因为许多应用程序都可以从中受益。Kernel-rt
可以进行调整以进一步减少性能问题。ftrace
RHEL提供了诸如Real-Time的工具,这些工具对于分析和调试延迟问题非常有用。但是,这些详细信息不在本文的讨论范围之内。
实时内核已经存在很长时间了,但是许多系统管理员不确定如何使用它。在本文中,我定义了实时内核的功能。我还为您提供了有关如何安装它的信息。也许实时内核将帮助您的组织实现更高的Linux性能!