5장. 외부 커널 매개변수에 대한 중요한 변경 사항
이 장에서는 시스템 관리자에게 Red Hat Enterprise Linux 8.7과 함께 제공되는 커널의 중요한 변경 사항에 대한 요약을 제공합니다. 이러한 변경에는 예를 들어 추가 또는 업데이트된 proc
항목, sysctl
, sysfs
기본값, 부팅 매개변수, 커널 구성 옵션 또는 눈에 띄는 동작 변경 사항이 포함될 수 있습니다.
새 커널 매개변수
- idxd.tc_override = [HW]
<
bool
> 형식의 이 매개변수를 사용하면 장치에 대한 기본 트래픽 클래스 구성을 재정의할 수 있습니다.기본값은
false
(0
)로 설정됩니다.- kvm.eager_page_split = [KVM,X86]
이 매개변수를 사용하면 KVM에서 모든 대규모 페이지를 로깅하는 동안 사전에 분할할지 여부를 제어할 수 있습니다. 페이지 분할은 대규모 페이지를 지연시키는 데 필요한 쓰기 보호 오류 및 MMU(Memory Management Unit) 잠금 경합을 제거하여 vCPU 실행에 대한 중단을 줄입니다.
쓰기를 거의 수행하지 않거나 작은 VM 메모리 영역에만 쓰는 VM 워크로드는 페이지 분할을 비활성화하여 대규모 페이지를 계속 읽기에 사용할 수 있도록 하는 이점을 누릴 수 있습니다.
페이지 분할의 동작은
KVM_DIRTY_LOG_INITIALLY_SET
옵션이 활성화되었는지 여부에 따라 달라집니다.-
비활성화된 경우 memslot의 모든 대규모 페이지는 해당
memslot
활성화된 경우
KVM_CLEAR_DIRTY
ioctl()
시스템 호출 중에만 페이지 분할이 수행되고 페이지 정리가 제거됩니다.현재 페이지 분할은 2차원 페이징(TDP) MMU에 매핑된 대규모 페이지 분할만 지원합니다.
기본값은
Y
(에서
)로 설정됩니다.
-
비활성화된 경우 memslot의 모든 대규모 페이지는 해당
- kvm.nx_huge_pages_recovery_period_ms = [KVM]
이 매개변수를 사용하면 KVM zaps 4 KiB 페이지를 Huge Page로 돌아가는 기간을 제어할 수 있습니다.
-
값이 0이 아닌
N
이면 KVM은N
밀리초마다 페이지의 일부를 조정합니다. 값이
0
인 경우 KVM은 비율을 기준으로 기간을 선택하므로 페이지가 평균 1시간 후에 zapped됩니다.기본값은
0
으로 설정됩니다.
-
값이 0이 아닌
- mmio_stale_data = [X86,INTEL]
이 매개변수를 사용하여 Processor Memory-mapped I/O (MMIO)usrle Data 취약점의 완화 조치를 제어할 수 있습니다.
프로세서 MMIOusrle Data는 MMIO 작업 후에 데이터를 노출할 수 있는 취약점의 클래스입니다. 노출된 데이터는 메타데이터 서버(MDS) 및 TAM(Transactional Asynchronous Abort)의 영향을 받는 것과 동일한 CPU 버퍼에서 시작되거나 종료될 수 있습니다. 따라서 MDS 및 TAA와 유사하게 완화 조치는 영향을 받는 CPU 버퍼를 지우는 것입니다.
사용 가능한 옵션은 다음과 같습니다.
-
full
: 취약한 CPU에서 완화 기능을 활성화 -
full,nosmt
: 완화 기능을 활성화하고 취약한 CPU에서 SMT를 비활성화합니다. off
: 무조건 완화를 비활성화합니다.MDS 또는 TAA 영향을 받는 시스템에서
mmio_stale_data=off
는 동일한 메커니즘으로 이러한 취약점이 완화되므로 활성 MDS 또는 TAA 완화 방법으로 방지할 수 있습니다. 따라서 이 완화 기능을 비활성화하려면mds=off
및tsx_async_abort=off
를 지정해야 합니다.이 옵션을 지정하지 않으면
mmio_stale_data=full
과 동일합니다.자세한 내용은
Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst
를 참조하십시오.
-
- rcutree.rcu_delay_page_cache_fill_msec = [KNL]
-
이 매개변수를 사용하면 메모리 부족 조건에 응답하여 page-cache refill 지연을 밀리초 단위로 설정할 수 있습니다. 허용되는 값의 범위는
0:100000
입니다. - rcuscale.kfree_rcu_test_double = [KNL]
-
이 매개변수를 사용하여
kfree_rcu()
함수의 이중 인수 변형을 테스트할 수 있습니다. 이 매개변수의 값이rcuscale.kfree_rcu_test_single
과 동일한 경우 단일 및 이중 인수 변형이 모두 테스트됩니다. - rcuscale.kfree_rcu_test_single = [KNL]
-
이 매개변수를 사용하여
kfree_rcu()
함수의 단일 인수 변형을 테스트할 수 있습니다. 이 매개변수의 값이rcuscale.kfree_rcu_test_double
과 동일한 경우 단일 및 이중 인수 변형이 모두 테스트됩니다. - retbleed = [X86]
이 매개변수를 사용하면 반환 지침(RETBleed) 취약점을 사용하여 Arbitrary Speculative Code Execution의 완화 기능을 제어할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.
-
Off
: no mitigation -
auto
: migitation을 자동으로 선택합니다. -
auto,nosmt
: 전체 완화 (STIBP없이 1 이상 만)에 필요한 경우 완화 기능을 자동으로 선택합니다. -
ibpb
: 기본 블록 경계에 대한 짧은 추측 창도 완화합니다. 안전성, 가장 높은 성능 영향 -
unret
: 강제로 교육되지 않은 반환 thunks를 활성화하며 AMD f15h-f17h 기반 시스템에서만 유효합니다. unret
,nosmtauto
옵션을 선택하면 런타임에 CPU에 따라 완화 방법이 선택됩니다.이 옵션을 지정하지 않으면
retbleed=auto
와 동일합니다.
-
- s390_iommu_aperture = [KNL,S390]
이 매개변수를 사용하면 main 메모리 크기의 10진수로, IOMMU API를 통해 액세스할 수 있는 장치 per deviceECDHE 주소 공간의 크기를 지정할 수 있습니다.
-
기본값은
1
로 설정되어 있습니다. 즉, 물리적 메모리가 설치되어 있으면 동시에 많은 수의 memory를 사용할 수 있으며 하드웨어에서 지원하는 경우 모든 메모리를 한 번에 매핑할 수 있습니다. -
2
의 값을 사용하면 모든 메모리를 두 번 매핑할 수 있습니다. -
값이
0
이면 하드웨어에 의해 지정된 것 이외의 제한 없이 테이블에 추가 메모리 사용이 부과되지 않습니다.
-
기본값은
업데이트된 커널 매개변수
- acpi_sleep = [HW,ACPI]
형식: { s3_bios, s3_mode, s3_beep, s4_hwsig, s4_nohwsig, old_ordering, nonvs, sci_force_enable, nobl }
-
s3_bios
및s3_mode
에 대한 자세한 내용은Documentation/power/video.rst
를 참조하십시오. -
s3_beep
은 디버깅을 위한 것입니다. 커널의 실제 모드 진입점이 호출되는 즉시 PC의 발표자입니다. -
s4_hwsig
를 사용하면 커널이 하이버네이션에서 재개하는 동안 ACPI 하드웨어 서명을 확인하고 변경된 경우 정상적으로 재시작을 거부합니다. 기본 동작은s4_hwsig
옵션을 사용하지 않는 한 재개를 허용하고 서명이 변경될 때 경고하는 것입니다. -
s4_nohwsig
는 ACPI 하드웨어 서명을 사용하거나 재개하는 동안 경고하지 않습니다.old_ordering
은 장치를 저전력 상태로 두는 것과 관련하여_PTS
제어 방법의 ACPI 1.0 순서가 적용됩니다._PTS
의 ACPI 2.0 순서는 기본적으로 사용됩니다. -
비v
는 일시 중단, 하이버링 및 재개 중에 커널이 ACPI NVS 메모리를 저장 및 복원하는 것을 방지합니다. -
sci_force_enable
을 사용하면 커널이 S1/S3에서 resume로SCI_EN
을 직접 설정합니다. 이러한 동작은 ACPI 사양에 적합하지만 일부 손상된 시스템은 이 사양 없이 작동하지 않습니다. nobl
는 시스템 일시 중단 및 재개와 관련하여 일부 방식에서 잘못 작동하는 것으로 알려진 시스템의 내부 거부 목록이 무시됩니다. 이 옵션을 사용하는 것이 좋습니다.자세한 내용은
문서/전원/비디오.rst
를 참조하십시오.
-
- crashkernel=size[KMG],high = [KNL, X86-64, ARM64]
이 매개변수를 사용하면 다음과 같이 top에서 물리적 메모리 리전을 할당할 수 있습니다.
- 시스템에 4GB 이상의 RAM이 설치되어 있으면 실제 메모리 영역이 4GB를 초과할 수 있습니다.
시스템에 4GB 미만의 RAM이 설치되어 있으면 사용 가능한 경우 물리적 메모리 영역이 4GB 미만으로 할당됩니다.
crashkernel=X
매개변수가 지정된 경우 이 매개변수는 무시됩니다.
- crashkernel=size[KMG],low = [KNL, X86-64]
crashkernel=X
를 전달하면 커널이 4GB 이상의 물리적 메모리 영역을 할당할 수 있습니다. 이로 인해 약간의 낮은 메모리가 필요한 시스템에서 두 번째 커널이 충돌합니다(예:swiotlb
에는 최소 64M+32K 낮은 메모리 필요) 및 32비트 장치의ECDHE 버퍼가 소진되지 않도록 하는 추가 메모리가 필요합니다. 커널은 최소 256M을 4GB 미만으로 자동으로 할당하려고 합니다. 이 매개변수를 사용하면 두 번째 커널에 대해 Low range를 4GB 미만으로 지정할 수 있습니다.-
0:
낮은 할당을 비활성화합니다.crashkernel=X,high
가 사용되지 않거나 예약된 메모리가 4GB 미만인 경우 무시됩니다.
-
- kvm.nx_huge_pages_recovery_ratio = [KVM]
이 매개변수를 사용하면 주기적으로 대규모 페이지로 다시 표시되는 4KiB 페이지 수를 제어할 수 있습니다.
-
0
복구 비활성화 N
KVM은 모든 기간마다 4KiB 페이지의 zap1/N
입니다.기본값은
60
입니다.
-
- module.sig_enforce = norid [S390]
- 이 매개변수를 사용하면 RID 필드를 무시하고 PCI 기능당 하나의 PCI 도메인을 강제로 사용할 수 있습니다.
- rcu_nocbs[=cpu-list] = [KNL]
선택적 인수는 CPU 목록입니다.
CONFIG_RCU_NOCB_CPU=y
로 빌드된 커널에서 no-callback CPU 모드를 활성화할 수 있으므로 이러한 CPU 콜백이 softirq 컨텍스트에서 호출되지 않습니다. 이러한 CPU의 RECDHE 콜백 호출은 대신 해당 목적으로 생성된rcuo
x
/N
kthreads
s
이고, RECDHE-sched인 kthread의 경우g
는 CPU 번호입니다. n은 CPU 번호입니다.이를 통해 오프로드된 CPU의 OS 지터가 줄어들어 HPC 및 실시간 워크로드에 유용할 수 있습니다. 또한 DestinationRule 다중 프로세서의 에너지 효율성을 개선할 수 있습니다.
-
cpulist
가 인수로 전달되면 지정된 CPU 목록이 부팅에서 no-callback 모드로 설정됩니다. -
=
기호와cpulist
인수를 생략하면 부팅에서 CPU가 no-callback 모드로 설정되지 않지만cpusets
를 사용하여 런타임 시 모드를 전환할 수 있습니다.
-
- spectre_v2_user = [X86]
이 매개변수를 사용하면 사용자 공간 작업 간에 Spectre 변형 2(내직 분기 사양) 취약점을 완화할 수 있습니다.
-
auto
: 커널은 사용 가능한 CPU 기능 및 취약점에 따라 완화 조치를 선택합니다. -
기본 완화 방법은
prctl
로 설정됩니다. -
이 옵션을 지정하지 않으면
spectre_v2_user=auto
와 동일합니다.
-
- spec_store_bypass_disable = [X86]
이 매개변수를 사용하면 SSB(Speculative Store Bypass) 최적화를 사용하여 SSB 취약점을 완화할 수 있습니다.
-
이 옵션을 지정하지 않으면
spec_store_bypass_disable=auto
와 동일합니다. -
기본 완화 방법은
prctl
로 설정됩니다.
-
이 옵션을 지정하지 않으면
새로운 sysctl 매개변수
- perf_user_access = [ARM64]
이 매개변수를 사용하면 성능 이벤트 카운터를 읽기 위해 사용자 공간 액세스를 제어할 수 있습니다.
-
1
로 설정하면 사용자 공간은 성능 모니터 카운터 레지스터를 직접 읽을 수 있습니다. 기본값은
0
으로 설정되어 있으며 이는액세스를 비활성화했음을
의미합니다.자세한 내용은
Documentation/arm64/perf.rst
를 참조하십시오.
-
- force_cgroup_v2_swappiness
이 매개변수를 사용하면
cgroupsV1
에서만 사용할 수 있는 per-cgroup swappiness 값을 사용 중단할 수 있습니다.systemd
설계 선택으로 인해 대부분의 시스템 및 사용자 프로세스는cgroup
내에서 실행됩니다. 또한 이러한cgroup
스왑 해제 값은 기본값인60
입니다. 이로 인해 시스템 스왑성 값이 시스템의 스왑 동작에 거의 영향을 미치지 않는 영향을 미칠 수 있습니다.cgroup
스왑 가능 기능을 사용하려면force_cgroup_v2_swappiness=1
을 사용하여 시스템을 구성하여 전체 시스템에서 보다 일관된 스왑 동작을 수행할 수 있습니다.이는 RHEL 특정 기능입니다.