Red Hat Training

A Red Hat training course is available for RHEL 8

31.3. カーネルティック時間の設定

デフォルトでは、Red Hat Enterprise Linux 8 はティックレスカーネルを使用します。これは、電力使用量を低減し、新しいプロセッサーがディープスリープ状態を利用できるようにするためにアイドル状態の CPU を中断しません。

Red Hat Enterprise Linux 8 には動的ティックレスオプションもあります。これは、高パフォーマンスコンピューティングやリアルタイムのコンピューティングなどのレイテンシーに制約のあるワークロードに役立ちます。デフォルトでは、動的ティックレスオプションは無効になっています。Red Hat は、cpu-partitioning TuneD プロファイルを使用して、isolated_cores で指定されたコアの動的な tickless オプションを有効にすることを推奨します。

この手順では、動的なティックレス動作を永続的に有効にする方法を説明します。

手順

  1. 特定のコアで動的なティックレス動作を有効にするには、nohz_full パラメーターを使用して、カーネルコマンドラインでこれらのコアを指定します。16 コアシステムでは、nohz_full=1-15 カーネルオプションを有効にします。

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

    これにより、コア 1 から 15 までの動的なティックレス動作が有効になり、すべての時間管理が未指定のコアのみに移動します (コア 0)。

  2. システムが起動したら、rcu スレッドをレイテンシーを区別しないコア (この場合は core 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 に 3 秒間スリープするように指示しながら、CPU 1 のティックを測定します。

  • デフォルトのカーネルタイマーの設定では、通常の 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