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

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

새 커널 매개변수

nomodeset

이 커널 매개변수를 사용하면 커널 모드 설정을 비활성화할 수 있습니다. gRPC 드라이버는 표시 모드 변경 또는 빠른 렌더링을 수행하지 않습니다. 펌웨어 또는 부트 로더에 의해 설정된 경우에만 시스템 프레임 버퍼를 사용할 수 있습니다.

nomodeset 은 폴백으로 유용하거나 테스트 및 디버깅에 유용합니다.

printk.console_no_auto_verbose

이 커널 매개변수를 사용하면 oops, panic 또는 lockdep-detected 문제에서 콘솔 로그 수준 발생을 비활성화할 수 있습니다(lock debug가 있는 경우에만). 직렬 콘솔에서 낮은 baudrate로 설정하는 것을 제외하고 이 매개변수를 0 으로 설정하여 더 많은 디버그 정보를 제공합니다.

  • 형식: &lt ;bool>
  • 기본값은 0 입니다(자동_verbose 가 활성화됨)
rcupdate.rcu_exp_cpu_stall_timeout=[KNL]

이 커널 매개변수를 사용하면 신속한 RECDHE CPU stall 경고 메시지에 대한 타임아웃을 설정할 수 있습니다. 값은 밀리초 단위이며 허용되는 최대 값은 21000밀리초입니다.

이 값은 아키텍처 타이머 눈금 해상도로 조정됩니다. 이 값을 0으로 설정하면 rcupdate.rcu_cpu_stall_timeout 의 값이 사용됩니다(초에서 밀리초로 변환한 후).

rcupdate.rcu_task_stall_info=[KNL]

이 매개변수를 사용하면 Jiffies for R ScanSetting 작업 stall 정보 메시지에서 초기 시간 초과를 설정할 수 있으며, 이로 인해 참을성이 10분 동안 기다릴 수 없습니다. 정보 메시지는 지정된 유예 기간 동안 stall-warning 메시지보다 먼저 인쇄됩니다. 값이 0보다 작거나 같은 경우 비활성화하십시오.

  • 기본값은 10 초입니다.
  • value의 변경 사항은 다음 유예 기간이 시작될 때까지 적용되지 않습니다.
rcupdate.rcu_task_stall_info_mult=[KNL]

이 매개변수는 특정 RECDHE 작업의 유예 기간 동안 정보 메시지를 연속해서 연속해서 사용하는 시간 간격의 곱셈입니다. 이 값은 1에서 10까지 포함됩니다.

기본값은 3입니다. 따라서 첫 번째 정보 메시지는 유예 기간으로 10초, 두 번째는 40초,160초에 세 번째 경고는 600초에 네 번째를 방지하도록 합니다.

smp.csd_lock_timeout=[KNL]

이 매개변수를 사용하면 smp_call_function() 과 관련자가 CPU가 CSD 잠금을 해제될 때까지 대기하는 시간(밀리초)을 지정할 수 있습니다. 이 기능은 CPU와 관련된 버그를 진단할 때 오랜 시간 동안 인터럽트를 비활성화하는 데 유용합니다.

  • 기본값은 5,000 밀리초입니다.
  • 값을 0으로 설정하면 이 기능이 비활성화됩니다.
  • 이 기능은 csdlock_debug- 커널 매개변수를 사용하여 보다 효율적으로 비활성화할 수 있습니다.
srcutree.big_cpu_lim=[KNL]

이 매개변수를 사용하면 대규모 시스템을 구성하는 CPU 수를 지정할 수 있습니다. 따라서 CloudEvent u_struct 구조에서 immediately allocate u_node 배열을 할당해야 합니다.

  • 기본값은 128 입니다.
  • 는 낮은 순서의 four 비트의 10.0.0.1 utree.convert_to_big3 과 같은 경우에만 적용됩니다 (부팅 시 결정).
srcutree.convert_to_big=[KNL]

이 매개변수를 사용하면 SRECDHE tree tree>-< u_struct 구조의 조건을 통해 rcu_node 트리를 사용하여 큰 양식으로 변환할 조건을 지정할 수 있습니다.

  • 0: never
  • 1: At init_srcu_struct() time.
  • 2 : rcutorture 를 결정할 때.
  • 3: 부팅 시(기본값)를 결정합니다.
  • 0x1X: 높은 경합의 경우 더하기.

    어느 쪽으로든, compile-time CONFIG _ NR_CPUS 대신 실제 런타임 수(nr_cpu_ids)에 따라 sized의 크기가 조정됩니다.

srcutree.srcu_max_nodelay=[KNL]
이 매개변수를 사용하면 SRECDHE 유예 기간 작업자 스레드가 0 지연으로 다시 예약되는 jiffy당 no-delay 인스턴스 수를 지정할 수 있습니다. 이 제한을 초과하여 작업자 스레드는 하나의 정체의 수면 지연으로 다시 예약됩니다.
srcutree.srcu_max_nodelay_phase=[KNL]
이 매개변수를 사용하면 grace-period 단계, 유휴 상태가 아닌 독자의 폴링 수를 지정할 수 있습니다. 이 제한을 초과하여 유예 기간 작업자 스레드는 유예 기간 동안 리더의 각 다시 스캔 사이에 한 정점의 수면 지연으로 다시 예약됩니다.
srcutree.srcu_retry_check_delay=[KNL]
이 매개 변수를 사용하면 자고 있지 않은 리더의 각 폴링 간에 유휴 상태가 아닌 지연의 마이크로초 수를 지정할 수 있습니다.
srcutree.small_contention_lim=[KNL]

