5장. 외부 커널 매개변수에 대한 중요한 변경 사항


이 장에서는 시스템 관리자에게 Red Hat Enterprise Linux 9.1와 함께 배포된 커널의 중요한 변경 사항에 대한 요약을 제공합니다. 이러한 변경에는 예를 들어 추가 또는 업데이트된 proc 항목, sysctl, sysfs 기본값, 부팅 매개변수, 커널 구성 옵션 또는 눈에 띄는 동작 변경 사항이 포함될 수 있습니다.

새 커널 매개변수

allow_mismatched_32bit_el0 = [ARM64]

이 매개변수를 사용하면 EL0 수준에서 일치하지 않는 32비트 지원이 있는 시스템을 32비트 애플리케이션을 실행할 수 있습니다. 32비트 EL0을 지원하는 CPU 세트는 /sys/devices/system/cpu/aarch32_el0 파일로 표시됩니다. 또한 핫 플러그 해제 작업을 제한할 수 있습니다.

자세한 내용은 Documentation/arm64/asymmetric-32bit.rst 를 참조하십시오.

arm64.nomte = [ARM64]
이 매개변수를 사용하면 MTE(메모리 태그 확장) 지원을 무조건 비활성화할 수 있습니다.
i8042.probe_defer = [HW]
이 매개변수를 사용하면 i8042 프로브 오류에서 지연된 프로브를 허용할 수 있습니다.
idxd.tc_override = [HW]

< bool&gt; 형식에서 이 매개변수를 사용하면 장치에 대한 기본 트래픽 클래스 구성을 덮어쓸 수 있습니다.

기본값은 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 (에서)로 설정됩니다.

kvm.nx_huge_pages_recovery_period_ms = [KVM]

이 매개변수를 사용하면 KVM zaps 4 KiB 페이지를 Huge Page로 돌아가는 기간을 제어할 수 있습니다.

  • 값이 0이 아닌 N 이면 KVM은 N 밀리초마다 페이지의 일부를 조정합니다.
  • 값이 0 인 경우 KVM은 비율을 기준으로 기간을 선택하므로 페이지가 평균 1시간 후에 zapped됩니다.

    기본값은 0 으로 설정됩니다.

l1d_flush = [X86,INTEL]

이 매개변수를 사용하면 L1D 기반 스누핑 취약점의 완화 조치를 제어할 수 있습니다.

특정 CPU는 CPU 내부 버퍼에 대한 악용에 취약하며 특정 조건에서 공개 가젯으로 정보를 전달할 수 있습니다. 취약한 프로세서에서 사양으로 전달된 데이터는 캐시 측 채널 공격에서 사용하여 공격자가 직접 액세스할 수 없는 데이터에 액세스할 수 있습니다.

사용 가능한 옵션은 on 이므로 완화를 위한 인터페이스를 활성화합니다.

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=offtsx_async_abort=off 를 지정해야 합니다.

    이 옵션을 지정하지 않으면 mmio_stale_data=full 과 동일합니다.

    자세한 내용은 Documentation/admin-guide/hw-vuln/processor_mmio_stale_data.rst 를 참조하십시오.

random.trust_bootloader={on,off} = [KNL]
이 매개변수를 사용하면 부트 로더가 전달하는 줄기 사용을 활성화하거나 비활성화하여 커널의 CRNG를 완전히 강화할 수 있습니다. 기본 동작은 CONFIG_RANDOM_TRUST_BOOTLOADER 옵션에 의해 제어됩니다.
rcupdate.rcu_task_collapse_lim = [KNL]
이 매개변수를 사용하면 RECDHE Tasks 플레이버가 단일 콜백 큐를 사용하여 축소할 수 있는 유예 기간에 존재하는 최대 콜백 수를 설정할 수 있습니다. 이 전환은 rcupdate.rcu_task_enqueue_lim 옵션이 기본값인 -1 값으로 설정된 경우에만 발생합니다.
rcupdate.rcu_task_contend_lim = [KNL]
이 매개변수를 사용하면 RECDHE Tasks 플레이버가 CPU당 per-CPU 콜백 대기열로 전환되는 데 필요한 jiffy당 callback-queuing-time lock-contention 이벤트의 최소 수를 설정할 수 있습니다. 이 전환은 rcupdate.rcu_task_enqueue_lim 옵션이 기본값인 -1 값으로 설정된 경우에만 발생합니다.
rcupdate.rcu_task_enqueue_lim = [KNL]

