31.3. 커널 틱 시간 설정
기본적으로 Red Hat Enterprise Linux 8은 전원 사용량을 줄이고 새 프로세서가 절전 상태를 활용할 수 있도록 유휴 CPU를 중단하지 않는 틱리스 커널을 사용합니다.
또한 Red Hat Enterprise Linux 8은 고성능 컴퓨팅 또는 실시간 컴퓨팅과 같은 대기 시간에 민감한 워크로드에 유용한 동적 틱리스 옵션을 제공합니다. 기본적으로 동적 틱리스 옵션은 비활성화되어 있습니다. Red Hat은 cpu-partitioning
TuneD 프로필을 사용하여 isolated_cores
로 지정된 코어의 동적 틱리스 옵션을 활성화하는 것이 좋습니다.
이 절차에서는 동적 틱리스 동작을 수동으로 영구적으로 활성화하는 방법을 설명합니다.
절차
특정 코어에서 동적 틱리스 동작을 사용하려면
nohz_full
매개 변수를 사용하여 커널 명령줄에서 해당 코어를 지정합니다. 16개의 코어 시스템에서nohz_full=1-15
커널 옵션을 활성화합니다.# grubby --update-kernel=ALL --args="nohz_full=1-15"
이를 통해
1
~15코어에 대해 동적 틱리스 동작을 수행할 수 있어 모든 시간이 지정되지 않은 유일한 코어(코어0
)로이동합니다
.시스템이 부팅되면
rcu
스레드를 대기 시간이 중요하지 않은 코어로 직접 이동합니다.이 경우 코어0
:# for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done
-
선택 사항: 커널 명령줄에서
isolcpus
매개 변수를 사용하여 특정 코어를 사용자 공간 작업에서 격리합니다. 선택 사항: 커널의
나중 bdi-flush
스레드의 CPU 선호도를 하우스키핑 코어로 설정합니다.echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
검증
시스템이 재부팅되면 if
dynticks
가 활성화되었는지 확인합니다.# journalctl -xe | grep dynticks Mar 15 18:34:54 rhel-server kernel: NO_HZ: Full dynticks CPUs: 1-15.
동적 틱리스 구성이 올바르게 작동하는지 확인합니다.
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
이 명령은 CPU 1에서 틱을 측정하고 CPU 1은 3초 동안 절전하도록 지시합니다.
기본 커널 타이머 구성은 일반 CPU에서 약 3100개의 틱을 보여줍니다.
# perf stat -C 0 -e irq_vectors:local_timer_entry taskset -c 0 sleep 3 Performance counter stats for 'CPU(s) 0': 3,107 irq_vectors:local_timer_entry 3.001342790 seconds time elapsed
동적 틱리스 커널을 구성하면 대신 약 4개의 눈금이 표시됩니다.
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3 Performance counter stats for 'CPU(s) 1': 4 irq_vectors:local_timer_entry 3.001544078 seconds time elapsed
추가 리소스