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


本章为系统管理员提供了与 Red Hat Enterprise Linux 9.3 一起分发的内核中显著变化的总结。这些更改可能包括,例如,添加或更新的 proc 条目、sysctlsysfs 默认值、引导参数、内核配置选项或任何明显的行为更改。

新内核参数

amd_pstate=[X86]

使用这个内核参数,您可以扩展 AMD CPU 的性能。可用值包括:

  • disable - 不启用 amd_pstate 作为支持的处理器的默认扩展驱动程序。
  • passive - 使用带有被动模式的 amd_pstate 作为扩展驱动程序。在这个模式中,禁用了自主选择。驱动程序请求一个所需的性能级别,如果保证的性能级别满足它,则平台将尝试匹配同样的性能水平。
  • active - 使用 amd_pstate_epp 驱动程序实例作为扩展驱动程序,如果软件希望向 CPPC 固件的性能(0x0)或能源效率(0xff)倾斜,则驱动程序向硬件提供一个提示。然后,CPPC 电源算法将计算运行时工作负载,并调整实时核频率。
  • guided - 激活指导的自主模式.驱动程序请求最小和最大的性能级别,平台可自主选择此范围内的性能级别,并适合当前的工作负载。
arm64.nosve=[ARM64]
使用这个内核参数,您可以无条件地禁用 Scalable Vector Extension 支持。
arm64.nosme=[ARM64]
使用这个内核参数,您可以无条件地禁用 Scalable Matrix Extension 支持。
gather_data_sampling=[X86,INTEL]

使用这个内核参数,您可以控制 Gather Data Sampling (GDS)缓解。

GDS 是一个硬件漏洞,它允许对之前存储在向量寄存器中的数据进行非特权推测访问。

默认情况下,此问题在更新的微码中被缓解。缓解可能会有性能影响,但可以被禁用。在没有微码缓解的系统上,禁用 AVX 服务器作为一种缓解。可用值包括:

  • force - 禁用 AVX 以缓解没有微码缓解的系统。如果存在微码缓解,则无效。已知在带有 bug 的 AVX 枚举用户空间中会导致崩溃。
  • off - 禁用 GDS 缓解。
nospectre_bhb=[ARM64]
使用这个内核参数,您可以禁用对 Spectre-BHB (分支历史记录注入)漏洞的所有缓解。系统可能允许使用此选项的数据泄漏。
trace_clock=[FTRACE]

使用这个内核参数,您可以设置在引导时用于追踪事件的时钟。可用值包括:

  • local - 使用每个 CPU 时间戳计数器。
  • global - 事件时间戳在 CPU 之间被同步。可能比本地时钟慢,但在某些罕见情况下会好些。
  • counter - 简单的事件(1、2、..)计数,注意,由于基础设施在每个事件中多次抓取时钟,一些计数可能会被跳过。
  • uptime - 使用 jiffies 作为时间戳。
  • perf - 使用与 perf 使用的一样的时钟。
  • mono - 对时间戳使用 ktime_get_mono_fast_ns() 函数。
  • mono_raw - 对时间戳使用 ktime_get_raw_fast_ns() 函数。
  • boot - 对时间戳使用 ktime_get_boot_fast_ns() 函数。

    架构可能会添加更多时钟,详情请参阅 Documentation/trace/ftrace.rst

更新的内核参数

cgroup.memory=[KNL]

使用这个内核参数,您可以将选项传给 cgroup 内存控制器。

  • 这个参数采用的格式:<string>

    可用值包括:

  • nosocket - 禁用套接字内存记帐。
  • nokmem - 禁用内核内存记帐。
  • [NEW] nobpf - 禁用 BPF 内存记帐。
hugetlb_free_vmemmap=[KNL]

此内核参数启用在引导时释放与每个 hugetlb 页面关联的未使用 vmemmap 页面的功能。要使此参数正常工作,必须启用 CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP 配置选项。

这个参数采用的的格式是:{ on | off (default)}

可用值包括:

  • on - 启用此功能
  • off - 禁用此功能

    注意

    当启用了 memory_hotplug.memmap_on_memory 模块参数时,可以从添加的内存块本身分配 vmemmap 页。即使启用了此功能,也无法优化 vmemmap 页。其他没有从添加的内存块本身分配的 vmemmap 页不会受到影响。

intel_pstate=[X86]

