5장. 외부 커널 매개변수로 중요한 변경
이 장에서는 시스템 관리자에게 Red Hat Enterprise Linux 8.5에 포함된 커널의 중요한 변경 사항을 요약해서 설명합니다. 이러한 변경에는 추가 또는 업데이트된 proc
항목, sysctl
및 sysfs
기본값, 부팅 매개 변수, 커널 구성 옵션 또는 눈에 띄게 동작 변경이 포함될 수 있습니다.
새 커널 매개변수
- 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
-time delay를 지정할 수 있습니다._RCU_STRICT_GRACE_PERIOD=y로 설정된 커널에서 rcu_read_
unlock()기본값은 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_cpu
및stall_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- sched_energy_aware
이 매개변수는 energy Aware Scheduling (EAS)를 활성화하거나 비활성화합니다.
EAS는 energy model을 사용할 수 있는 CloudEvent CPU 토폴로지가 있는 플랫폼에서 자동으로 시작됩니다.
플랫폼이 EAS의 요구 사항을 충족하지만 EAS를 사용하지 않으려면 이 값을 0으로 변경하십시오.
- 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 전용 사용하지 않음)