29.3. 커널 틱 시간 구성

기본적으로 Red Hat Enterprise Linux 9는 유휴 CPU를 중단하지 않는 틱리스 커널을 사용하여 전력 사용량을 줄이고 새 프로세서가 수면 상태를 활용할 수 있도록 합니다.

Red Hat Enterprise Linux 9는 또한 고성능 컴퓨팅 또는 실시간 컴퓨팅과 같은 대기 시간에 민감한 워크로드에 유용한 동적 틱리스 옵션을 제공합니다. 기본적으로 동적 틱리스 옵션은 비활성화되어 있습니다. cpu-partitioning TuneD 프로필을 사용하여 isolated_cores 로 지정된 코어의 동적 틱리스 옵션을 활성화하는 것이 좋습니다.

이 절차에서는 동적 틱리스 동작을 수동으로 활성화하는 방법을 설명합니다.

절차

  1. 특정 코어에서 동적 틱리스 동작을 활성화하려면 nohz_full 매개변수를 사용하여 커널 명령줄에 코어를 지정합니다. 16개의 코어 시스템에서 nohz_full=1-15 커널 옵션을 활성화합니다.

    # grubby --update-kernel=ALL --args="nohz_full=1-15"

    이를 통해 코어 1 에서 15 까지 동적 틱 수없는 동작을 가능하게하고 모든 시간 유지를 지정하지 않은 코어 (코어 0)로 이동합니다.

  2. 시스템이 부팅될 때 rcu 스레드를 대기 시간이 아닌 코어로 수동으로 이동합니다. 이 경우 코어 0:

    # for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done
  3. 선택 사항: 커널 명령줄에서 isolcpus 매개변수를 사용하여 특정 코어를 사용자 공간 작업으로부터 분리합니다.
  4. 선택 사항: 커널의 write-back bdi-flush 스레드의 CPU 선호도를 하우스키핑 코어로 설정합니다.

    echo 1 > /sys/bus/workqueue/devices/writeback/cpumask

검증 단계

  • 시스템이 재부팅되면 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의 틱을 측정합니다.

  • 기본 커널 타이머 설정은 일반 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