17.2. RHEL for Real Time カーネルに対する注目すべき変更点
ARM、AMD、および Intel 64 ビットアーキテクチャーで動的プリエンプティブスケジューリングが有効になりました
Dynamic Scheduling を使用すると、コンパイル時ではなく、起動時または実行時にカーネルのプリエンプションモードを変更できます。動的プリエンプティブ処理を使用すると、デフォルトのプリエンプションモデルをオーバーライドして、スケジューリングレイテンシーを改善できます。
/sys/kernel/debug/sched/preempt ファイルには、実行時の変更をサポートする現在の設定が含まれています。DYNAMIC_PREEMPT オプションを使用して、起動時に preempt= 変数を none、voluntary または full のいずれかに設定します。デフォルトは voluntary プリエンプションです。
tuna ツールに新しいコマンドラインインターフェイスが追加される
tuna ツールに、より標準化されたコマンドとオプションのメニューを備えたコマンドラインインターフェイスが搭載され、使用と保守が容易になりました。新しいコマンドラインインターフェイスは、argparse 解析モジュールをベースとしています。この機能強化により、次のタスクを実行できるようになります。
- アプリケーションおよびカーネルスレッドの属性を変更します。
- 名前または番号によって割り込み要求 (IRQ) を操作します。
- プロセス識別子を使用してタスクまたはスレッドを操作します。
- CPU またはソケット番号を使用して、CPU と CPU セットを指定します。
tuna -h コマンドを使用すると、コマンドライン引数とそれに対応するオプションを出力できます。各コマンドにはオプションの引数があり、tuna [command] -h コマンドで表示できます。
リアルタイムカーネルで使用できるランタイム検証メカニズム
ランタイム検証は、システムイベントとその正式な仕様における動作等価性をチェックするための軽量かつ厳密な方法です。ランタイム検証では、tracepoints に接続するカーネルに統合されたモニターを使用します。状態が定義された仕様から逸脱した場合、ランタイム検証プログラムはリアクターをアクティブにして、ログファイルにイベントをキャプチャーしたり、極端なケースで障害伝播を回避するためにシステムをシャットダウンしたりするなどの対応を、通知または可能にします。
詳細は、低レイテンシー操作のための RHEL 9 for Real Time の最適化 を参照してください。
RHEL 9 では CONFIG_RT_GROUP_SCHED が無効になっています
RHEL 8 では、cgroups v1 がデフォルトのコントロールグループであり、/sys/fs/cgroup/cpu,cpuacct/cpu.rt_period_us や /sys/fs/cgroup/cpu,cpuacct/cpu.rt_runtime_us などのコントロールファイルを使用して、cgroup ごとにリアルタイムタスクの CPU 帯域幅を指定できました。しかし、RHEL 9 では、cgroups v2 がデフォルトのコントロールグループであり、cgroups v2 CPU コントローラーに同等の制御ファイルが存在しないため、CONFIG_RT_GROUP_SCHED カーネル設定オプションが無効になっています。/proc/sys/kernel/sched_rt_runtime_us および /proc/sys/kernel/sched_rt_period_us グローバル設定は、引き続き使用可能であり、CPU 時間の枯渇を防ぐために stalld バックグラウンドプロセスで使用できます。