検索

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

download PDF
アプリケーションスレッドに可能な限り長い実行時間を割り当てるには、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 コマンドを使用します。
    lstopo-no-graphics を使用した CPU のレイアウトの表示

    図3.1 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 で boot パラメーターを指定することです。RedHat EnterpriseLinux for Real Time に推奨される方法は、tuned デーモンとその tuned-profiles-realtime パッケージを使用することです。
isolcpus ブートパラメーターを指定するには、以下の手順に従います。
  1. tuned パッケージと tuned-profiles-realtime パッケージをインストールします。
    ~]# yum install tuned tuned-profiles-realtime
  2. ファイル /etc/tuned/realtime-variables.conf で、isolated_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-3 と NUMA ノード 1 のコア 4-8 があり、マルチスレッドアプリケーション用に 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 プロファイルをアクティベートしてから再起動します。
    ~]# 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=cpulist
この nohz_full パラメーターは、タイマーティックに関して CPU の一覧を異なる方法で処理するために使用されます。CPU が nohz_full CPU として一覧表示され、CPU に実行可能なタスクが 1 つしかない場合、カーネルはその CPU へのタイマーティックの送信を停止するため、アプリケーションの実行に費やす時間が少なくなり、割り込みとコンテキストの切り替えに費やされた時間が短縮されます。
これらのパラメーターの詳細は、Configuring kernel tick time を参照してください。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

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

会社概要

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

© 2024 Red Hat, Inc.