RHEL 9 for Real Time のインストール

Red Hat Enterprise Linux for Real Time 9

Red Hat Enterprise Linux 9 への Linux リアルタイムカーネルのインストール

概要

本ガイドでは、RHEL 9 で低レイテンシーのリアルタイムカーネルをインストールして使用を開始する方法について説明します。

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック

当社のドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

特定の文章に関するコメントの送信

  1. Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
  2. カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
  3. 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
  4. フィードバックを追加し、Submit をクリックします。

Bugzilla からのフィードバック送信 (アカウントが必要)

  1. Bugzilla の Web サイトにログインします。
  2. Version メニューから正しいバージョンを選択します。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. Submit Bug をクリックします。

第1章 RHEL for Real Time のインストール

多くの業界や組織には、非常に高いパフォーマンスのコンピューティング機能が必要で、特に金融業界や通信業界では、小さく予測可能なレイテンシーが必要になる場合があります。レイテンシー (応答時間) はイベントとシステム応答間の時間として定義され、通常マイクロ秒 (μs) で測定されます。

Linux 環境で実行されているほとんどのアプリケーションでは、基本的なパフォーマンスチューニングにより、レイテンシーを十分に改善できます。Red Hat は、レイテンシーを低く保つだけでなく、予測可能な機能も必要とする業界向けに、この内容を提供するドロップインのカーネル置き換えを開発しました。RHEL for Real Time は RHEL 9 の一部として提供され、RHEL 9 とのシームレスな統合を提供します。RHEL for Real Time により、組織内のレイテンシーを測定、設定、記録することができます。

警告

RHEL for Real Time をインストールする前に、ベースプラットフォームが適切にチューニングされ、システム BIOS パラメーターが調整されていることを確認します。これらのタスクの実行に失敗すると、RHEL Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。

1.1. RHEL for Real Time でのレイテンシーの最適化

RHEL for Real Time は、非常に高い決定要件があるアプリケーション用に、適切にチューニングされたシステムでの使用を目的に設計されています。カーネルシステムのチューニングにより、決定論の改善が大きくなります。

たとえば、多くのワークロードで、システムを徹底してチューニングすることで、約 90% ほど一貫性が向上します。このため、RHEL for Real Time を使用する前に、まず標準的な RHEL のシステムチューニングを実行して、目的が満たされているかどうかを確認することが推奨されます。

システムのチューニングが重要なのは、リアルタイムカーネルを使用する場合でも標準カーネルの場合でも同じです。RHEL 9 リリースの一部として提供される標準カーネルを実行する未チューニングのシステムに、リアルタイムカーネルをインストールしても、目立った利点はありません。標準カーネルをチューニングすることで、達成可能なレイテンシー改善の 90% が得られます。リアルタイムカーネルは、最も要求の厳しいワークロードで必要とされる、レイテンシー改善の最後の 10% を提供します。

警告

リアルタイムカーネルシステムをチューニングする前に、ベースプラットフォームが適切にチューニングされ、システムの BIOS パラメーターの調整が行われていることを確認してください。これらのタスクの実行に失敗すると、RHEL Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。

リアルタイムカーネルの目的は、一貫性のある、低レイテンシーの、決定論に基づく予測可能な応答時間を提供することです。リアルタイムカーネルに関連する、追加のカーネルオーバーヘッドがあります。これは主に、個別にスケジュール設定されたスレッドでハードウェア割り込みを処理するためです。ワークロードのオーバーヘッドが増大すると、全体的なスループットが低下します。スループットの低下は 0% から 30% までの範囲ですが、正確な量はワークロードに大きく依存します。

カーネル遅延の要件がミリ秒 (ms) オーダーの般的なワークロードの場合は、標準の RHEL 9 カーネルで十分です。ただし、ワークロードに、割り込み処理やマイクロ秒 (μs) 範囲のプロセススケジューリングなどのコアカーネル機能に対する厳格な低遅延の決定論要件がある場合は、リアルタイムカーネルが最適です。

標準のカーネルシステムチューニングにおけるリアルタイムの利点

このグラフは、RHEL 9 と RHEL for Real Time カーネルを使用するマシン 100 万台のサンプルを比較したものです。

  • このグラフの青い点は、チューニングされた RHEL 9 カーネルを実行しているマシンのシステム応答時間 (マイクロ秒単位) を表しています。
  • グラフの緑色の点は、チューニングされたリアルタイムカーネルを実行しているマシンのシステムの応答時間を表しています。

このグラフからは、標準カーネルの応答時間が大きく変動しているのとは対照的に、リアルタイムカーネルの応答時間は一定であることが良く分かります。

1.2. yum を使用した RHEL for Real-Time のインストール

システムに RHEL 9 for Real Time をインストールするには、yum パッケージマネージャーを使用します。

注記

