A.36. リアルタイム
テストの対象
realtime テストは、Red Hat Enterprise Linux for Real Time を実行しているシステムのテストを対象としており、システム管理モードに基づく実行遅延を見つけるテストと、タイマーイベントのサービスの待ち時間を調べるテストの 2 セットがあります。
さらに、RHEL 8 および RHEL 9 の場合、このテストでは、すべてのコアを完全に利用するのではなく、ハウスキーピング用に予約されているコアがあることを確認します。
テストは、Red Hat カーネルを実行しているシステムでのみ計画されています。
テストの内容
テストの最初の部分は、hwlat_detector.ko という名前の特別なカーネルモジュールを読み込みます。このモジュールは、Timestamp Counter Register (TSC) をポーリングするカーネルスレッドを作成し、指定された閾値を超える連続した読み取りの間隔を探します。TSC の連続した読み取りにギャップがあるということは、読み取りの間にシステムが中断され、他のコード (通常はシステム BIOS で定義されたシステム管理モード (SMM) コード) が実行されたことを意味します。
テストの 2 番目の部分は、cpu ごとの測定スレッドを開始する cyclictest という名前のプログラムを起動し、高いリアルタイム優先度で実行します。これらのスレッドには周期 (100 マイクロ秒) があり、以下のような計算を行います。
- get a timestamp(t1)
- sleep for period
- get a second timestamp(t2)
- latency = t2 -(t1 + period)
- goto 1
レイテンシーは、理論上のウェイクアップタイム (t1+period) と実際のウェイクアップタイム (t2) の時間差です。各測定スレッドは、最小、最大、および平均の待機時間を追跡し、各データポイントを報告します。
サイクリックテストの実行中、rteval は 1 組のシステムロードを開始します。1 つは並列 Linux カーネルコンパイルで、もう 1 つは hackbench と呼ばれるスケジューラーベンチマークです。
実行が完了すると、rteval はデータポイントの統計分析を実行し、平均、モード、メディア、差異、および標準偏差を計算します。
さらに、RHEL 8 および RHEL 9 の場合、このテストでは分離された CPU が /sys/devices/system/cpu/isolated
に設定されているかどうかがチェックされ、調整されたバージョンには、isolated_cores の初期自動セットアップのサポートが含まれています (バージョン 2.19.0 移行)。また、リアルタイム調整プロファイルがアクティブかどうかもチェックします。いずれかのチェックが失敗した場合、テストは実行を続行する前に警告を出します。
テストの準備
- システムを認定に追加する前に、realtime kernel-rt カーネルをインストールして起動します。このコマンドは、実行中のカーネルがリアルタイムであることを検出し、リアルタイムテストの実行をスケジュールします。
- 調整されたバージョンが 2.19.0 以上の RHEL 8 および RHEL 9 の場合、調整されたプロファイルをリアルタイムとして選択し、システムを再起動します。
リアルタイムのチューニングサポートが必要な場合は、お使いのシステムに Red Hat のアクセス権を設定して、BIOS の変更など、必要な変更を行えるようにする必要があります。
新しくインストールされたカーネルは、以前に設定されたカーネルからカーネルコマンドラインパラメーターを継承します。詳細は、すべてのブートエントリーのカーネルコマンドラインパラメーターの変更 を参照してください。
テストの実行
リアルタイムテストは非対話的です。次のコマンドを実行し、表示されるリストから適切な realtime
テスト名を選択します。
rhcert-run
テストは、システムが rt-kernel を実行している場合にのみ表示されます。
ランタイム
システム管理モードは 2 時間実行され、タイマーイベント分析はすべてのマシンで 12 時間実行されます。必要な supportable テストにより、全体の実行時間が約 1 分長くなります。