23.4. カーネルティック時間の設定
デフォルトでは、Red Hat Enterprise Linux はティックレスカーネルを使用します。ティックレスカーネルはアイドル状態の CPU に割り込みを行わないため、電力使用量が削減され、新しいプロセッサーがディープスリープ状態を利用できるようになります。Red Hat Enterprise Linux には動的ティックレスオプションもあります。これは、ハイパフォーマンスコンピューティングやリアルタイムコンピューティングなど、レイテンシーの影響を受けやすいワークロードに役立ちます。デフォルトでは、動的ティックレスオプションは無効になっています。TuneD プロファイルの cpu-partitioning を使用すると、isolated_cores
として指定されたコアに対して動的ティックレスオプションを有効にできます。
手順
特定のコアで動的なティックレス動作を有効にするには、
nohz_full
パラメーターを使用して、カーネルコマンドラインでこれらのコアを指定します。たとえば、16 コアのシステムでは、nohz_full=1-15
カーネルオプションを有効にします。grubby --update-kernel=ALL --args="nohz_full=1-15"
# grubby --update-kernel=ALL --args="nohz_full=1-15"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow これにより、コア 1 から 15 までの動的なティックレス動作が有効になり、すべての時間管理が未指定のコアのみに移動します (コア 0)。
システムが起動したら、
rcu
スレッドをレイテンシーを区別しないコア (この場合は core 0) に手動で移動します。for i in pgrep rcu[^c] ; do taskset -pc 0 $i ; done
# for i in pgrep rcu[^c] ; do taskset -pc 0 $i ; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
オプション: カーネルコマンドラインで
isolcpus
パラメーターを使用して、特定のコアをユーザー空間タスクから分離します。 オプション: カーネルのライトバック
bdi-flush
スレッドの CPU アフィニティーをハウスキーピングコアに設定します。echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
echo 1 > /sys/bus/workqueue/devices/writeback/cpumask
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
システムを再起動したら、
dynticks
が有効になっていることを確認します。journalctl -xe | grep dynticks
# journalctl -xe | grep dynticks Mar 15 18:34:54 rhel-server kernel: NO_HZ: Full dynticks CPUs: 1-15.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 動的ティックレス設定が正しく機能していることを確認します。
perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
# perf stat -C 1 -e irq_vectors:local_timer_entry taskset -c 1 sleep 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、CPU 1 に 3 秒間スリープするように指示しながら、CPU 1 のティックを測定します。デフォルトのカーネルタイマーの設定では、通常の CPU で 3100 ティックが表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 動的ティックレスカーネルを設定すると、代わりに 4 ティックが表示されるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow