3.13. Tuned-profiles-realtime を使用した CPU の分離


アプリケーションスレッドに可能な限り長い実行時間を割り当てるには、CPU を分離します。つまり、CPU からできるだけ多くの余分なタスクを削除することになります。通常、CPU の分離には、以下が関係します。
  • ユーザー空間スレッドをすべて削除
  • バインドされていないカーネルスレッドの削除 (バインドされたカーネルスレッドは特定の CPU に関連付けられ、移動できない)
  • システム内の各割り込み要求 (IRQ) 番号 N/proc/irq/N/smp_affinity プロパティーを変更して割り込みを削除します。
このセクションでは 、tuned-profiles-realtime パッケージの isolated_cores= cpulist 設定オプションを使用してこれらの操作を自動化する方法を示します。

分離する CPU の選択

分離する CPU を選択するには、システムの CPU トポロジーを慎重に検討する必要があります。ユースケースによっては、異なる設定が必要になる場合があります。
  • スレッドがキャッシュを共有して相互に通信する必要があるマルチスレッドアプリケーションがある場合、同じ NUMA ノードまたは物理ソケットでスレッドを保持する必要がある場合があります。
  • 関連のない複数の real-time アプリケーションを実行すると、NUMA ノードまたはソケットごとに CPU を分離することができます。
hwloc パッケージには 、lstopo-no-graphicsnumactl など、CPU に関する情報を取得するのに役立つコマンドが用意されています。
  • 物理パッケージで使用可能な CPU のレイアウトを表示するには、lstopo-no-graphics --no-io --no-legend --of txt コマンドを使用します。

    図3.1 lstopo-no-graphics を使用して CPU のレイアウトを表示する

    lstopo-no-graphics を使用して CPU のレイアウトを表示する
    上記のコマンドは、利用可能なコアとソケットの数と NUMA ノードの論理距離を表示するため、マルチスレッドアプリケーションに役立ちます。
    さらに、hwloc-gui パッケージは、グラフィカル出力を生成する lstopo コマンドを提供します。
  • ノード間の距離など、CPU に関する詳細情報を取得するには、numactl --hardware コマンドを使用します。
    ~]# numactl --hardware
    available: 2 nodes (0-1)
    node 0 cpus: 0 1 2 3
    node 0 size: 16159 MB
    node 0 free: 6323 MB
    node 1 cpus: 4 5 6 7
    node 1 size: 16384 MB
    node 1 free: 10289 MB
    node distances:
    node   0   1
      0:  10  21
      1:  21  10
hwloc パッケージが提供するユーティリティーの詳細は、hwloc(7) man ページを参照してください。

Tunedisolated_cores オプションを使用して CPU を分離する

CPU を分離するための初期メカニズムは、カーネルブートコマンドラインでブートパラメーター isolcpus= cpulist を 指定することです。Red Hat Enterprise Linux for Real Time でこれを行うための推奨方法は、tuned デーモンとその tuned-profiles-realtime パッケージを使用することです。
isolcpus ブートパラメーターを指定するには、次の手順に従います。
  1. 調整済み パッケージと 調整済みプロファイル - リアルタイム パッケージをインストールします。
    ~]# yum install tuned tuned-profiles-realtime
  2. ファイル /etc/tuned/realtime-variables.conf で、設定オプション isolation_cores= cpulist を設定します。ここで、cpulist は 分離する CPU のリストです。このリストはコンマで区切られ、CPU 番号または範囲を 1 つ含めることができます。以下に例を示します。
    isolated_cores=0-3,5,7
    上記の行では、CPU 0、1、1、2、3、5、および 7 を分離します。

    例3.3 通信スレッドでの CPU の分離

    8 個のコアを持つ 2 ソケットシステムで、NUMA ノード 0 にコア 0 - 3 があり、NUMA ノード 1 にコア 4 - 7 がある場合、マルチスレッドアプリケーションに 2 つのコアを割り当てるには、次の行を追加します。
    isolated_cores=4,5
    tuned-profiles-realtime プロファイルがアクティブになると、isolcpus=4,5 パラメーターがブートコマンドラインに追加されます。これにより、ユーザー空間スレッドが CPU 4 および 5 に割り当てられなくなります。

    例3.4 通信していないスレッドでの CPU の分離

    関係のないアプリケーションの別の NUMA ノードから CPU を選択する場合は、以下を指定できます。
    isolated_cores=0,4
    これにより、ユーザー空間スレッドが CPU 0 および 4 に割り当てられるのを防ぎます。
  3. tuned-adm ユーティリティーを使用して、調整された プロファイルをアクティブ化し、再起動します。
    ~]# tuned-adm profile realtime
    ~]# reboot
  4. 再起動後、ブートコマンドラインで isolcpus パラメーターを検索して、選択した CPU が分離されていることを確認します。
    ~]$ cat /proc/cmdline | grep isolcpus
    BOOT_IMAGE=/vmlinuz-3.10.0-394.rt56.276.el7.x86_64 root=/dev/mapper/rhel_foo-root ro crashkernel=auto rd.lvm.lv=rhel_foo/root rd.lvm.lv=rhel_foo/swap console=ttyS0,115200n81 isolcpus=0,4

nohz および nohz_full パラメーターを使用して CPU を分離する

nohz および nohz_full カーネルブートパラメーターを有効にするには、realtime-virtual-hostrealtime-virtual-guest、または cpu-partitioning の いずれかのプロファイルを使用する必要があります。
nohz=on
特定の CPU セットのタイマーアクティビティーを減らすために使用できます。nohz パラメーターは主に、アイドル状態の CPU で発生するタイマー割り込みを減らすために使用されます。これにより、アイドル状態の CPU を低電力モードで実行させることにより、バッテリーのライフサイクルが容易になります。nohz パラメーターはリアルタイム応答時間には直接役立ちませんが、リアルタイム応答時間に直接悪影響を与えることはなく、リアルタイムパフォーマンスにプラスの影響を与える次のパラメーターをアクティブ化するために必要です。
nohz_full= プロセッサー
nohz_full パラメーターは、タイマーティックに関して CPU のリストを異なる方法で処理するために使用されます。CPU が nohz_full CPU としてリスト表示され、CPU に実行可能なタスクが 1 つしかない場合、カーネルはその CPU へのタイマーティックの送信を停止するため、アプリケーションの実行に費やす時間が少なくなり、割り込みとコンテキストの切り替えに費やされた時間が短縮されます。
これらのパラメーターの詳細は、Configuring kernel tick time を参照してください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る