6.7.8. 内核

i40iw 模块不会在引导时自动载入

由于许多 i40e NIC 不支持 iWarp,并且 i40iw 模块没有全面支持 suspend/resume,因此此模块默认不会自动加载,以确保暂停/恢复正常工作。要临时解决这个问题,请手动编辑 /lib/udev/rules.d/90-rdma-hw-modules.rules 文件以启用 i40iw 的自动负载。

另请注意,如果同一机器上安装了另一个 RDMA 设备,非i40e RDMA 设备会触发 rdma 服务,它会加载所有已启用的 RDMA 堆栈模块,包括 i40iw 模块。

(BZ#1623712)

使用 fadump 时,网络接口被重命名为 kdump-<interface-name>

当使用固件辅助转储(fadump)捕获 vmcore 并使用 SSH 或 NFS 协议将其保存到远程机器时,如果 <interface-name> 是通用的,例如 *eth# 或 net#,则会将网络接口重命名为 kdump-<interface-name>。这是因为初始 RAM 磁盘(initrd)中的 vmcore 捕获脚本在网络接口名称中添加 kdump- 前缀来保护持久性命名。同样的 initrd 也用于常规引导,因此生产内核的接口名称也会被更改。

(BZ#1745507)

有大量持久内存的系统在引导过程中出现延迟

有大量持久内存的系统需要很长时间才能引导,因为初始化内存是序列化的。因此,如果 /etc/fstab 文件中列出了持久的内存文件系统,系统在等待设备可用时可能会超时。要临时解决这个问题,将 /etc/systemd/system.conf 文件中的 DefaultTimeoutStartSec 选项配置为足够大的值。

(BZ#1666538)

KSM 有时会忽略 NUMA 内存策略

当使用 merge_across_nodes=1 参数启用内核共享内存(KSM)功能时,KSM 会忽略 mbind()功能设置的内存策略,并可能会将某些内存区域的页面合并到 Non-Uniform Memory Access(NUMA)节点,它们与策略不匹配。

要临时解决这个问题,如果通过 QEMU 使用 NUMA 内存绑定,请禁用 KSM,或将 merge_across_nodes 参数设置为 0。因此,为 KVM 虚拟机配置的 NUMA 内存策略可以正常工作。

(BZ#1153521)

启用 fadump 时系统在引导时进入紧急模式

initramfs 方案中启用了 fadump (kdump)或 dracut squash 模块时,系统进入紧急模式,因为 systemd 管理器无法获取挂载信息并将 LV 分区配置为挂载。要临时解决这个问题,请添加以下内核命令行参数 rd.lvm.lv=<VG>/<LV> 以正确发现并挂载失败的 LV 分区。因此,系统将在上述场景中成功引导。

(BZ#1750278)

在 kdump 内核命令行中使用 irqpoll 会导致 vmcore 生成失败

由于在 Amazon Web Services(AWS)云平台上运行的 64 位 ARM 架构中 nvme 驱动程序存在底层问题,如果为第一个内核提供了 irqpoll kdump 命令行参数,vmcore 生成会失败。因此,在内核崩溃后,/var/crash/ 目录中不会转储 vmcore。要临时解决这个问题:

  1. irqpoll 添加到 /etc/sysconfig/kdump 文件中的 KDUMP_COMMANDLINE_REMOVE 键。
  2. 运行 systemctl restart kdump 命令重启 kdump 服务。

因此,第一个内核可以正确引导,在内核崩溃时 vmcore 应该会被捕获。

(BZ#1654962)

Debug 内核无法在 RHEL 8 的崩溃捕获环境中引导

由于 debug 内核的内存需求特性,会在使用 debug 内核并触发内核 panic 时出现问题。因此,调试内核无法作为捕获内核引导,而是生成一个堆栈追踪。要临时解决这个问题,相应地增大崩溃内核内存。因此,debug 内核可以在崩溃捕获环境中成功引导。

(BZ#1659609)

softirq 更改可能会导致 localhost 接口在负载过重时丢弃 UDP 数据包

对 Linux 内核软件中断(softirq)处理进行了更改,以减少拒绝服务(DOS)效果。因此,在 localhost 接口高负载下丢弃 User Datagram Protocol(UDP)数据包时,会出现这样的情况。

要临时解决这个问题,将网络设备积压缓冲的大小增加到值 6000:

echo 6000 > /proc/sys/net/core/netdev_max_backlog

在红帽进行的测试中,这个值足以防止数据包丢失。负载较大的系统可能需要更大的积压值。增加的积压会导致潜在的延迟在 localhost 接口上增加。

结果是增加缓冲区并允许更多数据包等待处理,这降低了丢弃 localhost 数据包的几率。

(BZ#1779337)