이 매개변수를 사용하면 jiffy당 업데이트 측 경합 이벤트 수를 지정할 수 있습니다. 단, 대규모 구조 변환을 시작하기 전에 허용될 수 있습니다.

참고

Content utree.convert_to_big 값의 값은 경합 기반 변환에 대해 0x10 비트를 설정해야 합니다.

업데이트된 커널 매개변수

crashkernel=size[KMG][@offset[KMG]]

[KNL] kexec 를 사용하면 Linux가 패닉 시 크래시 커널로 전환할 수 있습니다. 이 매개변수는 해당 커널 이미지의 실제 메모리 영역 [offset, offset + size]을 예약합니다. @offset 이 생략되면 적절한 오프셋이 자동으로 선택됩니다.

[KNL, X86-64, ARM64] 먼저 4G 아래 영역을 선택하고 @offset 이 지정되지 않은 경우 4G 이상의 리전을 예약하도록 대체합니다.

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

crashkernel=size[KMG],low
  • [KNL, X86-64, ARM64] 이 매개변수는 두 번째 커널의 경우 4G에서 낮은 범위를 지정할 수 있습니다. crashkernel=X,high is passed.(예: swiotlb 에는 최소 64M+32K 저 메모리가 필요한 경우) 32비트 장치에 대한 DMA 버퍼가 실행되지 않도록 하려면 추가 메모리 부족 메모리가 필요합니다. 커널은 4G 미만의 기본 메모리 크기를 자동으로 할당하려고 합니다. 기본 크기는 플랫폼에 따라 다릅니다.

    • x86: max(swiotlb_size_or_default() + 8MiB, 256MiB)
    • Def64: 128MiB

      0: 낮은 할당을 비활성화하려면.

      이 매개변수는 crashkernel=X,high 가 사용되지 않거나 예약된 메모리가 4G 미만인 경우 무시됩니다.

  • [KNL, ARM64] 이 매개변수는 크래시 덤프 커널의 DMA 영역에서 범위를 지정할 수 있습니다.

    crashkernel=X,high 는 사용되지 않을 때 이 매개변수는 무시됩니다.

deferred_probe_timeout=[KNL]

이 매개변수를 사용하면 지연된 프로브에 대한 타임아웃을 초 단위로 설정하여 프로브에 대한 대기 시간을 초과할 수 있습니다. 선택한 특정 종속성(하위 시스템 또는 드라이버)만 무시됩니다.

시간 초과가 0 이면 initcall이 끝날 때 시간 초과됩니다. 시간 초과가 만료되지 않은 경우 성공적인 드라이버 등록마다 옵션이 다시 시작됩니다. 이 옵션은 재시도 후에도 지연된 프로브 목록에 여전히 있는 장치를 덤프합니다.

driver_async_probe=[KNL]

이 매개변수를 사용하면 비동기적으로 검색할 드라이버 이름을 나열할 수 있습니다. * (하위)는 모든 드라이버 이름과 일치합니다.

  • * 를 지정하면 나열된 나머지 드라이버 이름이 * 와 일치하지 않습니다.

    형식: & lt;driver_name1>,<driver_name2>…​

hugetlb_cma=[HW,CMA]

이 매개변수를 사용하면 gigantic hugepages의 할당에 사용되는 CMA 영역의 크기를 지정할 수 있습니다. 또는 노드 형식을 사용하는 경우 노드당 CMA 영역의 크기입니다.

형식: nn[KMGTPE] 또는 (노드 형식) <node>:nn[KMGTPE][,<node>:nn[KMGTPE]]]

지정된 크기의 CMA 영역을 예약하고 CMA 할당기를 사용하여 대규모 hugepages를 할당합니다. 활성화된 경우 gigantic hugepages의 부팅 시간 할당을 건너뜁니다.

hugepages=[HW]

이 매개변수를 사용하면 부팅 시 할당할 HugeTLB 페이지 수를 지정할 수 있습니다.

  • hugepagesz를 따르는 경우 할당할 hugepagesz 페이지 수를 지정합니다.
  • 명령줄에서 첫 번째 HugeTLB 매개변수인 경우 기본 대규모 페이지 크기에 할당할 페이지 수를 지정합니다.
  • 노드 형식을 사용하는 경우 노드당 할당할 페이지 수를 지정할 수 있습니다.

    Documentation/admin-guide/mm/hugetlbpage.rst 도 참조하십시오.

    형식: < integer> 또는 (노드 형식) <node>:<integer>[,<node>:<integer>]

hugetlb_free_vmemmap=[KNL]