RHEL for Real Time が含まれる ISO イメージは、カスタマーポータル からダウンロードすることもできます。この ISO イメージを使用して、RHEL for Real Time に含まれるすべての RPM パッケージを取得できます。ただし、これは起動可能な ISO イメージではないため、これを使用して起動可能な USB または CD メディアを作成することはできません。

前提条件

  • AMD64 または Intel64 システムに最新バージョンの RHEL 9 がインストールされている。

    注記

    RHEL for Real Time は、Red Hat Enterprise Linux の実行が認定されている AMD64 および Intel64 (x86_64 とも呼ばれます) サーバープラットフォームで実行されます。

  • マシンが登録され、RHEL が RHEL for Real Time サブスクリプションに割り当てられている。
  • ベースプラットフォームが適切にチューニングされ、システム BIOS パラメーターが調整されている。

    注記

    これらのタスクを実行しないと、RHEL for Real Time デプロイメントから一貫したパフォーマンスを得ることができなくなる可能性があります。

手順

  1. RHEL for Real Time リポジトリーを有効にします。

    # subscription-manager repos --enable rhel-9-for-x86_64-rt-rpms
  2. RHEL for Real Time パッケージグループをインストールします。

    # yum groupinstall RT

    このグループにより、複数のパッケージがインストールされます。

    • kernel-rt: RHEL for Real Time カーネルパッケージ
    • kernel-rt-core: コア RHEL for Real Time カーネルパッケージ
    • kernel-rt-devel: RHEL for Real Time カーネル開発パッケージ
    • kernel-rt-modules: RHEL for Real Time カーネルモジュールパッケージ
    • kernel-rt-modules-extra - RHEL for Real Time カーネル追加モジュールパッケージ
    • rt-setup - RHEL for Real Time で必要とする基本環境を設定するパッケージ
    • rteval - RHEL for Real Time のシステム適合性を評価するパッケージ
    • rteval-loads: rteval 負荷のソースコードを提供するパッケージ
    • tuned-profiles-realtime: リアルタイムを対象とした追加の TuneD プロファイルを含むパッケージ
  3. (オプション) さらに、tuna パッケージには、RHEL for Real Time ワークロードをチューニングするのに役立つツールが含まれており、コマンドラインまたは GUI からの CPU 分離とスレッドアフィニティー操作を大幅に自動化します。このパッケージは、ベースの RHEL 9 リポジトリーで入手できます。tuna の使用については、RHEL for Real Time Kernel Tuning Guideを参照してください。

    # yum install tuna
注記

RHEL for Real Time カーネルがインストールされると、自動的にデフォルトのカーネルに設定され、次回の起動時に使用されます。

検証手順

  • インストールの場所を確認し、コンポーネントが正常にインストールされていることを確認します。

    # rpm -ql realtime-setup
    /etc/security/limits.d/realtime.conf
    /etc/sysconfig/realtime-setup
    /etc/udev/rules.d/99-rhel-rt.rules
    /usr/bin/realtime-setup
    /usr/bin/rt-setup-kdump
    /usr/bin/slub_cpu_partial_off
    /usr/lib/.build-id
    /usr/lib/.build-id/a4
    /usr/lib/.build-id/a4/da77908aa4c6f048939f3267f1c552c456d117
    /usr/lib/systemd/system/rt-entsk.service
    /usr/lib/systemd/system/rt-setup.service
    /usr/sbin/kernel-is-rt
    /usr/sbin/rt-entsk

1.3. RHEL for Real Time リポジトリーで利用可能な RPM パッケージ

このセクションでは、RHEL for Real Time リポジトリーで使用可能な RPM パッケージの一覧を示します。

RHEL for Real Time 固有 列は、RPM が標準の RHEL 9 メンテナーンスストリームと異なるか、または標準のカーネルには該当しないかを示します。この列が いいえ の場合、RPM が RHEL 9 で同等に機能することを意味します。

必須 列は、正しい Red Hat Enterprise Linux for Real Time の動作にパッケージが必要であるかどうかを示します。この列が いいえ の場合、使用が任意であることを意味します。

表1.1 基本的な RHEL for Real Time カーネルパッケージ

RPM パッケージ名説明RT 固有必須

kernel-rt

低レイテンシーおよびプリエンプション機能

はい

はい

以下のパッケージには、RHEL for Real Time で使用するためのテストプログラムが含まれています。

表1.2 RHEL for Real Time カーネルテストパッケージ

RPM パッケージ名説明RT 固有必須

kernel-rt-devel

カーネル開発用のヘッダーおよびライブラリー

はい

いいえ

kernel-rt-debug

デバッグ機能がコンパイルされた RHEL for Real Time カーネル (低速)

はい

いいえ

kernel-rt-debug-devel

デバッグカーネル開発に使用するヘッダーおよびライブラリー

