Menu Close

第 5 章 对外部内核参数的重要更改

本章为系统管理员提供了 Red Hat Enterprise Linux 8.5 附带的内核有显著变化的总结。这些更改包括添加或更新的 proc 条目、sysctlsysfs 默认值、引导参数、内核配置选项或者任何可见的行为更改。

新内核参数

idxd.sva = [HW]

格式: <bool>

使用这个参数,您可以强制禁用对 idxd 内核模块的共享虚拟内存(SVA)支持。

默认值为 true( 1)

lsm.debug = [SECURITY]
使用这个参数,您可以启用 Linux 安全模块(LSM)初始化调试输出。
lm = lsm1,…​,lsmN [SECURITY]

使用这个参数,您可以选择 Linux Security 模块(LSM)初始化顺序。

此参数覆盖 CONFIG_LSM 选项和 security= 参数。

rcutree.qovld = [KNL]

使用这个参数,您可以设置排队的 Read-copy-update(RCU)回调的阈值。除这个阈值外,RCU 的 force-quiescent-state 扫描将积极采纳 cond_resched() 系统调用的帮助,并调度 IPI,以帮助 CPU 更快地到达静默状态。

您可以将此参数设置为小于零的值,以便在引导时根据 rcutree.qhimark 参数设置此参数。或者,将此参数设置为零,以禁用更积极的帮助加入。

rcutree.rcu_unlock_delay = [KNL]

使用这个参数,您可以在将配置布尔值设置为 CONFIG _RCU_STRICT_GRACE_PERIOD=y 的内核中指定 rcu_read_unlock() -time delay。

默认值为 0。

更大的延迟会增加捕获 Read-copy-update(RCU)指针泄漏的可能性。这是相关的 rcu_read_unlock() 完成后 RCU 保护指针有缺陷的使用。

rcutorture.irqreader = [KNL]
使用这个参数,您可以从 Interrupt 请求(IRQ)处理程序或计时器处理程序中运行 Read-copy-update(RCU)读取器。
rcutorture.leakpointer = [KNL]
使用这个参数,您可以将 Read-copy-update(RCU)受保护的指针泄露出读取器。这可能会导致 splats,并旨在测试 CONFIG_RCU_STRICT_GRACE_PERIOD=y 等配置的能力来检测此类泄漏。
rcutorture.read_exit = [KNL]
使用这个参数,您可以设置 read-then-exit kthreads 的数量,以测试 Read-copy-update(RCU)更新器和 task-exit 处理的交互。
rcutorture.read_exit_burst = [KNL]
使用这个参数,您可以在给定的 read-then-exit 集中指定生成一组 read-then-exit kthreads 的次数。
rcutorture.read_exit_delay = [KNL]
使用这个参数,您可以指定连续的读-then-exit 测试集之间的延迟(以秒为单位)。
rcutorture.stall_cpu_block = [KNL]
使用这个参数,您可以在阻塞时设置睡眠状态。因此,除了其它与停滞相关的活动外,还会出现来自抢占的 Read-copy-update(RCU)的警告。
rcutorture.stall_gp_kthread = [KNL]

使用这个参数,您可以指定 Read-copy-update(RCU)gate-period kthread 中强制睡眠的持续时间(以秒为单位)来测试 RCU CPU 停滞警告。

将此参数设置为零可禁用功能。

如果同时指定了 stall_cpustall_gp_kthread 参数,则 kthread 首先会耗尽,然后是 CPU。

rcupdate.rcu_cpu_stall_suppress_at_boot = [KNL]
使用这个参数,您可以阻止 RCU CPU 停止警告信息并阻止在早期引导过程中发生 rcutorture 写卡警告。这是生成 init 任务之前的时间。
rcupdate.rcu_task_ipi_delay = [KNL]

使用这个参数,您可以设置 jiffies 的时间,其中 Read-copy-update(RCU)任务避免发送 IPI,从给定宽限期的开头开始。

设置大量数字可避免干扰实时工作负载,但会延长宽限期。

refscale.holdoff = [KNL]
使用这个参数,您可以设置 test-start Holoff 周期。此参数的目的是将测试的开始延迟到启动完成,以避免干扰。
refscale.loops = [KNL]

使用这个参数,您可以在测试时设置同步原语的循环数量。增加这个数量可减少因为循环启动/结束开销而导致的空出。

在 2020 年 x86 笔记本电脑中,默认值已减少为每被动的几秒钟。

