Menu Close

5장. 외부 커널 매개변수로 중요한 변경

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

새 커널 매개변수

idxd.sva = [HW]

형식: <bool>

이 매개변수를 사용하면 idxd 커널 모듈에 대해 공유 가상 메모리(SVA) 지원을 강제로 비활성화할 수 있습니다.

기본값은 true 입니다(1.

lSM.debug = [SECURITY]
이 매개변수를 사용하여 LSM(Linux Security Module) 초기화 디버깅 출력을 활성화할 수 있습니다.
lsm = lsm1,…​,lsmN [SECURITY]

이 매개변수를 사용하여 LSM(Linux Security Module) 초기화 순서를 선택할 수 있습니다.

이 매개 변수는 CONFIG_LSM 옵션과 security= 매개 변수를 재정의합니다.

rcutree.qovld = [KNL]

이 매개변수를 사용하면 대기 중인 RCU(읽기 복사-업데이트) 콜백의 임계값을 설정할 수 있습니다. 이 임계값을 넘어서 RCU의 force-quis advanced-state 스캔은 cond_resched() 시스템 호출의 도움을 받고 CPU가 더 빨리 정지 상태에 도달할 수 있도록 IPI를 예약하는 데 적극적으로 도움을 줍니다.

부팅 시 rcutree.qhimark 매개변수를 기반으로 이 매개변수를 0보다 작은 값으로 설정할 수 있습니다. 또는 보다 적극적인 도움말 등록을 비활성화하려면 이 매개변수를 0으로 설정합니다.

rcutree.rcu_unlock_delay = [KNL]

이 매개변수를 사용하면 구성 부울이 CONFIG _RCU_STRICT_GRACE_PERIOD=y로 설정된 커널에서 rcu_read_unlock() -time delay를 지정할 수 있습니다.

기본값은 0입니다.

더 큰 지연으로 인해 RCU(Read-copy-update) 포인터 누수를 감지할 가능성이 높아집니다. 관련 rcu_read_unlock() 이 완료된 후 RCU 보호 포인터를 사용하는 결함이 있는 것입니다.

rcutorture.irqreader = [KNL]
이 매개변수를 사용하여 RCU(Read-copy-update) 리더를 인터럽트 요청(IRQ) 핸들러에서 실행하거나 타이머 핸들러에서 실행할 수 있습니다.
rcutorture.leakpointer = [KNL]
이 매개변수를 사용하면 RCU(Read-copy-update) 보호 포인터를 리더 외부에서 유출할 수 있습니다. 이 경우 스플릿이 발생할 수 있으며 CONFIG_RCU_STRICT_GRACE_PERIOD=y 와 같은 구성 기능을 테스트하여 이러한 누수를 감지하기 위한 것입니다.
rcutorture.read_exit = [KNL]
이 매개변수를 사용하면 읽기-then-exit kthreads 수를 설정하여 RCU(Read-copy-update) 업데이트 및 task-exit 프로세싱의 상호 작용을 테스트할 수 있습니다.
rcutorture.read_exit_burst = [KNL]
이 매개변수를 사용하면 지정된 read-then-exit 에피소드에서 일련의 read-then-exit kthreads가 생성되는 횟수를 지정할 수 있습니다.
rcutorture.read_exit_delay = [KNL]
이 매개 변수를 사용하여 연속적인 read-then-exit 테스트 에피소드 간에 지연(초)을 지정할 수 있습니다.
rcutorture.stall_cpu_block = [KNL]
이 매개변수를 사용하면 중지하는 동안 유휴 상태로 설정할 수 있습니다. 결과적으로 RRC(Read-copy-update)의 다른 모든 지연 관련 활동 외에 미리 비어 있는 RRC(Read-copy-update)의 경고가 발생할 수 있습니다.
rcutorture.stall_gp_kthread = [KNL]

이 매개변수를 사용하면 RCU CPU 중단 경고를 테스트하기 위해 RCU(Read-copy-update) grace-period kthread 내에서 강제 절전 기간(초)을 지정할 수 있습니다.

기능을 비활성화하려면 이 매개 변수를 0으로 설정합니다.

stall_cpustall_gp_kthread 매개변수가 모두 지정되면 kthread가 먼저 종료된 다음 CPU를 사용합니다.

rcupdate.rcu_cpu_stall_suppress_at_boot = [KNL]
이 매개변수를 사용하면 RCU CPU stall 경고 메시지와 초기 부팅 중에 발생하는 서지 작성기 중단 경고를 억제할 수 있습니다. init 작업이 생성되기 전의 시간입니다.
rcupdate.rcu_task_ipi_delay = [KNL]

이 매개변수를 사용하면 RCU(Read-copy-update) 작업에서 지정된 유예 기간부터 시작하여 IPI를 보내지 않는 시간을 jiffies에 설정할 수 있습니다.

다수의 값을 설정하면 실시간 워크로드 방해가 방지되지만 유예 기간이 길어집니다.

refscale.holdoff = [KNL]
이 매개변수를 사용하면 테스트 시작 유지 기간을 설정할 수 있습니다. 이 매개 변수의 목적은 간섭을 방지하기 위해 부팅이 완료될 때까지 테스트 시작을 지연시키는 것입니다.
refscale.loops = [KNL]

이 매개변수를 사용하여 테스트에서 기본 동기화를 통해 반복문을 설정할 수 있습니다. 이 수를 늘리면 루프 시작/종료 오버헤드로 인한 노이즈가 줄어듭니다.

기본값은 2020년 x86 노트북에서 몇 분량의 피코초로 줄었습니다.

refscale.nreaders = [KNL]

이 매개변수를 사용하여 리더 수를 설정할 수 있습니다.

기본값 -1은 N을 선택합니다. 여기서 N은 CPU 수의 약 75%입니다.

refscale.nruns = [KNL]
이 매개변수를 사용하여 각 실행 수는 콘솔 로그에 덤프됩니다.
refscale.readdelay = [KNL]
이 매개변수를 사용하면 마이크로초 단위로 측정된 읽기 측 심각 섹션 기간을 설정할 수 있습니다.
refscale.scale_type = [KNL]
이 매개변수를 사용하여 테스트할 읽기 보호 구현을 지정할 수 있습니다.
refscale.shutdown = [KNL]

이 매개변수를 사용하면 성능 테스트 종료 시 시스템을 종료할 수 있습니다.

기본값은 1이고 시스템이 종료됩니다. refscale이 커널에 빌드됩니다.

값이 0이고 시스템이 계속 실행되도록 둡니다. refscale은 모듈로 구축됩니다.

refscale.verbose = [KNL]
이 매개변수를 사용하여 추가 printk() 문을 활성화할 수 있습니다.
scftorture.holdoff = [KNL]

이 매개변수를 사용하여 테스트를 시작하기 전에 대기할 시간(초)을 지정할 수 있습니다.

paramter는 모듈 삽입을 위해 기본적으로 0으로, smp_call_function() 테스트의 경우 10초로 설정됩니다.

scftorture.longwait = [KNL]

이 매개변수를 사용하면 선택한 한도(초)까지 임의로 선택한 매우 긴 대기 시간을 요청할 수 있습니다.

기본값은 0이며 이 기능을 비활성화합니다.

심지어 0이 아닌 작은 시간을 요청하면 RCU(Read-copy-update) CPU 중단 경고, 소프트 잠금 문제 등이 발생할 수 있습니다.

scftorture.nthreads = [KNL]

이 매개변수를 사용하여 생성할 kthreads 수를 지정하여 smp_call_function() 함수 제품군을 호출할 수 있습니다.

기본값 -1은 CPU 수와 동일한 kthreads 수를 지정합니다.

scftorture.onoff_holdoff = [KNL]
이 매개변수를 사용하여 CPU-hotplug 작업을 시작하기 전에 테스트를 시작한 후 대기하는 시간(초)을 지정할 수 있습니다.
scftorture.onoff_interval = [KNL]

이 매개변수를 사용하여 연속 CPU-핫플러그 작업 사이에 대기할 시간(초)을 지정할 수 있습니다.

기본값은 0이며 CPU-핫플러그 작업이 비활성화됩니다.

scftorture.shutdown_secs = [KNL]

이 매개변수를 사용하여 테스트를 시작한 후 초 수를 지정할 수 있습니다. 테스트 후 시스템이 종료됩니다.

기본값 0을 사용하면 시스템 종료를 방지할 수 있습니다. 0이 아닌 값은 자동화된 테스트에 유용합니다.

scftorture.stat_interval = [KNL]

이 매개변수를 사용하여 현재 테스트 통계를 콘솔로 출력하는 시간(초)을 지정할 수 있습니다.

값이 0이면 통계 출력을 비활성화합니다.

scftorture.stutter_cpus = [KNL]
이 매개변수를 사용하면 테스트 중인 CPU 세트로 변경될 때마다 대기할 jiffies 수를 지정할 수 있습니다.
scftorture.use_cpus_read_lock = [KNL]
이 매개변수를 사용하면 기본 preempt _disable() 시스템 호출 대신 use_cpus_read_lock() 시스템 호출을 사용하여 smp_call_function*() 함수 중 하나를 호출하는 동안 CPU 핫플러그를 비활성화할 수 있습니다.
scftorture.verbose = [KNL]
이 매개변수를 사용하여 추가 printk() 문을 활성화할 수 있습니다.
scftorture.weight_single = [KNL]

이 매개 변수는 0 "wait" 매개변수가 있는 smp_call_function_single() 함수에 사용할 가능성 가중치를 지정합니다.

-1의 값은 다른 모든 가중치가 -1인 경우 기본값을 선택합니다. 그러나 하나 이상의 가중치에 다른 값이 있는 경우 값 -1 대신 가중치 0을 선택합니다.

scftorture.weight_single_wait = [KNL]
이 매개 변수는 0이 아닌 "wait" 매개변수와 함께 smp_call_function_single() 함수에 사용할 가능성 가중치를 지정합니다. 자세한 내용은 weight_single 을 참조하십시오.
scftorture.weight_many = [KNL]

이 매개 변수는 0 "wait" 매개 변수와 함께 smp_call_function_many() 함수에 사용할 가능성 가중치를 지정합니다.

이 가중치에 대한 높은 가능성을 설정하면 심각한 IPI(Inter-processor Interrupt) 로드가 시스템에 배치될 수 있습니다.

자세한 내용은 weight_single 을 참조하십시오.

scftorture.weight_many_wait = [KNL]

이 매개 변수는 0이 아닌 "wait" 매개변수와 함께 smp_call_function_many() 함수에 사용할 가능성 가중치를 지정합니다.

자세한 내용은 weight_single 및 weight_ many 를 참조하십시오.

scftorture.weight_all = [KNL]

이 매개 변수는 0 "wait" 매개 변수와 함께 smp_call_function_all() 함수에 사용할 가능성 가중치를 지정합니다.

자세한 내용은 weight_single 및 weight_ many 를 참조하십시오.

scftorture.weight_all_wait = [KNL]

이 매개 변수는 0이 아닌 "wait" 매개변수와 함께 smp_call_function_all() 함수에 사용할 가능성 가중치를 지정합니다.

자세한 내용은 weight_single 및 weight_ many 를 참조하십시오.

torture.disable_onoff_at_boot = [KNL]
이 매개변수를 사용하면 init 작업이 생성될 때까지 CPU-hotplug 구성 요소가 차단되지 않을 수 있습니다.
torture.ftrace_dump_at_shutdown = [KNL]

이 매개변수를 사용하면 오류가 없는 경우에도 ftrace 버퍼를 torture-test 종료에 덤프할 수 있습니다.

이 작업은 특히 회전 스토리지가 있는 시스템에서 많은 torture 테스트를 동시에 실행하는 경우 매우 비용이 많이 드는 작업일 수 있습니다.

업데이트된 커널 매개변수

iommu.forcedac = [ARM64, X86]

이 매개변수를 사용하면 PCI 장치에 대한 입력 출력 가상 주소(IOVA) 할당을 제어할 수 있습니다.

형식: { 0 | 1 }

  • 0 - 필요한 경우 전체 범위로 대체하기 전에 32비트 DMA(직접 메모리 액세스) 주소를 먼저 할당해 보십시오.
  • 1 - 사용 가능한 전체 범위에서 직접 할당. 옵션은 32비트 주소 지정보다 큰 기능을 지원하는 PCI 카드의 듀얼 주소 사이클을 강제 적용하는 것입니다.
page_poison = [KNL]

이 부팅 시간 매개 변수를 사용하여 CONFIG_PAGE_POISONING=y 구성에서 사용할 수 있는 버디 할당기에서 손상 상태를 변경할 수 있습니다.

  • off: 침입 해제 (기본값)
  • 켜기: 침입을 켭니다
rcuscale.gp_async = [KNL]
이 매개변수를 사용하면 call_rcu() 와 같은 비동기 유예 상시 기본 개념의 성능을 측정할 수 있습니다.
rcuscale.gp_async_max = [KNL]
이 매개변수를 사용하여 작성자 스레드당 최대 콜백 수를 지정할 수 있습니다. 작성자 스레드가 이 제한을 초과하면 이전에 게시된 콜백이 드레이닝될 수 있도록 rcu_barrier() 의 해당 플레이버를 호출합니다.
rcuscale.gp_exp = [KNL]
이 매개변수를 사용하면 신속한 동기 유예-초기 우선순위의 성능을 측정할 수 있습니다.
rcuscale.holdoff = [KNL]
이 매개변수를 사용하면 테스트 시작 유지 기간을 설정할 수 있습니다. 이 매개 변수의 목적은 간섭을 방지하기 위해 부팅이 완료될 때까지 테스트 시작을 지연시키는 것입니다.
rcuscale.kfree_rcu_test = [KNL]
이 매개변수를 사용하여 kfree_rcu() 플러딩의 성능을 측정할 수 있습니다.
rcuscale.kfree_nthreads = [KNL]
이 매개변수를 사용하여 kfree_rcu() 함수의 반복문을 실행하는 스레드 수를 지정할 수 있습니다.
rcuscale.kfree_alloc_num = [KNL]
이 매개변수를 사용하여 반복에서 수행되는 할당 수와 자유 수를 지정할 수 있습니다.
rcuscale.kfree_loops = [KNL]
이 매개변수를 사용하여 rcuscale.kfree_alloc_num 할당 및 frees를 수행하는 반복문 수를 지정할 수 있습니다.
rcuscale.nreaders = [KNL]

이 매개변수를 사용하여 RCU(Read-copy-update) 리더 수를 설정할 수 있습니다.

값 -1은 N을 선택합니다. 여기서 N은 CPU 수입니다.

rcuscale.nwriters = [KNL]

이 매개변수를 사용하여 RCU(Read-copy-update) 작성자 수를 설정할 수 있습니다.

값은 rcuscale.nreaders=N 과 동일하게 작동합니다. 여기서 N은 CPU 수입니다.

rcuscale.perf_type = [KNL]
이 매개변수를 사용하여 테스트할 RCU(Read-copy-update) 구현을 지정할 수 있습니다.
rcuscale.shutdown = [KNL]
이 매개변수를 사용하면 성능 테스트가 완료된 후 시스템을 종료할 수 있습니다. 이 기능은 실습 자동화된 테스트에 유용합니다.
rcuscale.verbose = [KNL]
이 매개변수를 사용하여 추가 printk() 문을 활성화할 수 있습니다.
rcuscale.writer_holdoff = [KNL]

이 매개변수를 사용하면 마이크로초 단위 유예 기간 간에 나란히 유지될 수 있습니다.

기본값은 0이며 "페어오프 없음"을 의미합니다.

security = [SECURITY]

이 매개변수를 사용하면 부팅 시 활성화할 레거시 "주" 보안 모듈을 선택할 수 있습니다.

이는 lsm 매개 변수에서 더 이상 사용되지 않습니다.

split_lock_detect = [X86]

이 매개변수를 사용하면 분할 잠금 탐지 또는 버스 잠금 탐지를 활성화할 수 있습니다.

활성화되고 하드웨어 지원이 있는 경우 캐시 라인 경계에서 데이터에 액세스하는 원자성 지침으로 인해 다음과 같은 결과가 발생합니다.

  • 분할 잠금 감지를 위한 정렬 검사 예외
  • 버스 잠금 탐지를 위한 디버그 예외

    가능한 값은 다음과 같습니다.

  • off - 기능이 활성화되어 있지 않습니다
  • warn - 커널이 애플리케이션에 대한 속도가 제한된 경고를 내보내고 #AC 예외 또는 #DB 예외를 트리거합니다. 이 모드는 분할 잠금 탐지 또는 버스 잠금 탐지를 지원하는 CPU의 기본값입니다. 두 기능이 모두 하드웨어에서 활성화된 경우 기본 동작은 #AC입니다.
  • fatal - 커널은 #AC 예외 또는 #DB 예외를 트리거하는 애플리케이션에 SIGBUS 신호를 전송합니다. 두 기능이 모두 하드웨어에서 활성화된 경우 기본 동작은 #AC입니다.
  • ratelimit: N - 버스 잠금 감지를 위해 시스템 전체 속도 제한을 초당 N 버스 잠금으로 설정합니다(0 < N ^ 1000). 분할 잠금 감지를 위한 N/A.

    커널 또는 펌웨어에서 #AC 예외가 발생하거나(예: 사용자 모드에서 실행하지 않는 경우) 커널은 경고 또는 치명 모드에 생략 됩니다.

    #CPL > 0인 경우에만 버스 잠금에 대한 DB 예외가 트리거됩니다.

usb-storage.quirks =
k = NO_SAME (WRITE _SAME, UAS 전용 사용하지 않음)