29.3. カーネルティック時間の設定
デフォルトでは、Red Hat Enterprise Linux 9 はティックレスカーネルを使用します。これは、電力使用量を低減し、新しいプロセッサーがディープスリープ状態を利用できるようにするために、アイドル状態の CPU を中断しません。
Red Hat Enterprise Linux 9 には動的ティックレスオプションもあります。これは、高パフォーマンスコンピューティングやリアルタイムのコンピューティングなどのレイテンシーに制約のあるワークロードに役立ちます。デフォルトでは、動的ティックレスオプションは無効になっています。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
関連情報
-
perf(1)
およびcpuset(7)
の man ページ - All about nohz_full kernel parameter in RHEL 7 (Red Hat ナレッジベースの記事)
- How to verify list of "isolated" and "nohz_full" CPU information from sysfs?Red Hat ナレッジベースの記事