4.9. 内核
RHEL 9.1 中的内核版本
Red Hat Enterprise Linux 9.1 与内核版本 5.14.0-162 一起发布。
list_lru 的内存消耗已被优化
内部内核数据结构 list_lru 跟踪内核索引节点和文件目录条目的"最早使用"状态。在以前的版本中,list_lru 分配结构的数量与挂载点的数量和存在内存 cgroup 的数量直接成比例。两个数字都随着正在运行的容器增加,导致 O (n^2) 的内存消耗量为 n,其中 n 是正在运行的容器数。此更新可优化系统中 list_lru 到 O(n) 的内存消耗。因此,现在有足够的内存供用户应用程序使用,特别是在有大量运行容器的系统中。
(BZ#2013413)
BPF 更新到 Linux 内核版本 5.16
Berkeley Packet Filter (BPF) 工具已更新至 Linux 内核版本 5.16,具有多个程序错误修复和增强。最显著的变化包括:
简化了对内部 BPF 程序项的处理,以及
libbpf用户空间库中的bpf_program__set_attach_target()API。bpf_program__set_attach_target()API 为基于 BPF 的程序设置基于 BTF 的附加目标。-
添加了对
BTF_KIND_TAGkind 的支持,允许您标记声明。 -
添加了对
bpf_get_branch_snapshot()帮助程序的支持,它允许追踪程序从硬件捕获最后一个分支记录(LBR)。 -
在
libbpf用户空间库中添加了旧的kprobe事件,它允许通过旧接口创建kprobetracepoint 事件。 -
添加了通过 BPF 特定的结构使用
__sk_buffhelper 功能访问硬件时间戳的功能。 -
添加了对
AF_XDP缓冲池中 RX 缓冲区分配的批处理接口的支持,支持i40e和ice。 -
添加了
libbpf用户空间库中的传统uprobe支持,以补充最近合并的传统kprobe。 -
将
bpf_trace_vprintk()添加为 variadicprintkhelper。 -
添加了
libbpfopt-in for stricter BPF 程序部分处理,作为libbpf1.0 工作的一部分。 -
添加了
libbpf支持来查找专用映射,如perf RB和内部删除 BTF 类型标识符。 -
添加了
bloomfilterBPF map 类型来测试集合中是否存在某一元素。 - 添加了对 BPF 中的内核模块功能调用的支持。
-
添加了在 light skeleton 中的无类型和弱
ksym的支持。 -
添加了对
BTF_KIND_DECL_TAG类型的支持。
有关运行中内核中可用的 BPF 功能的完整列表,请使用 bpftool feature 命令。
(BZ#2069045)
BTF 数据现在位于内核模块中
BPF 类型格式 (BTF) 是元数据格式,对与 BPF 程序和映射相关的调试信息进行编码。在以前的版本中,内核模块的 BTF 数据保存在 kernel-debuginfo 软件包中。因此,需要安装对应的 kernel-debuginfo 软件包才能将 BTF 用于内核模块。在这个版本中,BTF 数据现在直接位于内核模块中。因此,您不需要安装任何软件包就可以使 BTF 正常工作。
(BZ#2097188)
kernel-rt 源树已更新至 RHEL 9.1 树
kernel-rt 源已更新为使用最新的 Red Hat Enterprise Linux 内核源树。实时补丁集也更新至最新的上游版本 v5.15-rt。这些更新提供了很多程序错误修正和增强。
(BZ#2061574)
ARM 和 AMD 和 Intel 64 位构架启用动态抢占调度
RHEL 9 在 ARM 和 AMD 和 Intel 64 位构架中提供动态调度功能。此功能增强支持在引导时或运行时更改内核的抢占模式,而不是编译时间。/sys/kernel/debug/sched/preempt 文件包含当前的设置,并可以在运行时修改。
使用 DYNAMIC_PREEMPT 选项时,您可以在引导时将 preempt= 变量设置为 none、voluntary 或 full,voluntary 抢占为默认值。使用动态抢占处理,您可以覆盖默认的抢占模型,以改进调度延迟。
(BZ#2065226)
stalld 更新到版本 1.17
stalld 程序(提供 stall 守护进程)是防止 Linux 系统中操作系统线程的不足状态的机制。此版本监控星级状态的线程。当线程位于 CPU 运行队列中长于 starvation 的阈值,就会发生 starvation。
与之前的版本相比,这个 stalld 版本包括了很多改进和程序错误修复。值得注意的更改包括检测可运行的补救任务的能力。
当 stalld 检测到星号线程时,程序会将线程的调度类改为 SCHED_DEADLINE 策略,它为线程提供了指定 CPU 运行线程的小片段。当使用 timeslice 时,线程会返回其原始调度策略,而 stalld 会继续监控线程状态。
tpm2-tools 软件包已更新至 tpm2-tools-5.2-1 版本
tpm2-tools 软件包已更新到版本 tpm2-tools-5.2-1。此升级提供了很多重要的功能增强和程序错误修复。最显著的变化包括:
-
在使用
tpm2_createprimary和tpm2_create工具创建的主对象时添加对公钥输出的支持。 -
添加对
tpm2_print工具的支持,以打印公钥输出格式。tpm2_print解码一个受信任的平台模块(TPM)数据结构,并打印括起的元素。 -
添加了对
tpm2_eventlog工具的支持,以读取超过 64 KB 的日志。 -
添加
tpm2_sessionconfig工具以支持显示和配置会话属性。
有关显著变化的更多信息,请参阅 /usr/share/doc/tpm2-tools/Changelog.md 文件。
(BZ#2090748)
Intel E800 设备现在支持 iWARP 和 RoCE 协议
在这个版本中,您可以使用 enable_iwarp 和 enable_roce devlink 参数打开和关闭 iWARP 或 RoCE 协议支持。使用这个强制功能,您可以使用其中一个协议配置该设备。Intel E800 设备不支持同一端口上这两个协议。
要为特定 E800 设备启用或禁用 iWARP 协议,首先获取卡的 PCI 位置:
lspci | awk '/E810/ {print $1}'
$ lspci | awk '/E810/ {print $1}'
44:00.0
44:00.1
$
然后,启用或禁用协议。您可以将 pci/0000:44:00.0 用作第一个端口,并将 pci/0000:44:00.1 用于卡的第二个端口,作为 devlink 命令的参数
devlink dev param set pci/0000:44:00.0 name enable_iwarp value true cmode runtime devlink dev param set pci/0000:44:00.0 name enable_iwarp value false cmode runtime
$ devlink dev param set pci/0000:44:00.0 name enable_iwarp value true cmode runtime
$ devlink dev param set pci/0000:44:00.0 name enable_iwarp value false cmode runtime
要为特定 E800 设备启用或禁用 RoCE 协议,获取卡的 PCI 位置,如上所示。然后使用以下命令之一:
devlink dev param set pci/0000:44:00.0 name enable_roce value true cmode runtime devlink dev param set pci/0000:44:00.0 name enable_roce value false cmode runtime
$ devlink dev param set pci/0000:44:00.0 name enable_roce value true cmode runtime
$ devlink dev param set pci/0000:44:00.0 name enable_roce value false cmode runtime
(BZ#2096127)