이 매개변수를 사용하려면 CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP 가 활성화되어야 합니다. 대용량 hugetlb 사용자가 더 많은 메모리를 확보할 수 있습니다 (각 2MB hugetlb 페이지마다 7 * PAGE_SIZE).

  • 형식: { [oO][Nn]/Y/y/1 | [oO][Ff]/N/n/0 (기본값) }
  • [OO][Nn]/Y/y/1: 기능 활성화
  • [OO][Ff]/N/n/0: 기능 비활성화

    CONFIG_HUGETLB_PAGE_OPTIMIZE_VMEMMAP_DEFAULT_ON=y 로 빌드됨

    기본값은 on 입니다.

    참고

    이 매개변수는 memory_hotplug.memmap_on_memory 와 호환되지 않습니다. 두 매개변수를 모두 활성화하면 hugetlb_free_vmemmapmemory_hotplug.memmap_on_memory 보다 우선합니다.

ivrs_ioapic=[HW,X86-64]

이 매개변수는 IVRS ACPI 테이블에 제공된 IOAPIC-ID <-> DEVICE-ID 매핑에 대한 재정의를 제공합니다.

기본적으로 PCI 세그먼트는 0 이며 생략할 수 있습니다. 예를 들면 다음과 같습니다.

  • IOAPIC-ID 10을 PCI 장치 00:14.0에 매핑하려면 매개변수를 다음과 같이 작성합니다.

    ivrs_ioapic[10]=00:14.0
  • IOAPIC-ID 10을 PCI 세그먼트 0x1 및 PCI 장치 00:14.0에 매핑하려면 매개변수를 다음과 같이 작성합니다.

    ivrs_ioapic[10]=0001:00:14.0
ivrs_hpet=[HW,X86-64]

이 매개변수는 IVRS ACPI 테이블에 제공된 HPET-ID <-> DEVICE-ID 매핑에 대한 재정의를 제공합니다.

기본적으로 PCI 세그먼트는 0 이며 생략할 수 있습니다. 예를 들면 다음과 같습니다.

  • HPET-ID 10진수 0을 PCI 장치 00:14.0에 매핑하려면 매개변수를 다음과 같이 작성합니다.

    ivrs_hpet[0]=00:14.0
  • HPET-ID 10을 PCI 세그먼트 0x1 및 PCI 장치 00:14.0에 매핑하려면 매개변수를 다음과 같이 작성합니다.

    ivrs_ioapic[10]=0001:00:14.0
ivrs_acpihid=[HW,X86-64]

이 매개변수는 IVRS ACPI 테이블에 제공된 ACPI-HID:UID <-> DEVICE-ID 매핑에 대한 덮어쓰기를 제공합니다.

예를 들어 UART-HID:UID AMD0020:0 을 PCI 세그먼트 0x1 에 매핑하고 PCI 장치 ID 00:14.5 는 다음과 같이 작성합니다.

ivrs_acpihid[0001:00:14.5]=AMD0020:0

기본적으로 PCI 세그먼트는 0 이며 생략할 수 있습니다. 예를 들어 PCI 장치 00:14.5 의 경우 다음과 같이 매개변수를 작성합니다.

ivrs_acpihid[00:14.5]=AMD0020:0
kvm.eager_page_split=[KVM,X86]

이 매개 변수를 사용하여 KVM이 유러한 로깅 중에 모든 대규모 페이지를 사전에 분할할지 여부를 제어할 수 있습니다.

원하는 페이지 분할은 대규모 페이지를 분할하는 데 필요한 쓰기 보호 오류 및 MMU 잠금 경합을 제거하여 vCPU 실행으로 인한 중단을 줄입니다. 쓰기를 거의 수행하거나 소수의 VM 메모리에만 쓰는 VM 워크로드는 대규모 페이지를 읽기에 계속 사용할 수 있도록 즉시 페이지 분할을 비활성화하면 유용할 수 있습니다.

원하는 페이지 분할 동작은 KVM_DIRTY_LOG_INITIALLY_SET 이 활성화 또는 비활성화되었는지 여부에 따라 달라집니다.

  • 비활성화되어 있는 경우 memslot의 모든 대규모 페이지는 해당 memslot에서 더티 로깅이 활성화되면 빠르게 분할됩니다.
  • 활성화되면 KVM_CLECDHE_DIRTY ioctl 중에 빠른 페이지 분할이 수행되며 페이지의 삭제만 수행됩니다.

    원하는 페이지 분할은 kvm.tdp_mmu=Y 경우에만 지원됩니다.

    기본값은 Y (on)입니다.

kvm-arm.mode=[KVM,ARM]

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

  • none: KVM을 강제 비활성화합니다.
  • nvhe: 보호 대상 게스트를 지원하지 않는 표준 nVHE 기반 모드입니다.
  • protected: nVHE 기반 모드가 호스트에서 비공개로 유지되는 게스트를 지원합니다.

    하드웨어 지원에 따라 기본값은 VHE/nVHE 입니다.

nosmep=[X86,PPC64s]

이 매개변수를 사용하면 프로세서에서 지원하는 경우에도 SMEP(Supervisor Mode Execution Prevention)를 비활성화할 수 있습니다.