您可以为 CPU 性能扩展使用此内核参数。可用值包括:

  • disable - 不启用 intel_pstate 作为支持的处理器的默认扩展驱动程序。
  • [NEW] active - 使用 intel_pstate 驱动程序绕过 cpufreq 的扩展调控层,并为 p-state 选择提供自己的算法。在 active 模式下,intel_pstate 提供两种 P-state 选择算法:powersave 和 performance。它们运行的方式取决于硬件管理的 P-states (HWP)功能是否已在处理器中启用了,并可能在处理器型号上也启用了。
  • passive - 使用 intel_pstate 作为扩展驱动程序,但将其配置为与通用 cpufreq 调控一起工作(而不是启用其内部调控)。这个模式不能与硬件管理的 P-states (HWP)功能一同使用。
  • force - 在默认禁止它,而使用acpi-cpufreq的系统上启用 intel_pstate。强制 intel_pstate 驱动程序而不是 acpi-cpufreq 可能会禁用平台功能,如热控制和功率封顶,这依赖指示给 OSPM 的 ACPI P-States 信息,因此应谨慎使用。这个选项不能与 intel_pstate 驱动程序不支持的处理器一起工作,或不能在使用 pcc-cpufreq 而不是 acpi-cpufreq 的平台上工作。
  • no_hwp - 不启用硬件 P 状态控制(HWP)(如果可用)。
  • hwp_only - 仅在支持硬件 P 状态控制(HWP)的系统上加载 intel_pstate (如果可用)。
  • support_acpi_ppc - 强制 ACPI _PPC 性能限制。如果 Fixed ACPI Description Table 将首选的电源管理配置文件指定为 "Enterprise Server" 或 " Performance Server",则默认打开此功能。
  • per_cpu_perf_limits - 使用 cpufreq sysfs 接口允许每个逻辑 CPU P-State 性能控制限制。
kvm-arm.mode=[KVM,ARM]

使用这个内核参数,您可以选择 KVM/arm64 的操作模式之一。可用值包括:

  • none - 强制禁用 KVM。
  • nvhe - 标准的基于 nVHE 的模式,不支持受保护的客户机。
  • protected - 基于 nVHE 的模式,支持其状态对主机保持私有的客户机。将模式设置为 protected 禁用主机的 kexec 和休眠。
  • [NEW] nested - 基于 VHE 的模式,支持嵌套虚拟化。需要至少 ARMv8.3 硬件。nested 选项是实验性的,应该谨慎使用。

    根据硬件支持,默认为 VHE/nVHE。

libata.force=[LIBATA]

使用这个内核参数,您可以强制配置。

格式是以逗号分隔的 "[ID:]VAL" 列表,其中 ID 为 PORT[.DEVICE]。PORT 和 DEVICE 是与端口、链接或设备匹配的十进制数。基本上,它匹配 libata 在控制台上打印的 ATA ID 字符串。

  • 如果省略整个 ID 部分,则使用最后的 PORTDEVICE 值。
  • 如果尚未指定 ID,则配置应用到所有端口、链接和设备。
  • 如果只省略 DEVICE 值,则参数应用到端口以及它后面的所有链接和设备。DEVICE 0 要么选择第一个设备,要么选择 PMP 设备后的第一个 fan-out 链接。它不选择主机链接。DEVICE 15,选择主机链接和附加到它的设备。
  • VAL 指定要强制的配置。只要没有歧义,则允许使用快捷表示法。例如,1.5 和 1.5G 都适用于 1.5Gbps。

    使用 libata.force= 参数,您可以强制以下配置:

  • 电缆类型: 40c、80c、short40c、unk、ign 或 sata。使用任何匹配 PORT 的任何 ID。
  • SATA 链接速度限制 1.5Gbps 或 3.0Gbps.
  • 传输模式:pio[0-7], mwdma[0-4] 和 udma[0-7]。也允许 udma[/][16,25,33,44,66,100,133] 表示法。
  • nohrst,nosrst,norst: 抑制硬、软重置和两者都重置。
  • rstonce :在热拔链接恢复过程中只尝试一次重置。
  • [NEW] [no]dbdelay: 在解除一个链接 PHY 和设备存在检测前启用或禁用额外的 200ms 延迟。
  • [no]ncq: 打开或关闭 NCQ。
  • [no]ncqtrim: 启用或禁用排队的 DSM TRIM。
  • [NEW] [no]ncqati: 在 ATI 芯片组上启用或禁用 NCQ trim。
  • [NEW] [no]trim: 启用或禁用(未排队的) TRIM。
  • [NEW] trim_zero: 表示 TRIM 命令将数据清零。
  • [NEW] max_trim_128m: 设置 128M 最大 trim 大小限制。
  • [NEW] [no]dma :打开或关闭 DMA 传输。
  • atapi_dmadir: 启用 ATAPI DMADIR 网桥支持。
  • atapi_mod16_dma :为不是 16 字节倍数的命令启用 ATAPI DMA。
  • [no]dmalog :启用或禁用 READ LOG DMA EXT 命令来访问日志。
  • [no]iddevlog: 启用或禁用对识别设备数据日志的访问。
  • [no]logdir: 启用或禁用对通用目的日志目录的访问。
  • [NEW] max_sec_128: 将传输大小限制设置为 128 个扇区。
  • [NEW] max_sec_1024: 将传输大小限制设置为 1024 个扇区或清除传输大小限制。
  • [NEW] max_sec_lba48: 将传输大小限制设置为 65535 个扇区或清除传输大小限制。
  • [NEW] [no]lpm: 启用或禁用链路电源管理。
  • [NEW] [no]setxfer: 指示是否应跳过传输速度模式设置。
  • [NEW] [no]fua: 禁用或启用 FUA (Force unit Access)对支持此功能的设备的支持。
  • dump_id :转储 IDENTIFY 数据。
  • disable : 禁用这个设备。

    注意

    如果有更改同一属性的多个匹配配置,则使用最后一个。

