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
드라이버 인스턴스를 사용합니다. 드라이버에서는 소프트웨어가 성능(0x0) 또는 에너지 효율성(0xff)을 CPPC 펌웨어에 대한 의도를 유도하려는 경우 하드웨어에 힌트를 제공합니다. 그런 다음 CPPC 전원 알고리즘은 런타임 워크로드를 계산하고 실시간 코어 빈도를 조정합니다. -
단계별
- 안내된 자율 모드 활성화. 드라이버는 최소 및 최대 성능 수준을 요청하며 플랫폼은 자율적으로 이 범위의 성능 수준을 선택하고 현재 워크로드에 적합합니다.
-
- arm64.nosve=[ARM64]
- 이 커널 매개변수를 사용하면 확장 가능한 벡터 확장 지원을 무조건 비활성화할 수 있습니다.
- arm64.nosme=[ARM64]
- 이 커널 매개변수를 사용하면 확장 가능 매트릭스 확장 지원을 무조건 비활성화할 수 있습니다.
- gather_data_sampling=[X86,INTEL]
이 커널 매개변수를 사용하면 GDS(Greater Data Sampling) 완화를 제어할 수 있습니다.
GDS는 이전에 벡터 레지스터에 저장된 데이터에 대해 권한이 없는 추측 액세스를 허용하는 하드웨어 취약점입니다.
이 문제는 기본적으로 업데이트된 마이크로 코드에서 완화됩니다. 완화 조치에는 성능에 영향을 미칠 수 있지만 비활성화할 수 있습니다. AVX를 비활성화하는 마이크로 코드 완화 기능이 없는 시스템에서는 완화 기능을 제공합니다. 사용 가능한 값은 다음과 같습니다.
-
force
- AVX를 비활성화하여 마이크로 코드 완화 없이 시스템을 완화합니다. 마이크로 코드 완화가 있는 경우에는 효과가 없습니다. buggy AVX 열거를 사용하여 사용자 공간에서 충돌을 유발하는 것으로 알려져 있습니다. -
off
- GDS 완화 기능을 비활성화합니다.
-
- nospectre_bhb=[ARM64]
- 이 커널 매개변수를 사용하면 Spectre-BHB(branch history injection) 취약점에 대한 모든 완화 조치를 비활성화할 수 있습니다. 시스템에서 이 옵션을 사용하여 데이터 누수를 허용할 수 있습니다.
- trace_clock=[FTRACE]
이 커널 매개변수를 사용하면 부팅 시 이벤트 추적에 사용되는 클럭을 설정할 수 있습니다. 사용 가능한 값은 다음과 같습니다.
-
local
- per CPU timestamp 카운터를 사용합니다. -
글로벌
- 이벤트 타임스탬프는 CPU 간에 동기화됩니다. 로컬 클록보다 느릴 수 있지만 일부 경합 상태에는 더 좋습니다. -
카운터
- 이벤트 (1, 2,...)의 간단한 계산은 이벤트당 클럭을 두 번 이상 캡처하는 인프라로 인해 일부 개수를 건너뛸 수 있습니다. -
uptime
- jiffies를 타임 스탬프로 사용합니다. -
perf
- perf와 동일한 시계를 사용합니다. -
Cryo
stat - 타임스탬프에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
의 확장 governors 계층을 무시하고 p-state selection에 대한 자체 알고리즘을 제공합니다. 활성 모드에서intel_pstate
에서 제공하는 P 상태 선택 알고리즘은 powersave 및 performance입니다. 둘 다 작동하는 방식은 프로세서 및 프로세서 모델에서 하드웨어 관리 P-state (HWP) 기능이 활성화되어 있는지 여부에 따라 다릅니다. -
Passive
-intel_pstate
를 확장 드라이버로 사용하지만 일반cpufreq
governors(내부 governor 활성화 대신)에서 작동하도록 구성합니다. 이 모드는 하드웨어 관리 P-state(HWP) 기능과 함께 사용할 수 없습니다. -
force
- 기본적으로acpi-cpufreq
를 금지하는 시스템에서intel_pstate
를 활성화합니다.acpi-cpufreq
대신intel_pstate
드라이버를 강제 적용하면 OSPM에 표시되는 ACPI P-States 정보에 의존하는 열 제어 및 전원 제한과 같은 플랫폼 기능을 비활성화할 수 있으므로 주의해서 사용해야 합니다. 이 옵션은intel_pstate
드라이버 또는acpi-cpufreq
대신pcc-cpufreq
를 사용하는 플랫폼에서 지원되지 않는 프로세서에서는 작동하지 않습니다. -
no_hwp
- 사용 가능한 경우 하드웨어 P 상태 제어(HWP)를 활성화하지 마십시오. -
hwp_only
- 사용 가능한 경우 하드웨어 P 상태 제어(HWP)를 지원하는 시스템에서intel_pstate
만 로드합니다. -
support_acpi_ppc
- EnforceACPI _PPC
성능 제한. 고정 ACPI 설명 테이블이 기본 전원 관리 프로필을 "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 기반 모드입니다.보호
모드로 설정하면 호스트의kexec
및 hibernation이 비활성화됩니다. [NEW]
중첩 - 중첩된
가상화를 지원하는 VHE 기반 모드입니다. 최소 ARMv8.3 하드웨어가 필요합니다.중첩된
옵션은 실험적이며 주의해서 사용해야 합니다.기본값은 하드웨어 지원을 기반으로 VHE/nVHE입니다.
-
- libata.force=[LIBATA]
이 커널 매개 변수를 사용하면 구성을 강제 적용할 수 있습니다.
형식은 쉼표로 구분된 "[ID:]VAL" 목록입니다. 여기서 ID는 PORT[.DEVICE]입니다. PORT 및 DEVICE는 포트, 링크 또는 장치와 일치하는 10진수입니다. 기본적으로
libata
가 콘솔에 인쇄된 ATA ID 문자열과 일치합니다.-
전체 ID 부분이 생략되면 마지막
PORT
및DEVICE
값이 사용됩니다. - ID를 아직 지정하지 않은 경우 구성이 모든 포트, 링크 및 장치에 적용됩니다.
-
DEVICE
값만 생략하면 매개변수는 포트 및 그 뒤에 있는 모든 링크 및 장치에 적용됩니다. 0의 DEVICE 수는 PMP 장치 뒤의 첫 번째 장치 또는 첫 번째 팬 아웃 링크를 선택합니다. 호스트 링크를 선택하지 않습니다. 15의 DEVICE 번호는 호스트 링크와 연결된 장치를 선택합니다. VAL은 강제할 구성을 지정합니다. 모호성이 없는 한 바로 가기 표기법이 허용됩니다. 예를 들어 1.5G와 1.5G 모두 1.5Gbps에서 작동합니다.
libata.force=
매개변수를 사용하면 다음 구성을 강제 수행할 수 있습니다.- Cable 유형: 40c, 80c, short40c, unk,ign 또는 sata. 일치하는 PORT가 있는 모든 ID가 사용됩니다.
- SATA 링크 속도 제한: 1.5Gbps 또는 3.0Gbps.
- 전송 모드: pio[0-7], mwdma[0-4] 및 udma[0-7]. udma[/][16,33,44,66,100,133] 표기법도 허용됩니다.
-
nohrst
,nosrst
,norst
: 억제, 소프트 및 둘 다 재설정. -
rstonce
: 핫 언플러그 링크 복구 중에 하나의 재설정을 시도합니다. -
[NEW]
[no]dbdelay
: 링크를 중단하기 전에 추가 200ms 지연을 활성화하거나 비활성화합니다. -
[no]ncq
: CryostatQ를 켜거나 끕니다. -
[no]ncqtrim
: 대기 중인 DSM TRIM을 활성화하거나 비활성화합니다. -
[NEW]
[no]ncqati
: ATI 칩셋에서 CryostatQ 트리트를 활성화하거나 비활성화합니다. -
[NEW]
[no]trim
: Enable or disable (unqueued) TRIM. -
[NEW]
trim_zero
: TRIM 명령이 데이터를 0으로 표시합니다. -
[NEW]
max_trim_128m
: 128M 최대 트리트 크기 제한을 설정합니다. -
[NEW]
[no]dma
: 0.0.0.0 전송을 켜거나 끄십시오. -
atapi_dmadir
: ATAPI CryostatDIR 브리지 지원을 활성화합니다. -
atapi_mod16_dma
: 16바이트의 배수가 아닌 명령에 대해 ATAPI>-< 사용을 활성화합니다. -
[no]dmalog
: 로그에 액세스하기 위해 READ LOG Cryostat 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
: Dump IDENTIFY data. 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
-
Auto
(기본값) - 모든 CPU 취약점을 완화하지만 취약한 경우에도 SMT를 활성화 상태로 둡니다. 이는 SMT가 커널 업그레이드를 통해 비활성화되거나 SMT 기반 공격을 방지할 수 있는 다른 방법이 있는 사용자용입니다. Auto
,nosmt
- 필요한 경우 SMT를 비활성화하여 모든 CPU 취약점을 완화합니다. 이는 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
에서는 Cryostat 및fbdev
드라이버가 미리 초기화된 출력을 대체할 수 있는 경우 로드되지 않습니다. 시스템 프레임 버퍼만 사용할 수 있습니다. 드라이버는 디스플레이 모드 변경 또는 가속화 렌더링을 수행하지 않습니다.이 매개변수는 오류 폴백 또는 테스트 및 디버깅에 특히 유용합니다.
- rdt=[HW,X86,RDT]
이 커널 매개변수를 사용하면 개별 RDT 기능을 켜거나 해제할 수 있습니다. 목록에는
cmt
,mbmtotal
,mbmlocal
,l3cat
,l3cdp
,l2cat
,l2cdp
,mba
,smba
,bmec
가 포함됩니다.예를 들어
cmt
를 켜고mba
사용을 끄려면 다음을 수행합니다.rdt=cmt,!mba
- rodata=[KNL]
이 커널 매개변수를 사용하면 읽기 전용 커널 매핑을 비활성화할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.
-
에서
읽기 전용 커널 메모리를 읽기 전용(기본값)으로 표시합니다. -
off
- 디버깅을 위해 쓰기 가능한 읽기 전용 커널 메모리를 유지합니다. -
[NEW]
full
- 읽기 전용 커널 메모리 및 별칭을 읽기 전용 [arm64]으로 표시합니다.
-
제거된 커널 매개변수
- nobats=[PPC]
- 이 커널 매개변수를 사용하면 "Classic" PPC 코어에서 커널 lowmem을 매핑하는 데 BAT를 사용할 수 있습니다.
- noltlbs=[PPC]
- 이 커널 매개변수를 사용하면 PPC40x 및 PPC8xx의 커널 lowmem 매핑에 대규모 페이지 및 tlb 항목을 사용할 수 있습니다.
- swapaccount=[0|1]=[KNL]
-
이 커널 매개변수를 사용하면 메모리 리소스 컨트롤러에서 스왑 계산을 활성화하거나 비활성화할 수 있습니다. 자세한 내용은
Documentation/admin-guide/cgroup-v1/memory.rst
를 참조하십시오.