5장. 외부 커널 매개변수에 대한 중요한 변경 사항
이 장에서는 Red Hat Enterprise Linux 9.2에 배포된 커널의 중요한 변경 사항에 대한 요약을 시스템 관리자에게 제공합니다. 이러한 변경 사항에는 예를 들어 추가 또는 업데이트된 proc
항목, sysctl
및 sysfs
기본 값, 부팅 매개 변수, 커널 구성 옵션 또는 눈에 띄는 동작 변경 사항이 포함될 수 있습니다.
새 커널 매개변수
- nomodeset
이 커널 매개변수를 사용하면 커널 모드 설정을 비활성화할 수 있습니다. gRPC 드라이버는 표시 모드 변경 또는 빠른 렌더링을 수행하지 않습니다. 펌웨어 또는 부트 로더에 의해 설정된 경우에만 시스템 프레임 버퍼를 사용할 수 있습니다.
nomodeset
은 폴백으로 유용하거나 테스트 및 디버깅에 유용합니다.- printk.console_no_auto_verbose
이 커널 매개변수를 사용하면 oops, panic 또는 lockdep-detected 문제에서 콘솔 로그 수준 발생을 비활성화할 수 있습니다(lock debug가 있는 경우에만). 직렬 콘솔에서 낮은 baudrate로 설정하는 것을 제외하고 이 매개변수를
0
으로 설정하여 더 많은 디버그 정보를 제공합니다.-
형식: <
;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 allocateu_node
배열을 할당해야 합니다.-
기본값은
128
입니다. -
는 낮은 순서의 four 비트의 10.0.0.1
utree.convert_to_big
가3
과 같은 경우에만 적용됩니다 (부팅 시 결정).
-
기본값은
- 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_CPUSnr_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_vmemmap
이memory_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포트를 통해 구성 공간에 액세스할 수 있습니다.
- 구성 액세스 메커니즘에 대한 자세한 내용은 http://wiki.osdev.org/PCI 을 참조하십시오.
- 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_INTERLEAVE
를2
로 설정하고SCTP_INTERLEAVING_SUPPORTED
를1
로 설정해야 합니다.- 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
으로 설정한 다음 비활성화할 수 있습니다.0
을nr_hugepages
에 쓰면 HugeTLB 페이지를 사용하는 모든 것이plus 페이지가 됩니다. 따라서, 더 이상 사용하지 않을 때까지 플러더 페이지가 여전히 최적화되어 있습니다. 시스템에 최적화된 페이지가 없기 전에 해당 페이지가 릴리스될 때까지 기다려야 합니다.
-
활성화된 경우, buddy allocator에서 HugeTLB 페이지의 후속 할당의
- 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
이 튜닝 가능 항목은 영향을 미치지 않는 것으로 문서화되었습니다. 이제 첫 번째 값(최소
)만 사용되며
default
및max
는 무시됩니다.- min: SCTP 소켓에서 사용할 수 있는 전송 버퍼의 최소 크기입니다. 중간 수준의 메모리 부족에서도 각 SCTP 소켓 (하지만 연관되지 않음)이 보장됩니다.
-
기본값은
4K
입니다.