第 5 章 对外部内核参数的重要更改
本章为系统管理员提供了与 Red Hat Enterprise Linux 9.3 一起分发的内核中显著变化的总结。这些更改可能包括,例如,添加或更新的 proc
条目、sysctl
和 sysfs
默认值、引导参数、内核配置选项或任何明显的行为更改。
新内核参数
- 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 部分,则使用最后的
PORT
和DEVICE
值。 - 如果尚未指定 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
: 禁用这个设备。注意如果有更改同一属性的多个匹配配置,则使用最后一个。
-
如果省略整个 ID 部分,则使用最后的
- 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
。