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와 동일한 시계를 사용합니다. -
Cryostat - 타임스탬프에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를 확장 드라이버로 사용하지만 일반cpufreqgovernors(내부 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에 영향을 미치지 않습니다.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
rdt=cmt,!mbaCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 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를 참조하십시오.