이 매개변수를 사용하면 RECDHE 플레이버의 RECDHE Tasks 제품군에 사용할 콜백 대기열 수를 설정할 수 있습니다. 콜백 대기열의 수를 자동으로 조정하고 기본값 -1 을 사용하여 동적으로 조정할 수 있습니다.

이 매개변수는 테스트에 사용하기 위한 것입니다.

retbleed = [X86]

이 매개변수를 사용하면 반환 지침(RETBleed) 취약점을 사용하여 Arbitrary Speculative Code Execution의 완화 기능을 제어할 수 있습니다. 사용 가능한 옵션은 다음과 같습니다.

  • Off: no mitigation
  • auto: 완화 기능을 자동으로 선택합니다.
  • auto,nosmt: 전체 완화 (STIBP없이 1 이상 만)에 필요한 경우 완화 기능을 자동으로 선택합니다.
  • ibpb: 기본 블록 경계에 대한 짧은 추측 창도 완화합니다. 안전성, 가장 높은 성능 영향
  • unret: 강제로 교육되지 않은 반환 thunks를 활성화하며 AMD f15h-f17h 기반 시스템에서만 유효합니다.
  • unret,nosmt:ret 옵션과 마찬가지로 STIBP를 사용할 수 없을 때 SMT를 비활성화합니다.

    auto 옵션을 선택하면 런타임에 CPU에 따라 완화 방법이 선택됩니다.

    이 옵션을 지정하지 않으면 retbleed=auto 와 동일합니다.

sev=option[,option…​] = [X86-64]
자세한 내용은 Documentation/x86/x86_64/boot-options.rst 를 참조하십시오.

업데이트된 커널 매개변수

acpi_sleep = [HW,ACPI]

형식: { s3_bios, s3_mode, s3_beep, s4_hwsig, s4_nohwsig, old_ordering, nonvs, sci_force_enable, nobl }

  • s3_bioss3_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 미만인 경우 무시됩니다.
crashkernel=size[KMG],low = [KNL, ARM64]
이 매개변수를 사용하면 크래시 덤프 커널의ECDHE 영역에 낮은 범위를 지정할 수 있습니다. crashkernel=X,high 가 사용되지 않거나 예약된 메모리가ECDHE 영역에 있는 경우 무시됩니다.
kvm.nx_huge_pages_recovery_ratio = [KVM]

이 매개변수를 사용하면 주기적으로 대규모 페이지로 다시 zapped 4 KiB 페이지 수를 제어할 수 있습니다.

  • 0 복구 비활성화
  • N KVM은 기간마다 4KiB 페이지의 1/N 입니다.

    기본값은 60 입니다.

kvm-arm.mode = [KVM,ARM]

이 매개변수를 사용하여 작업 KVM 모드 중 하나를 선택할 수 있습니다.

  • 없음: KVM을 강제로 비활성화합니다.
  • nvhe: 보호된 게스트를 지원하지 않는 표준 nVHE 기반 모드
  • protected:NVHE- 상태가 호스트에서 비공개로 유지되는 게스트를 지원하는 기반 모드입니다. EL2 수준에서 커널이 실행 중인 경우에는 유효하지 않습니다.

    기본값은 하드웨어 지원을 기반으로 VHE/nVHE 로 설정됩니다.

mitigations = [X86,PPC,S390,ARM64]