형식: pci=option[,option…​] [ PCI] various_ PCI_subsystem_options

여기에서 일부 옵션은 특정 장치 또는 장치 세트 (<pci_dev&gt;)에서 작동합니다. 이러한 형식은 다음 형식 중 하나로 지정됩니다.

[<domain>:]<bus>:<dev>.<func>[/<dev>.<func>]*
pci:<vendor>:<device>[:<subvendor>:<subdevice>]
참고
  • 첫 번째 형식은 새 하드웨어가 삽입될 때, 마더보드 펌웨어가 변경되는 경우 또는 다른 커널 매개변수로 인한 변경으로 인해 변경될 수 있는 PCI 버스/디바이스/기능 주소를 지정합니다. 도메인이 지정되지 않은 경우 0으로 간주됩니다. 선택적으로 여러 장치 및 기능 주소를 통한 장치 경로는 기본 주소 다음에 지정할 수 있습니다.
  • 두 번째 형식은 시스템의 여러 장치와 일치할 수 있는 구성 공간의 ID를 사용하여 장치를 선택합니다.
  • earlydump: 커널이 모든 것을 변경하기 전에 PCI 구성 공간을 덤프
  • off: [X86]은 PCI 버스를 검색하지 않습니다.
  • BIOS: [X86-32] PCI BIOS를 강제로 사용하며 하드웨어에 직접 액세스하지 마십시오. 시스템에 비표준 PCI 호스트 브릿지가 있는 경우 사용합니다.
  • nobios: [X86-32] PCI BIOS 사용을 허용하지 않으며 직접 하드웨어 액세스 방법만 허용됩니다. 부팅 시 충돌이 발생하고 BIOS로 인한 것으로 의심되는 경우 이 기능을 사용합니다.
  • conf1: [X86] force use of PCI Configuration Access Mechanism 1 ( IO 포트 0xCF8의 구성 주소, IO 포트 0xCFC의 데이터 둘 다 32비트).
  • conf2: [X86] Force use of PCI Configuration Access Mechanism 2 (IO 포트 0xCF8은 기능에 대한 8비트 포트, IO 포트 0xCFA, 8비트, 버스 번호를 설정합니다.) 그러면 0xC000-0xCFFF포트를 통해 구성 공간에 액세스할 수 있습니다.

  • noaer: [ PCIE] PCIEAER 커널 구성 매개변수가 활성화된 경우 이 커널 부팅 옵션을 사용하여 PCIE 고급 오류 보고 사용을 비활성화할 수 있습니다.
  • nodomains: [ PCI] 다중 PCI 루트 도메인(ACPI를 사용하는 경우 PCI 세그먼트)에 대한 지원을 비활성화합니다.
  • nommconf: [X86] PCI 구성에 대한 MMCONFIG 사용 비활성화
  • check_enable_amd_mmconf [X86]: AMD 제품군 10h CPU의 PCI 구성 공간에 올바르게 구성된 MMIO 액세스를 확인하고 활성화
  • nomsi: [MSI] PCI_MSI 커널 구성 매개변수를 활성화하면 이 커널 부팅 옵션을 사용하여 시스템 전체에서 MSI 인터럽트 사용을 비활성화할 수 있습니다.
  • noioapicquirk: [APIC] 모든 부팅 인터럽트 quirk를 비활성화합니다. 부팅 IRQ를 사용하도록 설정하는 안전 옵션입니다. 이 작업은 절대 필요하지 않아야 합니다.
  • ioapicreroute: [APIC] 부팅 IRQ를 부팅 IRQ를 비활성화할 수 없는 브리지의 기본 IO-APIC로 다시 라우팅할 수 있습니다. 이렇게 하면 시스템이 IRQ를 마스크할 때 광범위한 IRQ 소스가 수정되었습니다.
  • noioapicreroute [APIC] 부팅 IRQ를 비활성화할 수 없는 칩셋에 연결하는 IRQ와 동일한 부팅 IRQ를 사용하는 해결방법을 비활성화합니다. ioapicreroute의 반대입니다.
  • BIOSirq: [X86-32] PCI BIOS 호출을 사용하여 인터럽트 라우팅 테이블을 가져옵니다. 이러한 호출은 여러 시스템에서 버그가 있는 것으로 알려져 있으며 사용 시 컴퓨터를 정지하지만 다른 컴퓨터에서는 인터럽트 라우팅 테이블을 얻을 수 있는 유일한 방법입니다. 커널이 Motherboard에서 IRQ를 할당하거나 보조 PCI 버스를 찾을 수 없는 경우 이 옵션을 사용해 보십시오.
  • 16.1: [X86] IKEvs 확장에 주소 공간을 할당합니다. 특정 장치는 iPXE와 기타 리소스간에 주소 디코더를 공유하므로 주의해서 사용하십시오.
  • norom: [X86] BIOS 할당 주소 범위가 없는 IKEvs 확장에는 주소 공간을 할당하지 않습니다.
  • nobar: [X86] BIOS에서 할당하지 않은 BAR에 주소 공간을 할당하지 않습니다.
  • irqmask=0xMMMM: [X86] PCI 장치에 자동으로 할당되는 IRQ의 비트 마스크를 설정합니다. 커널이 이러한 방식으로 ISA 카드의 IRQ를 제외하도록 할 수 있습니다.
  • pirqaddr=0xAAAAA: [X86]은 F0000h-100000h 범위 외부에 있는 경우 PIRQ 테이블의 물리적 주소(일반적으로 BIOS에서 생성)를 지정합니다.
  • lastbus=N: [X86] 모든 버스트 #N을 스캔합니다. 커널이 보조 버스트를 찾을 수 없는 경우 유용할 수 있습니다.
  • 할당 버스: [X86] 항상 모든 PCI 버스 번호를 직접 할당하여 펌웨어가 수행할 수 있는 모든 작업을 덮어씁니다.
  • usepirqmask: [X86] BIOS $PIR 테이블에 저장된 가능한 IRQ 마스크입니다. 이는 BIOS가 손상된 일부 시스템, 특히 HP Pavilion N5400 및 Omnibook XE3 문제 해결이 필요한 일부 시스템에 필요합니다. ACPI IRQ 라우팅이 활성화된 경우 이 방법은 적용되지 않습니다.
  • noacpi: [X86] IRQ 라우팅 또는 PCI 스캔에 ACPI를 사용하지 마십시오.
  • use_crs: [X86] ACPI의 PCI 호스트 브리지 창 정보를 사용합니다. 2008년 이후의 BIOS에서는 기본적으로 활성화되어 있습니다. 이 버전을 사용해야 하는 경우 버그를 보고해 주십시오.
  • nocrs: [X86] ACPI에서 PCI 호스트 브리지 창을 무시합니다. 이 버전을 사용해야 하는 경우 버그를 보고해 주십시오.
  • use_e820: [X86] PCI 호스트 브리지 창의 일부를 제외하려면 E820 예약을 사용합니다. 이는 호스트 브리지 _CRS 방법의 BIOS 결함에 대한 해결 방법입니다. 이 버전을 사용해야 하는 경우 linux-pci@vger.kernel.org 에 버그를 보고하십시오.
  • no_e820: [X86] PCI 호스트 브리지 창에 대한 E820 예약을 무시합니다. 이는 최신 하드웨어에서 기본값입니다. 이 버전을 사용해야 하는 경우 linux-pci@vger.kernel.org 에 버그를 보고하십시오.
  • routeirq: 모든 PCI 장치에 대해 IRQ 라우팅을 수행합니다. 일반적으로 pci_enable_device() 에서 수행되므로 이 옵션은 호출하지 않는 손상된 드라이버에 대한 임시 해결 방법입니다.
  • skip_isa_align: [X86]은 io start addr를 정렬하지 않으므로 더 많은 pci 카드를 처리할 수 있습니다.
  • 참고: [X86] 초기 유형 1 스캔은 수행하지 않습니다. 이는 일부 장치의 구성 공간을 읽을 때 머신을 확인하는 깨진 보드에서 도움이 될 수 있습니다. 그러나 다양한 해결 방법이 비활성화되어 일부 IOMMU 드라이버가 작동하지 않습니다.
  • bfsort: PCI 장치를 업계 우선 순서로 정렬합니다. 이 정렬은 이전(ECDHE 2.4) 커널과 호환되는 장치 순서를 가져오기 위해 수행됩니다.
  • nobfsort: PCI 장치를 범위 우선 순서로 정렬하지 마십시오.
  • 10.0.0.1ie_bus_tune_off: PCIe MPS (Max Payload Size) 튜닝을 비활성화하고 BIOS 구성 MPS 기본값을 사용합니다.
  • longie_bus_safe: 모든 장치의 MPS를 루트 복잡성 아래의 모든 장치에서 지원하는 가장 큰 값으로 설정합니다.
  • gRPCie_bus_perf는 부모 버스에 따라 허용되는 가장 큰 MPS로 장치 MPS를 설정합니다. 또한 최상의 성능을 위해 MRRS(Max Read Request Size)를 가장 큰 지원 값(디바이저가 지원할 수 있는 MPS보다 크지 않음)으로 설정합니다.
  • longie_bus_peer2peer: 모든 장치를 지원하는 모든 장치의 MPS를 128B로 설정합니다. 이 구성을 사용하면 성능이 저하될 수 있으므로 장치 쌍 간에 피어 투 피어 DMA를 사용할 수 있습니다. 또한 핫플러그 장치가 작동할 수 있도록 보장합니다.
  • cbiosize=nn[KMG]: CardBus 브리지의 IO 창용으로 예약된 고정 버스 공간입니다. 기본값은 256바이트입니다.
  • cbmemsize=nn[KMG]: CardBus 브리지의 메모리 창용으로 예약된 고정 버스 공간입니다. 기본값은 64MB 입니다.
  • resource_alignment=

    • 형식: [<order of align>@]<pci_dev>[; …​]
    • 정렬 및 장치를 지정하여 정렬된 메모리 리소스를 다시 할당합니다. 장치를 지정하는 방법은 위에 설명되어 있습니다. & lt;order of align& gt;을 지정하지 않으면 PAGE_SIZE 가 정렬으로 사용됩니다. 리소스 창을 확장해야 하는 경우 PCI- PCI 브리지를 지정할 수 있습니다. 장치의 여러 인스턴스에 대한 정렬을 지정하려면 PCI 공급 업체, 장치, 하위 공급 업체 및 하위 장치를 지정할 수 있습니다 (예: 4096바이트 정렬에 대해 12@pci:8086:9c22:103c:198f ).
  • ecrc=: PCIe ECRC 활성화/비활성화(ECDHE layer end-to-end CRC 검사).

    • BIOS: BIOS/firmware 설정을 사용합니다. 이는 기본값입니다.
    • 해제: ECRC 해제
    • On: Turn ECRC on.
  • hpiosize=nn[KMG]: 핫플러그 브리지 IO 창용으로 예약된 고정 버스 공간입니다. 기본 크기는 256바이트입니다.
  • hpmmiosize=nn[KMG]: 핫플러그 브리지의 MMIO 창용으로 예약된 고정된 버스 공간입니다. 기본 크기는 2MB입니다.
  • hpmmioprefsize=nn[KMG]: 핫플러그 브리지의 MMIO_PREF 창용으로 예약된 고정 버스 공간입니다. 기본 크기는 2MB입니다.
  • hpmemsize=nn[KMG]: 핫플러그 브리지 및 MMIO_PREF 창을 위해 예약된 고정 버스 공간입니다. 기본 크기는 2MB입니다.
  • hpbussize=nn: 핫플러그 브리지 아래에 버스를 위해 예약된 추가 버스 번호의 최소 양입니다. 기본값은 1 입니다.
  • realloc=: BIOS에서 수행하는 할당이 모든 하위 장치에 필요한 리소스를 수용하기 위해 너무 작으면 PCI 브리지 리소스를 활성화/비활성화합니다.

    • 해제: realloc 끄기
    • On: Turn realloc on
  • realloc: realloc=on
  • noari: PCIe ARI를 사용하지 마십시오.
  • noats: [ PCIE, Intel-IOMMU, AMD-IOMMU]는 PCIe ATS(및 IOMMU 장치 IOTLB)를 사용하지 않습니다.
  • windowsie_scan_all: 가능한 모든 PCIe 장치를 스캔합니다. 그렇지 않으면 PCIe downstream 포트 아래에 있는 하나의 장치만 찾습니다.
  • big_root_window: AMD CPU의 PCIe root 복잡성에 큰 64비트 메모리 창을 추가하십시오. 일부 GFX 하드웨어는 모든 VRAM에 액세스할 수 있도록 BAR의 크기를 조정할 수 있습니다. 창을 추가하는 것은 약간 위험(보고되지 않은 장치와 충돌할 수 있음)이므로 커널이 테인트됩니다.
  • disable_acs_redir=<pci_dev>[; …​]: 테인트로 구분된 하나 이상의 PCI 장치(위에서 지정된 형식)를 지정합니다. 지정된 각 장치에는 강제 해제된 PCI ACS 리디렉션 기능이 있으며 업스트림에 강제 적용하지 않고 브리지를 통해 장치 간 P2P 트래픽을 허용합니다. 참고: 장치 간 격리를 제거하고 IOMMU 그룹에 더 많은 장치를 배치할 수 있습니다.
  • force_floating: [S390]에서는 부동 인터럽트를 강제 사용합니다.
  • nomio: [S390]은 PLO 명령어를 사용하지 마십시오.
  • norid: [S390]은 RID 필드를 무시하고 PCI 기능당 하나의 PCI 도메인을 강제로 사용합니다.
