9.3.3. リアルタイムプロファイルで NUMA ごとにハウスキーピングを調整する
リアルタイムプロファイルで、NUMA ノードごとに設定されたハウスキーピング CPU を調整できます。これにより、ハウスキーピングタスクが NUMA ノード全体に均等に分散され、システムのパフォーマンスが最適化されます。
これは、競合を減らし、全体的なパフォーマンスを向上させるのに役立つため、複数の NUMA ノードを持つシステムに特に役立ちます。
デフォルトのリアルタイム tuned プロファイルは、NUMA ノードごとに 1 つのハウスキーピング CPU を予約します (hk_per_numa=1)。コンテナーのワークロードに使用できる CPU をさらに増やす必要がある場合は、この動作を変更できます。
前提条件
- ホストマシンは Red Hat Enterprise Linux バージョン 9.6 以降で実行されている。
-
tunedサービスを実行している。 -
rtevalコンテナーがインストールされ、実行されている。 -
podmanサービスが実行されている。 -
tuned-profiles-realtimeパッケージがインストールされている。
手順
realtime-variables.confファイルを変更して、NUMA ノードごとに設定されたハウスキーピング CPU を調整します。/etc/tunedにあるrealtime-variables.confファイルをテキストエディターで開きます。$ sudo vi /etc/tuned/realtime-variables.confisolated_cores変数を見つけます。これは、デフォルトで1に設定され、NUMA ノードごとに 1 つのコアが、分離またはハウスキーピング以外の用途のために予約されることを意味します。この値を増やすことはできますが、NUMA ノードごとの CPU の合計数より小さくする必要があります。次の例では、NUMA ノードごとに 24 個のコアを持つシステムで、
isolated_coresを3に設定します。isolated_cores=${f:calc_isolated_cores:3}
- 変更を保存してファイルを閉じます。
tunedリアルタイムプロファイルを再適用します。$ sudo tuned-adm profile realtimeその結果、テスト中に合計 6 個の CPU (NUMA ノードごとに 3 個) が負荷を生成し、残りのコアはシステムが
isolcpusセット用に予約します。この設定は測定に使用されます。場合によっては、混合優先順位設定により、isolcpusセットではなく、カスタムトポロジーでコンテナーがデプロイされることがあります。または、ノードごとの自動カウントに頼るのではなく、カスタム CPU 範囲を手動で指定することもできます。これにより、分離されたコアを完全に制御できるようになり、不均一なトポロジーや特殊な CPU レイアウトを持つシステムの微調整が容易になります。
検証
-
realtime-variables.confファイルの変更を確認します。 - システムを再起動して変更を適用します。
/proc/cmdlineファイルを表示して、isolcpusの設定を確認します。$ cat /proc/cmdline BOOT_IMAGE=(hd0,gpt2)/vmlinuz-5.XX.X-XX.X.X.el9_6.x86_64+rt root=/dev/mapper/rhel_rt--qe--11-root ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUID=00cbf36d-ffaa-4285-a381-5c1d868eb3e3 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,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