第 4 章 对外部内核参数的重要更改
本章为系统管理员提供了与 Red Hat Enterprise Linux 10.0 一起发布的内核中重要变化的总结。这些更改可能包括,例如,添加或更新的 proc
条目、sysctl
和 sysfs
默认值、引导参数、内核配置选项或任何明显的行为更改。
新内核参数
accept_memory=
[MM]
值:
lazy
(默认)- 默认情况下,惰性接受未接受的内存,以避免较长的引导时间。lazy 选项会添加一些运行时开销,直到所有内存最终被接受为止。在大多数情况下,开销可以忽略不计。
eager
-
对于某些工作负载或用于调试目的,您可以使用
accept_memory=eager
来在启动过程中接受所有内存。
arm64.nomops
[ARM64]
无条件禁用 Memory Copy 和 Memory Set 指令支持。
cgroup_favordynmods=
[KNL]
启用或禁用 favordynmods
。
值:
-
true
-
false
默认为 CONFIG_CGROUP_FAVOR_DYNMODS
的值。
early_page_ext
[KNL]
将 page_ext
初始化强制到早期阶段,以覆盖早期的引导分配。
请注意,作为副作用,可能会禁用一些优化来实现这一点:例如,禁用并行内存初始化。因此,引导过程可能需要更长的时间,特别是在有大量内存的系统上。
可以通过 CONFIG_PAGE_EXTENSION=y
提供。
fw_devlink.sync_state=
[KNL]
当可以探测的所有设备都完成探测时,此参数控制使用尚未收到 sync_state ()
调用的设备做什么。
值:
strict
(默认)- 继续等待消费者成功探测。
timeout
-
在
deferred_probe_timeout
已到期或被late_initcall()
(如果CONFIG_MODULES
为false
)调用后,放弃等待消费者,并对任何还没有收到其sync_state()
的设备调用sync_state()
。
ia32_emulation=
[X86-64]
值:
true
-
允许加载 32 位程序,并执行 32 位系统调用,实质上在引导时覆盖
IA32_EMULATION_DEFAULT_DISABLED
。 false
- 无条件禁用 IA32 模拟。
kunit.enable=
[KUNIT]
启用执行 KUnit 测试。要求将 CONFIG_KUNIT
设置为完全启用。
您可以使用 KUNIT_DEFAULT_ENABLED
覆盖默认值。
默认值为 1(启用)。
mtrr=debug
[X86]
在引导时启用打印与 MTRR 寄存器相关的调试信息。
rcupdate.rcu_cpu_stall_cputime=
[KNL]
提供抽样期间内对 CPU 时间及中断和任务的计数的统计。对于多个连续的 RCU 停滞,所有抽样周期都在第一个 RCU 停滞超时的一半开始。
rcupdate.rcu_exp_stall_task_details=
[KNL]
在加速的 RCU CPU 停滞警告期间,打印阻止当前加速的 RCU 宽限期的任何任务的堆栈转储。
spec_rstack_overflow=
[X86]
控制 AMD Zen CPU 上的 RAS 溢出缓解。
值:
off
- 禁用缓解
microcode
- 仅启用微码缓解。
safe-ret
(默认)- 启用仅软件安全 RET 缓解。
ibpb
- 通过对内核条目发出 IBPB 来启用缓解。
ibpb-vmexit
- 仅在 VMEXIT 上发出 IBPB。这个缓解特定于云环境。
workqueue.unbound_cpus=
[KNL,SMP]
指定来约束要在未绑定工作队列中使用的一个或一些 CPU 。
值 :CPU 的一个列表。
默认情况下,所有在线 CPU 都对未绑定工作队列可用。
更新的内核参数
amd_iommu=
[HW, X86-64]
将参数传递给系统中的 AMD IOMMU 驱动程序。
值:
fullflush
-
已弃用,等同于
iommu.strict=1
。 off
- 不要初始化系统中发现的任何 AMD IOMMU。
force_isolation
-
为所有设备强制进行设备隔离。不再允许 IOMMU 驱动程序根据需要解除隔离要求。此选项不会覆盖
iommu=pt
。 force_enable
- 在启用了 IOMMU 且已知有 bug 的平台上强制启用 IOMMU。请谨慎使用这个选项。
- New:
pgtbl_v1
(默认) - 对 DMA-API 使用版本 1 页表。
- New:
pgtbl_v2
- 对 DMA-API 使用版本 2 页表。
- New:
irtcachedis
- 禁用中断重新映射表(IRT)缓存。
nosmt
[KNL, PPC, S390]
禁用对称多线程(SMT)。等同于 smt=1
。
[KNL, X86, PPC]
禁用对称多线程(SMT)。
nosmt=force
-
强制禁用 SMT。无法使用
sysfs
控制文件撤销。
page_reporting.page_reporting_order=
[KNL]
报告顺序的最小页。
值 :整数。
调整报告顺序的最小页。
New: 在超过 MAX_ORDER
时,页报告被禁用。
tsc=
禁用 TSC 的时钟源稳定性检查。
值:
- [x86]
reliable
- 将 tsc 时钟源标记为可靠。这在运行时禁用了时钟源验证,并在引导时完成了稳定性检查。用于对较旧的硬件和在虚拟化环境中启用高分辨率计时器模式。
- [x86]
noirqtime
-
不要使用 TSC 来做
irq
核算。用来在任何 RDTSC 较慢的平台上运行时间禁用IRQ_TIME_ACCOUNTING
,这个核算可能会增加开销。 - [x86]
unstable
- 将 TSC 时钟源标记为不稳定。这在启动时将 TSC 标记为无条件不稳定,并在 TSC watchdog 注意到后,避免任何进一步摇摆。
- [x86]
nowatchdog
- 禁用时钟源 watchdog。在具有严格延迟要求的情况下使用,其中不接受来自 时钟源 watchdog 的中断。
- [x86]
recalibrate
- 在系统上对 HW 计时器(HPET 或 PM 计时器)重新校准,其 TSC 频率是从使用 MSR 或 CPUID (0x15)的 HW 或 FW 获取的。如果差别超过 500 ppm,则警告。
- New: [x86]
watchdog
使用 TSC 作为 watchdog 时钟源,使用它来检查其他 HW 计时器(HPET 或 PM 计时器),但仅在 TSC 被认为值得信任的系统上。
早期的
tsc=nowatchdog
抑制了这个。后期的tsc=nowatchdog
覆盖了这个。控制台消息标记任何此类抑制或覆盖。
usbcore.authorized_default=
[USB]
默认的 USB 设备授权。
值:
- New:
-1
(默认) - 授权了(与 1 相同)。
0
- 未授权。
1
- 授权了。
2
- 如果设备连接到内部端口,则授权。
删除的内核参数
-
cpu0_hotplug
-
sysfs.deprecated
新的 sysctl 参数
io_uring_group
值:
1
-
进程必须是特权的(
CAP_SYS_ADMIN
),或者在io_uring_group
组中,以创建一个io_uring
实例。 -1
(默认)-
只有具有
CAP_SYS_ADMIN
功能的进程才能创建io_uring
实例。
numa_balancing_promote_rate_limit_MBps
不同内存类型之间过高的提升或降级吞吐量可能会损害应用程序延迟。您可以使用此参数来对提升吞吐量进行速率限制。每节点的最大提升吞吐量(以 MB/s 为单位)被限制为不超过设置值。
一个经验法则是将其设置为比 PMEM 节点写带宽的 1/10 小。
更新了 sysctl 参数
io_uring_disabled
防止所有进程创建新的 io_uring
实例。启用这个会缩小内核的攻击面。
值:
- New:
0
-
所有进程都可以正常创建
io_uring
实例。 - New:
1
对于不在 io_uring_group 组中的非特权进程,
io_uring
创建被禁用。io_uring_setup()
失败,并显示-EPERM
。仍可使用现有的io_uring
实例。如需更多信息,请参阅
io_uring_group
的文档。- New:
2
(默认) -
对所有进程,
io_uring
创建被禁用。io_uring_setup()
总是失败,并显示-EPERM
。仍可使用现有的io_uring
实例。