refscale.nreaders = [KNL]

使用这个参数,您可以设置读取器的数量。

默认值为 -1,其中 N 是 CPU 数量大约 75%。

refscale.nruns = [KNL]
通过这个参数,您可以设置运行数量,每个都转储到控制台日志中。
refscale.readdelay = [KNL]
使用这个参数,您可以设置只读关键部分持续时间,以微秒为单位。
refscale.scale_type = [KNL]
使用这个参数,您可以指定要测试的读保护实现。
refscale.shutdown = [KNL]

通过这个参数,您可以在性能测试结束时关闭系统。

默认值为 1,它会关闭系统 - refscale 内置在内核中。

值 0 并使系统保持运行 - refscale 将作为模块构建。

refscale.verbose = [KNL]
使用这个参数,您可以启用额外的 printk() 语句。
scftorture.holdoff = [KNL]

使用这个参数,您可以指定开始测试前要保留的秒数。

模块插入时,paramter 默认为零,内置 smp_call_function() 测试时则默认为 10 秒。

scftorture.longwait = [KNL]

使用这个参数,您可以请求非常长的等待时间,这些等待会随机选择达到所选的限制(以秒为单位)。

默认值为零,它禁用了此功能。

请注意,请求少量非零秒数可能导致读-copy-update(RCU)CPU 停滞警告,以及软锁定投诉等。

scftorture.nthreads = [KNL]

使用这个参数,您可以指定要生成的 kthreads 数来调用 smp_call_function() 函数系列。

默认值 -1 指定等于 CPU 数量的 kthreads 数。

scftorture.onoff_holdoff = [KNL]
使用这个参数,您可以指定在启动 CPU-hotplug 操作前测试开始后等待的秒数。
scftorture.onoff_interval = [KNL]

使用这个参数,您可以指定连续 CPU-hotplug 操作之间等待的秒数。

默认值为零,它禁用了 CPU-hotplug 操作。

scftorture.shutdown_secs = [KNL]

使用这个参数,您可以指定测试开始后的秒数。测试后,系统关闭。

如果默认值为零,您可以避免关闭系统。非零值对自动测试很有用。

scftorture.stat_interval = [KNL]

使用这个参数,您可以指定输出当前测试统计信息到控制台之间的秒数。

值为零可禁用统计输出。

scftorture.stutter_cpus = [KNL]
使用这个参数,您可以指定要在每次更改到正在测试的 CPU 集合之间等待的 jiffies 数量。
scftorture.use_cpus_read_lock = [KNL]
使用这个参数,您可以在调用其中一个 smp _call_function*()功能时,使用 use_cpus_read_lock ()系统调用来禁用默认的 preempt_disable () 系统调用。
scftorture.verbose = [KNL]
使用这个参数,您可以启用额外的 printk() 语句。
scftorture.weight_single = [KNL]

这个参数指定 smp_call_function_single() 函数使用零"wait"参数的可能性权重。

如果所有其他权重均为 -1,则值为 -1 选择默认值。但是,如果至少一个权重具有其他值,则值为 -1 时选择 0 权重。

scftorture.weight_single_wait = [KNL]
这个参数指定 smp_call_function_single() 函数使用非零 "wait" 参数的可能性权重。如需更多信息,请参阅 weight_single
scftorture.weight_many = [KNL]

这个参数指定 smp_call_function_many() 函数使用零"wait"参数的可能性权重。

请注意,为这种权重设置高的可能性可能会给系统带来严重的进程间中断(IPI)负载。

如需更多信息,请参阅 weight_single

scftorture.weight_many_wait = [KNL]

这个参数指定 smp_call_function_many() 函数使用非零 "wait" 参数的可能性权重。

如需更多信息,请参阅 weight_singleweight_many

scftorture.weight_all = [KNL]

这个参数指定对 smp_call_function_all() 函数使用零"wait"参数的可能性权重。

如需更多信息,请参阅 weight_singleweight_many

scftorture.weight_all_wait = [KNL]

这个参数指定 smp_call_function_all() 函数使用非零 "wait" 参数的可能性权重。

如需更多信息,请参阅 weight_singleweight_many

torture.disable_onoff_at_boot = [KNL]
使用这个参数,您可以防止在 init 任务生成前进行入侵的 CPU-hotplug 组件。
torture.ftrace_dump_at_shutdown = [KNL]

通过这个参数,您可以在组群-test 关闭时转储 ftrace 缓冲区,即使没有错误也是如此。

