第1章 RHEL for Real Time のハードウェアプラットフォーム
ハードウェアはシステムの動作方法に影響を与えるため、ハードウェアを正しく設定することは、リアルタイム環境をセットアップする上で重要な役割を果たします。すべてのハードウェアプラットフォームがリアルタイム対応であり、微調整が可能であるとは限りません。微調整を実行する前に、潜在的なハードウェアプラットフォームがリアルタイム対応であることを確認する必要があります。
ハードウェアプラットフォームは、ベンダーによって異なります。ハードウェア遅延検出器 (hwlatdetect) プログラムを使用して、ハードウェアの適合性をリアルタイムでテストおよび検証できます。プログラムは、レイテンシー検出器カーネルモジュールを制御し、基盤となるハードウェアまたはファームウェアの動作によって引き起こされるレイテンシーを検出するのに役立ちます。
低レイテンシー操作に必要なすべての調整手順が完了しました。低レイテンシーの問題を軽減し、チューニングを改善するための手順は、ベンダーのドキュメントを参照してください。
前提条件
- RHEL-RT パッケージがインストールされている。
低レイテンシー操作に必要なすべての調整手順が完了している。システムをシステム管理モード (SMM) に遷移させるシステム管理割り込み (SMI) を低減または削除する手順は、ベンダーのドキュメントを参照してください。
警告システム管理割り込み (SMI) を完全に無効にすると、重大なハードウェア障害が発生する可能性があるため、完全に無効にすることは避けてください。
1.1. プロセッサーコア リンクのコピーリンクがクリップボードにコピーされました!
リアルタイムプロセッサーコアは、物理的な中央処理装置 (CPU) であり、マシンコードを実行します。ソケットは、プロセッサーとコンピューターのマザーボードとの間の接続です。ソケットは、プロセッサーが配置されるマザーボードの場所です。プロセッサーには次の 2 つのセットがあります。
- 1 つのソケットを占有し、1 つのコアが利用可能なシングルコアプロセッサー。
- 1 つのソケットを占有し、4 つの使用可能なコアを備えたクアッドコアプロセッサー。
リアルタイム環境を設計するときは、使用可能なコアの数、コア間のキャッシュレイアウト、およびコアが物理的に接続されている方法に注意してください。
複数のコアが利用可能な場合は、スレッドまたはプロセスを使用します。これらの構造を使用せずに作成されたプログラムは、一度に 1 つのプロセッサーで実行されます。マルチコアプラットフォームは、さまざまなタイプの操作にさまざまなコアを使用することで利点を提供します。
キャッシュ
キャッシュは、全体的な処理時間と決定論に顕著な影響を及ぼします。多くの場合、アプリケーションのスレッドは、データ構造などの共有リソースへのアクセスを同期する必要があります。
tuna コマンドラインツール (CLI) を使用すると、キャッシュレイアウトを決定し、相互作用するスレッドをコアにバインドして、キャッシュを共有することができます。キャッシュ共有は、相互除外プリミティブ (mutex、条件変数、または同様の) とデータ構造が同じキャッシュを使用するようにすることで、メモリー障害を軽減します。
相互接続
システムのコア数を増やすと、相互接続に対する要求が競合する可能性があります。これにより、リアルタイムシステムのコア間で発生する競合を検出するのに役立つ相互接続トポロジーを決定する必要があります。
多くのハードウェアベンダーは、非汎用メモリーアクセス (NUMA) アーキテクチャーとして知られるコアとメモリー間の相互接続の透過的なネットワークを提供するようになりました。
NUMA は、マルチプロセッシングで使用されるシステムメモリー設計であり、メモリーアクセス時間はプロセッサーに対するメモリーの場所によって異なります。NUMA を使用すると、プロセッサーは、別のプロセッサー上のメモリーやプロセッサー間で共有されているメモリーなど、非ローカルメモリーよりも高速に自身のローカルメモリーにアクセスできます。NUMA システムでは、相互接続トポロジーを理解すると、隣接するコアで頻繁に通信するスレッドを配置するのに役立ちます。
taskset ユーティリティーおよび numactl ユーティリティーは、CPU トポロジーを決定します。taskset は、メモリーノードなどの NUMA リソースなしで CPU アフィニティーを定義し、numactl はプロセスと共有メモリーの NUMA ポリシーを制御します。