rcupdate.rcu_cpu_stall_timeout=[KNL]
CPU stall 경고 메시지에 대한 타임아웃을 설정합니다. 값은 초 단위이며 허용되는 최대 값은 300초입니다.
rcupdate.rcu_task_stall_timeout=[KNL]

이 매개변수를 사용하면 Jiffies for RECDHE task stall warning messages에서 timeout을 설정할 수 있습니다. 값이 0보다 작거나 같은 경우 비활성화하십시오.

기본값은 10 분입니다.

value의 변경 사항은 다음 유예 기간이 시작될 때까지 적용되지 않습니다.

retbleed=[X86]

이 매개변수를 사용하면 RETBleed (Arbitrary Speculative Code Execution with Return Instructions) 취약점의 완화를 제어할 수 있습니다.

AMD 기반 UNRET 및 IBPB 완화 작업만으로는 형제 스레드가 다른 형제 스레드의 예측에 영향을 미치는 것을 막을 수 없습니다. 따라서 STIBP는 이를 지원하는 프로세서에서 사용되며 그렇지 않은 프로세서에서 SMT를 완화합니다.

  • off - 완화 없음
  • auto - migitation을 자동으로 선택합니다.
  • Auto,nosmt - 자동으로 완화 조치를 선택하여 전체 완화 조치를 위해 필요한 경우 SMT를 비활성화합니다(STIBP가 없는 경우).
  • ibpb - AMD에서 기본 블록 경계에서도 짧은 추측 창을 완화합니다. 안전하고 가장 높은 Perf 영향을 미칩니다. 있는 경우 STIBP도 활성화합니다. Intel에는 적합하지 않습니다.
  • ibpb,nosmt - 위의 ibpb 처럼하지만 STIBP를 사용할 수없는 경우 SMT를 비활성화합니다. STIBP가 없는 시스템의 대안입니다.
  • Ret - 억제되지 않은 반환 토크를 활성화하며 AMD f15h-f17h 기반 시스템에서만 유효합니다.
  • unret,nosmt - 원하지 않는 것처럼, STIBP를 사용할 수 없는 경우 SMT를 비활성화합니다. STIBP가 없는 시스템의 대안입니다.

    auto 를 선택하면 실행 시 CPU에 따라 완화 방법이 선택됩니다.

    이 옵션을 지정하지 않는 것은 retbleed=auto 와 동일합니다.