はい

いいえ

rt-tests

システムレイテンシーを測定し、優先度継承ミューテックスを適切に機能させるためのユーティリティー

いいえ

いいえ

以下のパッケージのセットは、カーネルクラッシュダンプを分析するための perf ユーティリティー、trace-cmd ユーティリティー、および crash ユーティリティーで使用するために提供されています。デバッグパッケージはシンボルテーブルで設定されており、非常に大きくなります。このため、これらは他の RHEL for Real Time パッケージとは別に配信されます。

これらのパッケージは、RHEL for Real Time - Debug RPMs リポジトリーにあり、ここからダウンロードが可能です。

表1.3 基本的な RHEL for Real Time デバッグパッケージ

RPM パッケージ名説明RT 固有必須

kernel-rt-debuginfo

perftrace-cmd など、プロファイリングおよびデバッグ用のシンボル

はい

いいえ

kernel-rt-debug-debuginfo

プロファイリングおよび追跡用のシンボル

はい

いいえ

1.4. インストール後の手順

RHEL for Real Time をインストールした後、以下のことを確認してください。

  • 最適な低レイテンシーの決定論を実現するには、RHEL for Real Time 固有のシステムチューニングを実行します。
  • リアルタイムカーネルと標準カーネルのモジュール互換性について理解します。
  • kdump を有効にするには、kexec/kdump を有効にしてクラッシュダンプ情報を提供するように RHEL for Real Time を設定する必要があります。
  • Real Time カーネルがデフォルトのカーネルであることを確認するには、以下のコマンドを実行します。

リアルタイムカーネルと標準カーネルのモジュール互換性

RHEL for Real Time は、標準の Red Hat Enterprise Linux 9 カーネルとは大きく異なります。結果として、サードパーティーのカーネルモジュールは RHEL for Real Time と互換性がありません。

カーネルモジュールは、特別にビルドされたカーネルに固有のものです。リアルタイムカーネルは、標準のカーネルとは大きく異なるため、モジュールも大きく異なります。

つまり、Red Hat Enterprise Linux 9 からサードパーティーのモジュールを取得して、そのモジュールを RHEL for Real Time で使用することはできません。サードパーティーのモジュールを使用する必要がある場合は、RHEL for Real Time の開発およびテストパッケージで利用可能な RHEL for Real Time ヘッダーファイルを使用して再コンパイルする必要があります。

以下は、標準の Red Hat Enterprise Linux 9 に同梱されていて、現在 RHEL for Real Time 用のカスタムビルドがないサードパーティーのドライバーの例です。

  • EMC Powerpath
  • NVidia graphics
  • Qlogic の高度なストレージアダプター設定ユーティリティー

ユーザー空間の syscall インターフェイスは、RHEL for Real Time と互換性があります。

第2章 RHEL for Real Time バグの報告

問題の原因となっているカーネル (RHEL for Real Time または標準カーネル) を特定すると、バグが修正される可能性が高くなります。このセクションでは、バグを診断して報告する方法を説明します。

2.1. RHEL for Real Time バグの診断

この手順では、バグレポートを提出する前に、問題が発生した場所を診断する方法を説明します。

前提条件:

  • RHEL for Real Time カーネルの最新バージョンがインストールされている。

手順

  1. RHEL for Real Time カーネルの最新バージョンを使用していることを確認します。
  2. GRUB メニューを使用して、RHEL for Real Time カーネルを起動します。
  3. 問題が発生した場合は、RHEL for Real Time に対するバグを報告してください。
  4. 標準カーネルで問題を再現してみてください。

    このトラブルシューティング手順は、問題のある場所を特定するのに役立つ場合があります。

注記

標準カーネルで問題が発生しない場合、バグはおそらく、Red Hat がベースライン (4.18.0) カーネルに適用した RHEL for Real Time 固有の拡張機能に導入された変更の結果です。

2.2. Bugzilla でのバグレポートの送信

バグが Red Hat Enterprise Linux for Real Time に固有であると判断した場合は、このセクションの手順に従ってバグレポートを送信してください。

前提条件:

  • Red Hat アカウントを持っている。

手順

  1. Bugzilla アカウントにログインします。
  2. Enter A New Bug Report をクリックします。
  3. Red Hat classification を選択します。
  4. Red Hat Enterprise Linux 製品を選択します。
  5. Component を入力します。
    たとえば、バグがカーネルの問題である場合は、kernel-rt を使用します。あるいは、影響を受けるユーザースペースコンポーネントの名前を使用します (例: rteval)。
  6. RHEL for Real Time カーネルのバグの問題の詳細な説明を提供します。

    問題の説明を入力するときに、標準の Red Hat Enterprise Linux 9 カーネルで問題を再現できたかどうかも記載することをお勧めします。