第9章 リアルタイムタスク実行のための rteval コンテナーの使用
Red Hat Enterprise Linux (RHEL) for Real Time の rteval (リアルタイム評価) コンテナーは、重要なタスクの低レイテンシーを確実に実行します。さまざまなシステム負荷下でのタイマーのウェイクアップ時間を測定して、リアルタイムの応答性を維持し、タスクをタイムリーに確実に実行します。
rteval ツールは、測定プロセス (cyclictest や rtla などのツールを使用) を優先度の高いタスクとして設定します。この測定プロセスは、マシン上で生成される負荷よりも優先度が高くなります。その結果、rteval コンテナーはさまざまな負荷下でのリアルタイムタスクのウェイクアップ時間を測定し、システムがリアルタイムワークロードを効果的に処理できるようにします。
9.1. rteval コンテナーのホストのテスト リンクのコピーリンクがクリップボードにコピーされました!
コンテナーテクノロジーでは仮想化スタックに追加のカーネルが必要ないため、レイテンシーの影響を受けやすいワークロードで rteval コンテナーを実行するには、ホストマシンをチューニングする必要があります。ベアメタルに適用可能なチューニングストラテジーのほとんどは、コンテナー環境にも適用できます。
realtime-variables.conf ファイルで定義されたデフォルトのパラメーターを使用して、tuned-adm で realtime プロファイルを適用する必要があります。
realtime プロファイルは次のタスクを実行します。
- さまざまなカーネルのコマンドラインオプションを設定します。
- Non-Uniform Memory Access (NUMA) トポロジーを検出します。
-
複数の NUMA ノードが存在する場合、各ノードの最初の CPU を除くすべての CPU を
isolcpusセットに割り当てます。
rteval コンテナーのホストマシンを設定します。
前提条件
- ホストマシンは Red Hat Enterprise Linux バージョン 9.6 以降で実行されている。
-
tunedパッケージおよびtuned-profiles-realtimeパッケージがインストールされている。 -
tunedサービスを実行している。 -
podmanアプリケーションがインストールされ、実行されている。
手順
必要なパッケージをインストールします。
$ sudo dnf install rteval kernel-rt podman -yインストールされているカーネルを表示します。
$ sudo grubby --info=ALL index=0 kernel="/boot/vmlinuz-5.XX.0-XX.X.X.el9_6.x86_64+rt" args="ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=3e14acf4-a359-4045-b8fc-990ff83743ec rd.lvm.lv=rhel_rt-qe-11/root rd.lvm.lv=rhel_rt-qe-11/swap console=ttyS0,115200n81 $tuned_params" root="/dev/mapper/rhel_rt--qe--11-root" initrd="/boot/initramfs-5.XX.0-XX.X.X.el9_6.x86_64+rt.img $tuned_initrd" title="Red Hat Enterprise Linux (5.XX.0-XX.X.X.el9_6.x86_64+rt) 9.6 (Plow)" id="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-5.XX.0-XX.X.X.el9_6.x86_64+rt" index=1 kernel="/boot/vmlinuz-5.XX.0-XX.X.X.el9_6.x86_64" args="ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=3e14acf4-a359-4045-b8fc-990ff83743ec rd.lvm.lv=rhel_rt-qe-11/root rd.lvm.lv=rhel_rt-qe-11/swap console=ttyS0,115200n81 $tuned_params" root="/dev/mapper/rhel_rt--qe--11-root" initrd="/boot/initramfs-5.XX.0-XX.X.X.el9_6.x86_64.img $tuned_initrd" title="Red Hat Enterprise Linux (5.XX.0-XX.X.X.el9_6.x86_64) 9.6 (Plow)" id="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-5.XX.0-XX.X.X.el9_6.x86_64" index=2 kernel="/boot/vmlinuz-0-rescue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" args="ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=3e14acf4-a359-4045-b8fc-990ff83743ec rd.lvm.lv=rhel_rt-qe-11/root rd.lvm.lv=rhel_rt-qe-11/swap console=ttyS0,115200n81" root="/dev/mapper/rhel_rt--qe--11-root" initrd="/boot/initramfs-0-rescue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.img" title="Red Hat Enterprise Linux (0-rescue-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX) 9.6 (Plow)" id="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-0-rescue"Real Time カーネルをデフォルトのカーネルとして設定します。
$ select a in /boot/vmlinuz-*rt*; do grubby --set-default=$a; break; donetuned-admを使用してrealtimeプロファイルを適用します。$ sudo tuned-adm profile realtimeホストマシンを再起動します。
$ sudo reboot
検証
カーネルのバージョンとチューニングパラメーターを確認します。
$ sudo uname -r 5.XX.0-XX.X.X.el9_6.x86_64+rt$ sudo cat /proc/cmdline BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.XX.0-XX.X.X.el9_6.x86_64+rt root=/dev/mapper/rhel_rt--qe--11-root ro crashkernel=2G-64G:256M,64G-:512M resume=UUID=3e14acf4-a359-4045-b8fc-990ff83743ec rd.lvm.lv=rhel_rt-qe-11/root rd.lvm.lv=rhel_rt-qe-11/swap console=ttyS0,115200n81 skew_tick=1 tsc=reliable rcupdate.rcu_normal_after_boot=1 isolcpus=managed_irq,domain,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47 intel_pstate=disable nosoftlockup