mitigations=[X86,PPC,S390,ARM64]

使用这个内核参数,您可以控制对 CPU 漏洞的可选缓解。这是一组策展的、架构独立的选项,每个选项都是现有的特定架构选项的聚合。可用值包括:

  • off - 禁用所有可选 CPU 缓解。这提高了系统性能,但也将用户暴露给多个 CPU 漏洞。off 值等同于:

    • if nokaslr then kpti=0 [ARM64]
    • gather_data_sampling=off [X86]
    • kvm.nx_huge_pages=off [X86]
    • l1tf=off [X86]
    • mds=off [X86]
    • mmio_stale_data=off [X86]
    • no_entry_flush [PPC]
    • no_uaccess_flush [PPC]
    • nobp=0 [S390]
    • nopti [X86,PPC]
    • nospectre_bhb [ARM64]
    • nospectre_v1 [X86,PPC]
    • nospectre_v2 [X86,PPC,S390,ARM64]
    • retbleed=off [X86]
    • spec_store_bypass_disable=off [X86,PPC]
    • spectre_v2_user=off [X86]
    • srbds=off [X86,INTEL]
    • ssbd=force-off [ARM64]
    • tsx_async_abort=off [X86]

      例外:kvm.nx_huge_pages =force 时,这对 kvm.nx_huge_pages=force 没有任何影响。

  • auto(默认)- 缓解所有 CPU 漏洞,但启用 SMT,即使它存在安全漏洞。这适用于不希望在内核升级过程中禁用 SMT,或者有其他方法避免 SMT 攻击的用户。
  • auto,nosmt - 缓解所有 CPU 漏洞,如果需要,禁用 SMT。这适用于需要实施所有缓解方案的用户,即使这意味着会丢失 SMT 的功能。auto,nosmt 选项等同于:

    • l1tf=flush,nosmt [X86]
    • mds=full,nosmt [X86]
    • tsx_async_abort=full,nosmt [X86]
    • mmio_stale_data=full,nosmt [X86]
    • retbleed=auto,nosmt [X86]
nomodeset

使用这个内核参数,您可以禁用内核模式设置。大多数系统的固件会设置显示模式,并为输出提供帧缓冲内存。使用 nomodeset 时,如果 DRM 和 fbdev 驱动程序可能替换预初始化的输出,则不会加载它们。只有系统帧缓冲才能使用。驱动程序不会执行显示模式更改或加速渲染。

此参数在错误回退或测试和调试时特别有用。

rdt=[HW,X86,RDT]

使用这个内核参数,您可以打开或关闭单个 RDT 功能。列表中包括:cmt,mbmtotal,mbmlocal,l3cat,l3cdp,l2cat,l2cdp,mba,smba,bmec.

例如,要打开 cmt 并关闭 mba ,请使用:

rdt=cmt,!mba
rodata=[KNL]

使用这个内核参数,您可以禁用只读内核映射。可用选项包括:

  • on - 将只读内核内存标记为只读(默认)。
  • off - 使只读内核内存对调试可写。
  • [NEW] full - 将只读内核内存和别名标记为只读 [arm64]。

删除的内核参数

nobats=[PPC]
使用这个内核参数,您可以禁止在 "Classic" PPC 核上对映射内核 lowmem 使用 BATs。
noltlbs=[PPC]
使用这个内核参数,您可以禁止对 PPC40x 和 PPC8xx 上的内核 lowmem 映射使用巨页和 tlb 条目。
swapaccount=[0|1]=[KNL]
使用这个内核参数,您可以在内存资源控制器中启用或禁用交换记账。如需更多信息,请参阅 Documentation/admin-guide/cgroup-v1/memory.rst
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.