第 10 章 内核
AMD64 和 Intel 64 系统的 kdump
中的多个 CPU 支持
在 AMD64 和 Intel 64 系统中,
kdump
内核崩溃转储机制现在可以引导,并启用了多个 CPU。这解决了在创建内核崩溃转储时因为高输入和输出而出现问题,在使用 maxcpus=1 或 nr_cpus=1 内核选项时,Linux 可能无法为设备分配中断。此功能以前作为技术预览提供,现在被完全支持。
要在崩溃内核中启用多个 CPU,请在内核命令行中提供 nr_cpus= X 选项(其中 X 是处理器数)。
支持 kpatch
kpatch 工具允许用户管理二进制内核补丁集合,这些补丁可用于在不重启的情况下动态修补内核。在以前的版本中,kpatch 作为技术预览提供,现在根据 Red Hat Customer experience and Engagement 团队使用时被完全支持。
有关实时内核补丁支持的详情,请参考 https://access.redhat.com/solutions/2206511。
SHMMAX 和 SHMALL 内核参数返回到默认值
在以前的版本中,
kernel.shmmax
和 kernel.shmall
参数的值(在 /usr/lib/sysctl.d/00-system.conf
文件中设置)太低。因此,一些应用程序(如 SAP )无法正常工作。现在,删除了不可识的覆盖,内核默认值就足够高。
透明巨页不再导致内存崩溃
在读写操作过程中,透明巨页不会被正确同步。在某些情况下,这会导致启用透明巨页时导致内存崩溃。在透明巨页处理中添加了内存障碍,以便不再发生这个内存崩溃。
SCSI LIO rebase
SCSI 内核目标 LIO 已从 Linux-4.0.stable 中进行了 rebase。这包括很多程序错误修复,最重要的是 iSER,但也包括对 XCOPY、WRITE SAME 和 ATS 命令的支持,以及 DIF 数据完整性支持。
makedumpfile 现在支持新的 sadump 格式,代表物理内存最多 16 TB
makedumpfile 命令现在支持新的 sadump 格式,它们可代表超过 16TB 的物理内存空间。这允许 makedumpfile 用户读取 16 TB 的转储文件,由 sadump 在即将发布的服务器模型上生成。
删除或升级内核不再显示警告
kmod
用来管理 kABI 兼容的模块符号链接的 weak-modules 脚本以前在删除与内核关联的文件时删除 /lib/modules/<version>/weak-updates
目录。此目录归 kernel 软件包所有,并删除它导致文件系统与 rpm
期望的状态不一致。这会导致在每次内核升级或删除时会显示一个警告。
这个脚本已被更新,以删除
weak-updates
目录的内容,但保留该目录本身,不再会显示警告。
新软件包: libevdev
libevdev 是 Linux 内核输入事件设备的低级别库。它提供安全的接口来查询设备功能并从设备处理事件。当前版本的 xorg-x11-drv-evdev 和 xorg-x11-drv-synaptics 需要此库作为依赖项。
TuneD 现在可以在 no-daemon 模式下运行
在以前的版本中,Tuned 只能作为守护进程运行,这会影响因为 Tuned 守护进程的内存占用而小系统的性能。在这个版本中,一个 no-daemon (一个 shot)模式(不需要任何常量内存)已被添加到 Tuned 中。默认禁用 no-daemon 模式,因为在这个模式中缺少大量 Tuned 功能。
新软件包: tuned-profiles-realtime
tuned-profiles-realtime 软件包已添加到 Red Hat Enterprise Linux 服务器和 Red Hat Enterprise Linux for Real Time 中。它包含一个 realtime 配置集,用于监控用于执行 CPU 隔离和 IRQ 调整。激活配置集后,它会读取其 variable 部分,它指定要隔离的 CPU,并移动可能移出这些 CPU 内核的所有线程。
SCSI 错误信息现在可以被稳定地解释
之前的内核更改 printk ()函数会导致在多行中记录小型计算机系统接口(SCSI)错误消息。因此,如果在不同设备间发生多个错误,则可能无法正确解释错误消息。在这个版本中,SCSI 错误日志记录代码使用 dev_printk ()选项记录错误消息,该选项将每个错误消息与生成错误的设备相关联。
libATA 子系统和驱动程序已更新
此功能增强更新提供了很多程序错误修复和增强 libATA 子系统和驱动程序。
FCoE 和 DCB 已升级
以太网光纤通道(FCoE)和数据中心桥接(DCB)内核组件已升级到最新的上游版本,它提供了很多程序错误修复和增强。
perf
rebase 到版本 4.1
perf 软件包已升级到上游版本 4.1,它提供很多性能和稳定性修复和增强。值得注意的是,这个 rebase 添加了 Intel Cache QoS Monitoring 和 AMD IBS Ops 功能,并为压缩的内核模块提供 Intel Xeon v4 支持,用于参数化事件并支持指定断点长度。另外,在
perf
工具中添加了多个选项,如 --system-wide、top -z、top -w、trace --filter-pids 和 trace --event 选项。
支持 TPM 2.0
在这个版本中,增加了对兼容受信任的平台模块(TPM)设备的版本 2.0 的驱动级别支持。
turbostat
现在提供正确的输出
在以前的版本中,如果系统有 MSR 设备支持,则
turbostat
工具会通过读取 cpu0 的 /dev/cpu/0/msr 文件而不是 cpu
0
来检测。因此,禁用 CPU 会导致 CPU 从 turbostat 输出中被删除。这个程序错误已被解决,运行 turbostat ls 命令现在会返回正确的输出。
turbostat
现在支持 Intel Xeon v5 处理器
此增强为
turbostat
工具添加了 Intel Xeon v5 处理器支持。
zswap
工具使用 zpool
API
在以前的版本中,
zswap
工具直接使用 zbud
,它是一个以 2:1 (满)存储压缩页面的存储池。这个版本引进了 zpool
API,提供对 zbud
或 zsmalloc
池的访问: zsmalloc
存储压缩的页面,以更高的密度,从而为高压缩的页面提供更多重新声明的内存。在这个版本中,zsmalloc
已提升到 /mm 驱动程序,以便 zpool
可以正常工作。
/proc/pid/cmdline 文件长度现在没有限制
ps 命令的 /proc/pid/cmdline 文件长度限制之前在内核中硬编码为 4096 个字符。这个版本确保 /proc/pid/cmdline 的长度是无限的,这对于使用长命令行参数列出进程特别有用。
现在支持 dma_rmb 和 dma_wmb
这个版本引入了两个新的原语,用于同步缓存一致性内存写入和读取,dma_wmb ()和 dma_rmb ()。此功能可用于适当在驱动程序中使用。
qib HCA 驱动程序连接
由于 SRP LOGIN ID 中的不匹配,SRP 目标之前无法通过 qib HCA 设备驱动程序进行连接。在这个版本中解决了这个程序错误,上面提到的连接现在可以成功建立。
内存限制增加
从 Red Hat Enterprise Linux 7.2 开始,AMD64 和 Intel 64 系统上的最大支持内存限值从 6 TB 增加到 12 TB。
dracut
的新变量
在这个版本中,为
dracut
initramfs 生成器引入了以下变量,以便在内核命令行中使用:
rd.net.dhcp.retry=cnt
- 如果设置了这个选项,则dracut
工具会在失败前尝试通过 DHCP cnt times 连接。默认值为 1。rd.net.timeout.dhcp=arg
- 如果设置了这个选项,则使用-timeout arg
选项调用 dhclient 命令。rd.net.timeout.iflink=seconds
- 等待 秒数,直到链接出现。默认为 60 秒。rd.net.timeout.ifup=seconds
- 等待到链接处于UP
状态 的秒数。默认值为 20 秒。rd.net.timeout.route=seconds
- 等待 秒数,直到路由显示。默认值为 20 秒。rd.net.timeout.ipv6dad=seconds
- 等待 IPv6 DAD 完成 的秒数。默认值为 50 秒。rd.net.timeout.ipv6auto=seconds
- 等待到分配 IPv6 自动地址 的秒数。默认值为 40 秒。rd.net.timeout.carrier=seconds
- 等待 秒数,直到识别载体为止。默认值为 5 秒。