当许多测试同时运行时,这可能会非常昂贵,特别是在有旋转规则存储的系统上。

更新的内核参数

IOMMU.forcedac = [ARM64, X86]

使用这个参数,您可以控制 PCI 设备的输入输出虚拟地址(IOVA)分配。

格式:{ 0 | 1 }

  • 0 - 若有需要,先尝试分配 32 位直接内存访问(DMA)地址,然后再回退到完整范围。
  • 1 - 从所有可用范围直接分配.选项强制为 PCI 卡(支持大于 32 位寻址)的双地址周期。
page_poison = [KNL]

通过这个 boot-time 参数,您可以更改 buddy 分配器上的投毒状态,并附带 CONFIG_PAGE_POISONING=y 配置。

  • off :关闭投毒(默认)
  • 开启 :打开投毒
rcuscale.gp_async = [KNL]
通过这个参数,您可以测量异步宽松(prima-period )原语的性能,如 call_rcu( )。
rcuscale.gp_async_max = [KNL]
使用这个参数,您可以指定每个作者线程的最大未完成的回调数。当写入器线程超过这个限制时,它会调用对应的 rcu_barrier() 类别,以允许之前发布的回调排空。
rcuscale.gp_exp = [KNL]
通过此参数,您可以测量加速宽限期原语的性能。
rcuscale.holdoff = [KNL]
使用这个参数,您可以设置 test-start Holoff 周期。此参数的目的是将测试的开始延迟到启动完成,以避免干扰。
rcuscale.kfree_rcu_test = [KNL]
通过这个参数,您可以测量 kfree_rcu() 填充的性能。
rcuscale.kfree_nthreads = [KNL]
使用这个参数,您可以指定 kfree_rcu() 函数运行循环的线程数量。
rcuscale.kfree_alloc_num = [KNL]
使用这个参数,您可以指定分配数量并在迭代中释放。
rcuscale.kfree_loops = [KNL]
使用这个参数,您可以指定 rcuscale.kfree_alloc_num 分配和释放的循环数量。
rcuscale.nreaders = [KNL]

使用这个参数,您可以设置 Read-copy-update(RCU)读取器的数量。

值 -1 选择 N,其中 N 是 CPU 的数量。

rcuscale.nwriters = [KNL]

使用这个参数,您可以设置 Read-copy-update(RCU)作者数量。

值的工作方式与 rcuscale.nreaders=N 相同,其中 N 是 CPU 的数量。

rcuscale.perf_type = [KNL]
使用这个参数,您可以指定要测试的 Read-copy-update(RCU)实现。
rcuscale.shutdown = [KNL]
使用这个参数,您可以在性能测试完成后关闭系统。这对实机自动测试非常有用。
rcuscale.verbose = [KNL]
使用这个参数,您可以启用额外的 printk() 语句。
rcuscale.writer_holdoff = [KNL]

使用这个参数,您可以以微秒为单位在宽限期间进行写操作。

默认值为零,表示"无暂停"。

安全性 = [SECURITY]

使用这个参数,您可以选择要在启动时启用的一个传统的"major"安全模块。

这已被 lsm 参数弃用。

split_lock_detect = [X86]

使用这个参数,您可以启用分割锁定检测或总线锁定检测。

启用后,如果存在硬件支持,则通过原子指令访问缓存线之间的数据将产生:

  • 分割锁定检测的校对检查异常
  • 总线锁定检测的 debug 异常

    可能的值:

  • off - 不启用此功能
  • warn - 内核发送有关应用程序的速率限制警告,并触发 #AC 异常或 #DB 异常。这个模式是支持分割锁定检测或总线锁定检测的 CPU 的默认模式。如果在硬件中启用了两个功能,则默认行为是 #AC。
  • fatal - 内核向触发 #AC 异常或 #DB 异常的应用程序发送 SIGBUS 信号。如果在硬件中启用了两个功能,则默认行为是 #AC。
  • ratelimit:N - 为总线锁定检测将系统宽速率限制设置为每秒 N 总线锁(0 < N › 1000)。无用于拆分锁定检测.

    如果 #AC 异常在内核中或固件中发生(例如,在用户模式中执行时没有),则内核将在 警告致命 模式下出现 oops。

    只有在 CPL > 0 时才会触发总线锁定的 #DB 异常。

usb-storage.quirks =
k = NO_SAME(请勿使用 WRITE_SAME,仅 UAS)