31.3. カーネルティック時間の設定
デフォルトでは、Red Hat Enterprise Linux 8 はティックレスカーネルを使用します。これは、電力使用量を低減し、新しいプロセッサーがディープスリープ状態を利用できるようにするためにアイドル状態の CPU を中断しません。
Red Hat Enterprise Linux 8 には動的ティックレスオプションもあります。これは、高パフォーマンスコンピューティングやリアルタイムのコンピューティングなどのレイテンシーに制約のあるワークロードに役立ちます。デフォルトでは、動的ティックレスオプションは無効になっています。Red Hat は、cpu-partitioning TuneD プロファイルを使用して、isolated_cores で指定されたコアの動的な tickless オプションを有効にすることを推奨します。
この手順では、動的なティックレス動作を永続的に有効にする方法を説明します。
手順
特定のコアで動的なティックレス動作を有効にするには、
nohz_fullパラメーターを使用して、カーネルコマンドラインでこれらのコアを指定します。16 コアシステムでは、nohz_full=1-15カーネルオプションを有効にします。# grubby --update-kernel=ALL --args="nohz_full=1-15"これにより、コア
1から15までの動的なティックレス動作が有効になり、すべての時間管理が未指定のコアのみに移動します (コア0)。システムが起動したら、
rcuスレッドをレイテンシーを区別しないコア (この場合は core0) に手動で移動します。# for i in `pgrep rcu[^c]` ; do taskset -pc 0 $i ; done-
オプション: カーネルコマンドラインで
isolcpusパラメーターを使用して、特定のコアをユーザー空間タスクから分離します。 オプション: カーネルの
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