第20章 tuned-profiles-real-time を使用した CPU の分離
アプリケーションスレッドの実行時間を最大化するために、CPU を分離できます。そのため、無関係なタスクを可能な限り多く CPU から削除します。通常、CPU の分離には、以下の操作が必要です。
- ユーザー空間のスレッドをすべて削除する。
- バインドされていないカーネルスレッドを削除します。カーネル関連のバインドされたスレッドは特定の CPU にリンクされており、移動できません)。
-
システム内の各 Interrupt Request (IRQ) 番号が
N
の/proc/irq/N/smp_affinity
プロパティーを変更して割り込みを削除する。
package`tuned-profiles-realtime` パッケージの isolated_cores=cpulist
設定オプションを使用することで、CPU を分離する操作を自動化できます。
前提条件
- 管理者権限がある。
20.1. 分離する CPU の選択
分離する CPU を選択する際は、システムの CPU トポロジーを慎重に考慮する必要があります。ユースケースごとに異なる設定が必要です。
- スレッドがキャッシュを共有することによって相互に通信する必要があるマルチスレッドアプリケーションがある場合は、それらを同じ NUMA ノードまたは物理ソケットに保持する必要があります。
- 複数の無関係なリアルタイムアプリケーションを実行する場合は、CPU を NUMA ノードまたはソケットで分離することが適切な場合があります。
hwloc
パッケージは、lstopo-no-graphics
および numactl
などの CPU に関する情報を取得する際に便利なユーティリティーを提供します。
前提条件
-
hwloc
パッケージがインストールされます。
手順
物理パッケージで利用可能な CPU のレイアウトを表示します。
# lstopo-no-graphics --no-io --no-legend --of txt
図20.1 lstopo-no-graphics を使用した CPU のレイアウトの表示
このコマンドは、使用可能なコア数とソケット数、および NUMA ノードの論理距離を示すため、マルチスレッドアプリケーションに役立ちます。
また、
hwloc-gui
パッケージには、グラフィカル出力を生成するlstopo
ユーティリティーが含まれます。ノード間の距離など、CPU の詳細を表示します。
# 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(7)
の man ページ