swiotlb=[ARM,IA-64,PPC,MIPS,X86]

형식: { <int> [,<int>] | force | noforce }

  • <int> - I/O TLB slabs 수
  • <int> - 쉼표 이후의 두 번째 정수 자체 잠금 이 있는 Swiotlb 영역 수입니다. 2 의 거듭제곱으로 반올림됩니다.
  • force - 커널에서 자동으로 사용하지 않는 경우에도 bounce 버퍼를 강제로 사용합니다.
  • noforce - Ballunce buffers를 사용하지 않음(디버그용)

새로운 sysctl 매개변수

kernel.nmi_wd_lpm_factor (PPC만 해당)

이 요소는 LPM 중 NMI 워치독 타임아웃을 계산할 때 watchdog_thresh 에 추가된 백분율을 나타냅니다. 소프트 잠금 시간 제한은 영향을 받지 않습니다. NMI 워치독 시간 제한에 적용하려면 이 요소를 사용합니다( nmi_watchdog 가 1로 설정된 경우에만).

  • 값이 0 이면 변경되지 않습니다.
  • 기본값은 200 입니다. 즉, NMI 워치독이 30s 로 설정됩니다( 워치독_thresh 에 따라 10).
net.core.txrehash

이 매개변수를 사용하면 SO_TXREHASH 옵션이 10.0.0.1K_ TXREHASH_DEFAULT (즉, setsockopt에 의해 재정의되지 않음)로 설정된 경우 청취 소켓에 대한 기본 해시 다시 시도 동작을 제어할 수 있습니다.

  • 1 (기본값)으로 설정하면 수신 대기 소켓에서 해시가 수행됩니다.
  • 0 으로 설정하면 해시가 수행되지 않습니다.