이 매개변수를 사용하면 CPU 취약점에 대한 선택적 완화 기능을 제어할 수 있습니다. 이는 각각 기존 아키텍처별 옵션 집계입니다.

  • off: 모든 선택적 CPU 완화를 비활성화합니다. 이로 인해 시스템 성능이 향상되지만 사용자를 여러 CPU 취약점에 노출할 수도 있습니다.

    • 다음과 같습니다. nopti [X86,PPC], kpti=0 [ARM64], nospectre_v1 [X86,PPC], nobp=0 [S390], nospectre_v2 [X86,PPC,S390,ARM64],, spectre_v2_user=off [X86], spec_store_bypass_disable=off [X86,PPC], ssbd=force-off [ARM64], l1tf=off [X86], mds=off [X86], tsx_async_abort=off [X86], kvm.nx_huge_pages=off [X86], no_entry_flush [PPC], no_uaccess_flush [PPC], mmio_stale_data=off [X86].
    • 예외: kvm.nx_huge_pages =force 옵션이 지정된 경우 kvm.nx_huge_pages에는 적용되지 않습니다.
  • auto (기본값): 모든 CPU 취약점을 완화하지만 보안 취약점이 있는 경우에도 SMT를 활성화합니다.

    • 같음: (기본 동작)
  • Auto,nosmt: 모든 CPU 취약점을 완화하여 필요한 경우 SMT를 비활성화합니다.

    • l1tf=flush,nosmt [X86], mds=full,nosmt [X86], tsx_async_abort=full,nosmt [X86], mmio_stale_data=full,nosmt [X86]
rcu_nocbs[=cpu-list] = [KNL]

선택적 인수는 CPU 목록입니다.

CONFIG_RCU_NOCB_CPU=y 로 빌드된 커널에서 no-callback CPU 모드를 활성화할 수 있으므로 이러한 CPU 콜백이 softirq 컨텍스트에서 호출되지 않습니다. 이러한 CPU의 RECDHE 콜백 호출은 대신 해당 목적으로 생성된 rcuo x / N kthreads 로 오프로드됩니다. 여기서 여기서 RECDHE-preempt의 경우 s 이고, RECDHE-sched인 kthread의 경우 g 는 CPU 번호입니다. n은 CPU 번호입니다. 이를 통해 오프로드된 CPU의 OS 지터가 줄어들어 HPC 및 실시간 워크로드에 유용할 수 있습니다. 또한 DestinationRule 다중 프로세서의 에너지 효율성을 개선할 수 있습니다.

  • cpulist 가 인수로 전달되면 지정된 CPU 목록이 부팅에서 no-callback 모드로 설정됩니다.
  • = 기호와 cpulist 인수를 생략하면 부팅에서 CPU가 no-callback 모드로 설정되지 않지만 cpusets 를 사용하여 런타임 시 모드를 전환할 수 있습니다.
rcutree.kthread_prio = [KNL,BOOT]

이 매개변수를 사용하여 RECDHE per-CPU kthreads (rcuc/N)의ECDHE _FIFO 우선순위를 설정할 수 있습니다. 이 값은 RECDHE boost 스레드 (rcub/N)의 우선 순위와 RECDHE grace-period kthreads (rcu_bh,rcu_preempt, rcu_sched)에도 사용됩니다.

  • R ECDHE_BOOST 가 설정되면 유효한 값은 1-99이며 기본값은 1 이며 최소 우선 순위입니다.
  • R ECDHE_BOOST 가 설정되지 않은 경우 유효한 값은 0-99이고 기본값은 0 이고 비실시간 작업입니다.

    R ECDHE_NOCB_CPU 가 설정된 경우 NOCB 콜백 kthreads 의 우선 순위를 조정해야 합니다.

rcutorture.fwd_progress = [KNL]

이 매개변수를 사용하면 이 개념을 지원하는 RECDHE 유형에 대한 RECDHE grace-period forward-progress 테스트에 사용할 kthreads 수를 지정할 수 있습니다.

기본값은 1 kthread 로 설정됩니다. CPU 수보다 0개 이상 작으면 CPU 수가 사용됩니다.

spectre_v2 = [X86]

