1.8. RHEL for Real Time のコンテナー調整
主要な RHEL カーネルでは、リアルタイムグループスケジューリング機能 CONFIG_RT_GROUP_SCHED
がデフォルトで有効になっています。ただし、リアルタイムカーネルの場合、この機能は無効になります。
CONFIG_RT_GROUP_SCHED
機能は、kernel-rt
パッケージで使用される PREEMPT_RT
パッチセットとは独立して開発され、メインの RHEL カーネル上のリアルタイムプロセスで動作することを目的としています。CONFIG_RT_GROUP_SCHED
機能は、レイテンシーのスパイクを引き起こすことが知られているため、PREEMPT_RT
が有効なカーネルでは無効化されています。したがって、メインの RHEL カーネルで実行しているコンテナーでワークロードをテストする場合は、コンテナー内で SCHED_FIFO
または SCHED_RR
タスクを実行できるように、一部のリアルタイム帯域幅をコンテナーに割り当てる必要があります。
手順
podman の
--cpu-rt-runtime
コマンドラインオプションを使用する前に、以下のグローバル設定を行います。# echo 950000 > /sys/fs/cgroup/cpu,cpuacct/machine.slice/cpu.rt_runtime_us
- CPU 分離の場合は、既存の推奨事項に従って RT ワークロード用にコアセットを確保してください。
-
分離した CPU コアのリストを使用して
podman run --cpuset-cpus
を実行します。 使用する NUMA (Non-Uniform Memory Access) メモリーノードを指定します。
*podman run --cpuset-mems=number-of-memory-nodes
これにより、NUMA ノード間のメモリーアクセスが回避されます。
-
コンテナーで実行されているリアルタイムのワークロードに必要な最小量のメモリーがコンテナーの開始時に使用可能であることを確認するには、
*podman run --memory-reservation=limit
コマンドを使用します。
関連情報
-
podman-run(1)
の man ページ