5.4.7. 内核

现在完全支持子部分内存热插拔

在以前的版本中,一些平台与物理内存区域一致,如 Dual In-Line Modules(DIMM)和 interleave 设置为 64MiB 内存边界。但是,由于 Linux 热插拔子系统使用 128MiB 的内存大小,热插拔新设备会导致多个内存区域在单个热插拔内存窗口中重叠。因此,这会导致使用以下或类似的调用 trace 列出可用持久内存命名空间失败:

WARNING: CPU: 38 PID: 928 at arch/x86/mm/init_64.c:850
add_pages+0x5c/0x60
    [..]
    RIP: 0010:add_pages+0x5c/0x60
    [..]
    Call Trace:
     devm_memremap_pages+0x460/0x6e0
     pmem_attach_disk+0x29e/0x680 [nd_pmem]
     ? nd_dax_probe+0xfc/0x120 [libnvdimm]
     nvdimm_bus_probe+0x66/0x160 [libnvdimm]

在这个版本中解决了这个问题,并支持 Linux 热插拔子系统来启用多个内存区域共享一个热插拔内存窗口。

(BZ#1724969)

数据崩溃现在触发 BUG 而不是 WARN 消息

在这个版本中,lib /list_debug.c 列表会触发 BUG,它会生成带有 vmcore 的报告。在以前的版本中,当遇到数据崩溃时,会生成一个简单的 WARN,这很可能不被留意。设置 CONFIG_BUG_ON_DATA_CORRUPTION 后,内核现在会创建一个崩溃并触发 BUG 来应对数据损坏。这可防止进一步损坏并降低安全风险。kdump 现在会生成 vmcore,它可改进数据损坏错误报告。

(BZ#1714330)

提供了对 Intel Carlsville 卡的支持,但不在 RHEL 8.2 中验证

提供了 Intel Carlsville 卡支持,但不在 Red Hat Enterprise Linux 8.2 上进行测试。

(BZ#1720227)

RPS 和 XPS 不再将作业放在隔离的 CPU 中

在以前的版本中,接收数据包提取(RPS)软件队列机制和传输包服务关联(XPS)可传输在所有 CPU 集合上分配的队列选择机制,包括隔离的 CPU。因此,当对延迟敏感的工作负载使用与运行 RPS 或 XPS 作业相同的 CPU 时,可能会导致实时环境中出现意外延迟。在这个版本中,storage _rps_map() 函数不包括任何隔离的 CPU 用于 RPS 配置。同样,用于 XPS 配置的内核驱动程序也尊重 CPU 隔离。因此,在上述场景中,RPS 和 XPS 不再将作业放在隔离的 CPU 上。如果在 /sys/devices/pci*/net/dev/queues/rx-*/rps_cpus 文件中配置隔离 CPU,会出现以下错误:

Error: "-bash: echo:write error: Invalid argument"

但是,在 /sys/devices/pci*/net/dev/queues/tx-*/xps_cpus 文件中手动配置隔离 CPU 成功在隔离的 CPU 上分配 XPS 作业。

请注意,在具有隔离 CPU 的环境中网络工作负载可能会遇到一些性能变化。

(BZ#1867174)