Red Hat Training

A Red Hat training course is available for RHEL 8

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

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

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

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

手順

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

    nohz_full=1-15

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

  2. 動的なティックレス動作を永続的に有効にするには、編集したデフォルトファイルを使用して GRUB2 設定を再生成します。BIOS ファームウェアがあるシステムで、次のコマンドを実行します。

    # grub2-mkconfig -o /etc/grub2.cfg

    UEFI ファームウェアがあるシステムで、次のコマンドを実行します。

    # grub2-mkconfig -o /etc/grub2-efi.cfg
  3. システムが起動したら、rcu スレッドをレイテンシーを区別しないコア (この場合は core 0) に手動で移動します。

    # for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done
  4. オプション: カーネルコマンドラインで isolcpus パラメーターを使用して、特定のコアをユーザー空間タスクから分離します。
  5. オプション: カーネルの ライトバック 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

関連情報