net.sctp.reconf_enable - BOOLEAN

이 확장 기능을 사용하면 RFC6525에 지정된 Stream Reconfiguration 기능의 확장을 활성화하거나 비활성화할 수 있습니다. 이 확장은 스트림을 "재설정"하는 기능을 제공하며, SSN/TSN Reset,SSN/TSN Reset Add Outgoing/Incoming Streams 의 매개변수를 포함합니다.

  • 1: 확장을 활성화합니다.
  • 0: 확장을 비활성화합니다.
  • 기본값은 0 입니다.
net.sctp.intl_enable - BOOLEAN

이 확장 기능을 사용하면 RFC8260에 지정된 User Message Interleaving 기능의 확장을 활성화하거나 비활성화할 수 있습니다. 이 확장 기능을 사용하면 다른 스트림에서 전송된 사용자 메시지를 인터리빙할 수 있습니다. 이 기능을 활성화하면 I-DATA 청크가 DATA 청크를 교체하여 피어에서 지원하는 경우 사용자 메시지를 전달합니다. 이 기능을 사용하려면 이 옵션을 1 로 설정하고 소켓 옵션 SCTP_FRAGMENT_INTERLEAVE2 로 설정하고 SCTP_INTERLEAVING_SUPPORTED1 로 설정해야 합니다.

  • 1: 확장을 활성화합니다.
  • 0: 확장을 비활성화합니다.
  • 기본값은 0 입니다.
net.sctp.ecn_enable - BOOLEAN

이 확장 기능을 사용하면 SCTP에서 Explicit Congestion Notification (ECN) 사용을 제어할 수 있습니다. TCP에서와 마찬가지로 ECN은 SCTP 연결의 양쪽 끝에 해당 연결에 대한 지원을 나타내는 경우에만 사용됩니다. 이 기능은 패킷을 삭제하기 전에 라우터가 정체 신호를 보낼 수 있기 때문에 정체 손실을 방지하는 데 유용합니다.

  • 1: ecn을 활성화합니다.
  • 0: ecn을 비활성화합니다.
  • 기본값은 1 입니다.
vm.hugetlb_optimize_vmemmap

memory_hotplug.memmap_on_memory 커널 매개변수가 구성되면 이 knob를 사용할 수 없습니다. 또는 struct 페이지 크기( 포함/linux/mm_types.h에 정의된 구조)가 두 가지(별하지 않은 시스템 구성으로 인해 발생할 수 있음)의 전원이 아닌 경우 사용할 수 없습니다.