이 매개변수를 사용하면 Spectre variant 2 (indirect branch speculation) 취약점의 완화 조치를 제어할 수 있습니다. 기본 작업은 사용자 공간 공격으로부터 커널을 보호합니다.

  • On: 무조건적으로 활성화되어 있으며, spectre_v2_user=on을 의미합니다.
  • off: 무조건 비활성화, spectre_v2_user=off를 의미합니다.
  • auto: kernel은 CPU 모델의 보안 취약점을 탐지합니다.
  • 그리고 auto 선택하면 CPU, 사용 가능한 마이크로 코드, CONFIG_RETPOLINE 설정 옵션, 커널이 빌드된 컴파일러에 따라 런타임 시 완화 방법을 선택할 수 있습니다.
  • 또한 사용자 공간을 선택하여 사용자 공간 작업 공격을 완화할 수 있습니다.
  • 해제 를 선택하면 커널 및 사용자 공간 보호가 모두 비활성화됩니다.
  • 특정 완화 조치를 수동으로 선택할 수도 있습니다.

    • Retpoline: 간접 브랜치 교체
    • Ret poline,generic: Retpolines
    • Retpoline,l timing: LFENCE; 간접 브랜치
    • retpoline,amd: retpoline의 별칭,l cri
    • eibrs: 향상된 IBRS
    • eibrs,retpoline: 향상된 IBRS + Retpolines
    • IBRS + LFENCE 개선
    • IBRS: IBRS를 사용하여 커널을 보호

      이 옵션을 지정하지 않으면 spectre_v2=auto 와 동일합니다.

새로운 sysctl 매개변수

max_rcu_stall_to_panic
panic_on_rcu_stall1 로 설정하면 panic() 이 호출되기 전에 RECDHE가 중단될 수 있는 횟수를 확인할 수 있습니다. panic_on_rcu_stall0 으로 설정하면 이 값이 적용되지 않습니다.
perf_user_access = [ARM64]

이 매개 변수를 사용하면 이벤트 카운터를 읽기 위해 사용자 공간 액세스를 제어할 수 있습니다.

  • 1 로 설정하면 사용자 공간은 성능 모니터 카운터 레지스터를 직접 읽을 수 있습니다.
  • 기본값은 0 으로 설정되어 있으며 이는 액세스를 비활성화했음을 의미합니다.

    자세한 내용은 Documentation/arm64/perf.rst 를 참조하십시오.

gro_normal_batch
이 매개변수를 사용하여 GRO 출력에서 최대 세그먼트 수를 일괄 업로 설정할 수 있습니다. 패킷이 병합된 수퍼 프레임으로 또는 GRO가 병합하지 않기로 결정한 원래 패킷으로 GRO가 GRO가 종료하면NAPI별 목록에 배치됩니다. 그런 다음 세그먼트 수가 gro_normal_ECDHEch 제한에 도달하면 이 목록이 스택으로 전달됩니다.
high_order_alloc_disable

이 매개변수를 사용하여 order-0 할당을 선택할 수 있습니다. 기본적으로 페이지 조각의 할당자는 X86 시스템에서 높은 순서 페이지를 사용하려고 합니다. 기본 동작은 좋은 결과를 반환하지만 특정 상황에서는 페이지 할당 및 해제의 경합이 발생합니다. 이는 상위 페이지가 CPU별 목록에 저장되지 않은 이전 커널(버전 5.14 이상)에서 특히 그러했습니다. 이 매개변수는 이제 대부분 과거의 중요도가 있습니다.

기본값은 0입니다.

page_lock_unfairness

이 매개변수의 값을 지정하면 대기자 아래에서 페이지 잠금이 차단될 수 있는 횟수를 확인할 수 있습니다. 잠금이 이 파일에 지정된 횟수로 분류된 후 실정 잠금 핸드오프 의미가 적용되며, 잠금을 취할 수 있는 경우에만 대기자가 조정됩니다.

기본값은 5 입니다.

sysctl 매개변수 변경

urandom_min_reseed_secs
이 매개변수를 사용하여 urandom 풀 후의 최소 시간(초)을 결정할 수 있습니다. 이 파일은 호환성을 위해 쓸 수 있지만 RNG 동작에는 영향을 미치지 않습니다.
write_wakeup_threshold
엔트로피 수가 여러 비트에서 이 임계값 아래로 싱크되면 /dev/random 파일에 쓰기 대기 중인 프로세스를 시작할 수 있습니다. 이 파일은 호환성을 위해 쓸 수 있지만 RNG 동작에는 영향을 미치지 않습니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.