7.7. 内核
内核不再在 IBM Z 系统中返回假的警告
在以前的版本中,装有RHEL 8 的 IBM Z 系统的 ZONE_DMA
内存区缺少允许用户访问的条目。因此,内核返回假的警告,例如:
... Bad or missing usercopy whitelist? Kernel memory exposure attempt detected from SLUB object 'dma-kmalloc-192' (offset 0, size 144)! WARNING: CPU: 0 PID: 8519 at mm/usercopy.c:83 usercopy_warn+0xac/0xd8 ...
当通过 sysfs
接口访问某些系统信息时会出现警告信息。例如,运行 debuginfo.sh
脚本。
在这个版本中,在 Direct Memory Access(DMA)缓冲中添加了一个标志,以便用户空间应用程序能够访问缓冲区。
因此,在以上场景中不会显示任何警告信息。
(BZ#1660290)
RHEL 系统从 tboot
GRUB 条目中如预期引导
在以前的版本中,版本 1.9.12-2 的 tboot
工具会导致一些带有 Trusted Platform 模块(TPM) 2.0 的 RHEL 系统无法在旧模式下引导。因此,当系统试图从 tboot
Grand Unified Bootloader(GRUB)条目引导时停止。随着新版本的 RHEL 8 和 tboot
工具的更新,这个问题已被解决,RHEL 系统可以如预期引导。
(BZ#1947839)
内核在高工作负载容器场景中成功重新声明内存
当为容器中的 I/O 和内存限制卷时,负责重新声明内存的内核代码会因为数据竞争条件而出现软锁定。如果出现以下情况,会出现数据竞争现象:
- 至少两组 CPU 线程尝试同时修改同一组数据。
- 至少一个 CPU 线程试图在 dataset 上进行写入操作。
根据修改 dataset 的每个线程准确时间,结果可以是 A、B 或 AB(确定)。
当容器面临内存压力时,这种情况可能会导致多次内存(OOM)终止,从而导致容器锁定并变得不响应。在这个发行版本中,用于锁定和优化的 RHEL 内核代码已更新。因此,内核不再会变为没有响应,数据也不会受到竞争条件的影响。
(BZ#1860031)
离线内存的 RHEL 8 不再会导致内核 panics
在以前的版本中,当使用启动但标记为离线的内存运行 RHEL 8 时,内核在某些情况下会尝试访问未初始化的内存页面。因此,会出现内核 panic。这个版本修复了闲置页面跟踪的内核机制,它可以防止问题的发生。
(BZ#1867490)
NUMA 系统不再遇到意外内存布局
在以前的版本中,因为缺少 CONFIG_NODES_SPAN_OTHER_NODES
选项,ARM64
和 S390
架构在 NUMA 系统上会遇到意外的内存布局。因此,来自不同 NUMA 节点的内存区域被交集,来自低 NUMA 节点的内存区域被添加到高 NUMA 节点中。
在这个版本中,NUMA 系统不再遇到内存布局问题。
(BZ#1844157)
rngd 服务不再忙于等待poll()系统调用
从版本 4.18.0-193.10 开始,内核添加了 FIPS 模式的新内核熵源。因此,rngd
服务忙于等待 /dev/random
设备的 poll()
系统调用。这会导致当系统处于 FIPS 模式时,消耗 100% 的 CPU 时间。在这个版本中,在 FIPS 模式中,/dev/random 设备的
poll()
处理程序已从默认处理程序改为专门为 /dev/random
设备开发的处理程序。因此,在上述场景中,rngd
服务不再忙于等待 poll(
)。
(BZ#1884857)
启用了对 SCHED_DEADLINE 调度程序的 HRTICK 支持
在以前的版本中,高分辨率系统计时器(HRTICK
)的功能不适用于使用 SCHED_DEADLINE
策略配置的某些任务。因此,使用 SCHED_DEADLINE
调度程序的这些任务的节流机制,消耗了为这些任务配置的所有运行时。这个行为会在实时环境中造成意外的延迟激增。
在这个版本中,启用了 HRTICK
功能,该功能提供了高分辨率优先权。HRTICK
使用高分辨率计时器,它会在任务完成运行时时强制使用节流机制。因此,这个问题不再在上述场景中发生。
(BZ#1885850)
tpm2-abrmd rebase 到 2.3.3.2 版本
tpm2-abrmd
软件包已升级到 2.3.3.2 版本,其提供了多个程序错误修复。主要变更包括:
- 修复了临时处理的使用
- 修复了 TPM 命令传输接口(TCTI)中的部分读取
- 重构了访问代理(access broker)
cxgb4
驱动程序不再导致 kdump
内核崩溃
在以前的版本中,在 vmcore
文件中保存信息时 kdump
内核会崩溃。因此,cxgb4
驱动程序阻止 kdump
内核保存内核以便稍后进行分析。要临时解决这个问题,在 kdump
内核命令行中添加 novmcoredd
参数以允许保存核心文件。
随着 RHSA-2020:1769 公告的发布,k dump
内核可以正确处理这种情况,不再崩溃。