각 HugeTLB 페이지와 관련된 vmemmap 페이지를 최적화하는 기능을 활성화(설정)하거나 0으로 설정할 수 있습니다.

  • 활성화된 경우, buddy allocator에서 HugeTLB 페이지의 후속 할당의 vmemmap 페이지가 최적화되고(2MB HugeTLB 페이지당 7 페이지당 7페이지, 1GB HugeTLB 페이지당 7페이지)가 이미 할당된 HugeTLB 페이지가 최적화되지 않습니다. 최적화된 HugeTLB 페이지가 HugeTLB 풀에서 buddy allocator로 해제되면 해당 범위를 다시 매핑해야 하며 vmemmap 페이지가 이전에 다시 배치되어야 합니다.
  • 사용 사례가 HugeTLB 페이지에 impromptu가 할당되는 경우 (예: nr_hugepages 를 사용하여 HugeTLB 페이지를 명시적으로 할당하지 않고 nr_overcommit_hugepages 만 설정하면 해당 오버 커밋된 HugeTLB 페이지가 HugeTLB 풀에서 가져오는 대신 impromptu가 할당됩니다. HugeTLB 풀과 buddy 할당기 간에 HugeTLB 페이지를 할당하거나 해제하는 오버헤드(이전보다 2배 더 느림)와 메모리 절감의 이점을 측정해야 합니다. 또 다른 동작은 시스템이 많은 메모리 부족 상태에 있는 경우 사용자가 HugeTLB 페이지를 HugeTLB 풀에서 buddy allocator로 해제하는 것을 방지할 수 있다는 것입니다. vmemmap 페이지 할당에 실패 할 수 있기 때문에 나중에 시스템이 이 상황에 직면하면 다시 시도해야 합니다.
  • 비활성화되면 buddy allocator에서 HugeTLB 페이지의 후속 할당의 vmemmap 페이지는 최적화되지 않으며, buddy allocator에서 할당시 추가 오버헤드가 사라지지 않고 이미 최적화된 HugeTLB 페이지의 영향을 받지 않습니다. 최적화된 HugeTLB 페이지가 없는지 확인하려면 nr_hugepages 를 먼저 0 으로 설정한 다음 비활성화할 수 있습니다. 0nr_hugepages 에 쓰면 HugeTLB 페이지를 사용하는 모든 것이plus 페이지가 됩니다. 따라서, 더 이상 사용하지 않을 때까지 플러더 페이지가 여전히 최적화되어 있습니다. 시스템에 최적화된 페이지가 없기 전에 해당 페이지가 릴리스될 때까지 기다려야 합니다.
net.core.rps_default_mask
새로 생성된 네트워크 장치에 사용되는 기본 RPS CPU 마스크입니다. 빈 마스크는 기본적으로 RPS를 비활성화함을 의미합니다.

sysctl 매개변수 변경

kernel.numa_balancing

이 매개변수를 사용하면 페이지 폴트 기반 NUMA 메모리 밸런싱을 활성화, 비활성화, 구성할 수 있습니다. 메모리는 자주 액세스하는 노드로 자동 이동합니다. 설정할 값은 다음 명령을 실행한 결과일 수 있습니다.

= =================================
0 NUMA_BALANCING_DISABLED
1 NUMA_BALANCING_NORMAL
2 NUMA_BALANCING_MEMORY_TIERING
= =================================

원격 액세스를 줄이기 위해 여러 NUMA 노드 간 페이지 배치를 최적화하기 위해 NUMA_BALANCING_NORMAL 또는 NUMA_BALANCING_NORMAL. NUMA 시스템에서는 CPU에서 원격 메모리에 액세스하는 경우 성능이 저하됩니다. 이 기능을 활성화하면 커널은 주기적으로 페이지 매핑을 해제하고 나중에 페이지 폴트를 트랩하여 메모리에 액세스하는 작업 스레드를 샘플링합니다. 페이지 폴트 시점에 액세스 중인 데이터를 로컬 메모리 노드로 마이그레이션해야 하는지 여부가 결정됩니다.

또는 NUMA_BALANCING_MEMORY_TIERING 은 다양한 메모리 유형(다른 NUMA 노드로 표시됨) 간에 페이지 배치를 최적화하여 빠른 메모리에 핫 페이지를 배치합니다. 이는 매핑 해제 및 페이지 폴트에 따라 구현됩니다.

net.ipv6.route.max_size
가비지 컬렉션이 캐시된 경로 항목을 관리하므로 ipv6에서는 더 이상 사용되지 않습니다.
net.sctp.sctp_wmem

이 튜닝 가능 항목은 영향을 미치지 않는 것으로 문서화되었습니다. 이제 첫 번째 값(최소)만 사용되며 defaultmax 는 무시됩니다.

  • min: SCTP 소켓에서 사용할 수 있는 전송 버퍼의 최소 크기입니다. 중간 수준의 메모리 부족에서도 각 SCTP 소켓 (하지만 연관되지 않음)이 보장됩니다.
  • 기본값은 4K 입니다.