リアルタイムカーネル機能は、オープンソースエコシステムに10年以上存在しています。同様に、リアルタイムカーネルに対するRed Hat Enterprise Linux(RHEL)のサポートは数年前から利用可能です。それでも、多くのシステム管理者は、そのコアコンセプトと実際の運用動作を誤って解釈しています。この記事では、その主な機能のいくつか、標準カーネルとの違い、およびクイックインストール手順について説明します。
当初、Red Hatは、「Red Hat Enterprise MRG」と呼ばれる製品を発表しました。この製品は、MRGがメッセージング、リアルタイム、およびグリッドの略でした。 MRG2はRHEL5およびRHEL6バージョンに基づいていましたが、MRG3は完全にRHEL6に基づいていました。RHEL7以降、MRG製品は非推奨になり、「RHELforReal-Time」は別の製品として導入されました。
リアルタイムカーネルとは何ですか?
リアルタイムカーネルは、必ずしも標準カーネルより優れているとは限りません。代わりに、さまざまなビジネス要件またはシステム要件を満たします。これは、低レイテンシ、一貫した応答時間、および決定論を維持するように設計された最適化されたカーネルです。比較として、標準のRHELカーネルは、スループット指向の操作とタスクの公平なスケジューリングに焦点を合わせています。リアルタイムカーネルは、kernel-rt
とも呼ばれます。 またはpreempt-rt
。
リアルタイムカーネルを識別する最も簡単な方法は、uname -r
を実行することです。 ターミナルでコマンドを実行し、 rtを探します カーネルバージョンのキーワード。 rtの場合 が欠落している場合、システムは標準カーネルを使用します。
次の出力は例です。
#uname -r
3.10.0-1127.10.1.rt56.1106.el7
いくつかの重要なkernel-rt
メカニズムは次のとおりです。
- 負荷が高い場合、タスクの優先度がチェックされます(1-99)。
- 優先度の高い(99)タスクには、CPUの実行が優先されます。
- Completely Fair Scheduling(CFS)ポリシーを使用しません。
- 使用中のスケジューリングポリシーはSCHED_FIFOまたはSCHED_RRです。
- 低遅延の実行時間を維持します。
- 応答時間を測定、記録、および構成する機会を提供します。
kernel-rt
の方法をさらに理解する 次の図は、標準のカーネルとは異なり、kernel-rt
の使用方法を説明しています。 システムの待ち時間と応答時間を低く維持します。
上の図では、青 プロットは、調整された標準RHEL7カーネルでの応答時間(ms)を表しますが、緑色 ポイントは、調整されたRHEL7 kernel-rt
の応答時間(ms)を表します 。緑のセクションは、一貫性、低遅延、および低応答時間を示しています。このグラフと関連するテストをさらに詳しく調べるには、RedHatの公式ガイド「RedHatEnterpriseLinuxをリアルタイムで使用してレイテンシーを最適化する理由」を参照してください。
以下に、リアルタイムのRHELを標準のRHELと比較するために不可欠なその他の違いをいくつか示します。
- Kexecとvmcore-インストールと構成は標準のRHELと同じです。
- サードパーティモジュール-すべてのモジュールは
kernel-rt
で再コンパイルする必要があります 使用する前に。 -
irqbalance
デーモン-デフォルトでは無効になっています。 - スケジューリングポリシー-SCHED_FIFOまたはSCHED_RRのみが使用されます。
- 割り込み(IRQ)-専用のCPUを使用して、プロセスを相互に分離します。
リアルタイムでRHELをインストールする
クイックインストールを実行して、kernel-rt
の一部である他のパッケージを観察してみましょう。 インストール。 kernel-rt
の別のISOイメージ フレッシュプロビジョニングに使用できます。ユーザー/管理者はkernel-rt
をインストールすることもできます 既存の標準RHELシステムのRPMパッケージに続いて、再起動します。
ステップ1 : RHEL for Real-Timeという名前のISOイメージをダウンロードします RedHatカスタマーポータルおよびプロビジョニングから。既存の標準RHELボックスを使用して、rhel-7-server-rt
を有効にすることもできます。 kernel-rt
をフェッチするリポジトリ パッケージ。
ステップ2 :グループインストールを実行して、すべてのRT固有のパッケージを同時にインストールします。
ステップ3 :すべての依存パッケージを確認します。
ステップ4 :システムを再起動し、kernel-rt
を選択します ブートコンソールから。
必要なすべてのkernel-rt
が提供されるため、ユーザーはRTグループのインストールを実行する必要があります。 依存パッケージ。次の表に、依存するパッケージの簡単な詳細を示します。
- kernel-rt-リアルタイムカーネル
- rt-setup-RT環境のセットアップに最も重要なパッケージ。
- rtctl-カーネルスレッドのスケジューリングの優先順位を設定します。
- rt-test、rt-checks、rteval-システムの機能と負荷をテストするために使用されます。
RTグループのインストールが重要である理由を説明する非常に簡単な実際のシナリオを紹介します。主要なテレコム顧客の1つは、HP ProLiant BL460c Gen9マシン上で3ブレードクラスター環境としてリアルタイムRHELカーネル(3.10.0-693.11.1.rt56.632.el7)を実行していました。彼らは、クラスター環境でトラフィックの遅延とタイムアウトを観察しました。多数のUDPセルフハートビート(HB)パケットが欠落しているか、ドロップされていました。 pcap
を分析すると、ネットワークカードやクラスタモジュールに問題がないことがわかりました。 およびstrace
パケット。さらなる診断により、rt-setup
kernel-rt
が原因で、パッケージが見つかりませんでした 依存パッケージなしで強制的にインストールされました。
環境 | 7日間でHBを逃した | rt-setupを使用して7日間でHBを見逃した |
---|---|---|
hostname-a12 | 138 | 0 |
hostname-a13 | 113 | 0 |
hostname-a14 | 118 | 5 |
このrt-setup
パッケージは、rt-entsk
の構成と実行を担当します デーモン。IPIの生成とリアルタイムタスクの遅延を防ぎます。
次の箇条書きは、rt-setup
の主な機能の一部を示しています。 (v2.0-6):
- リアルタイムグループを作成します。
- PAMのリアルタイム制限設定を追加します。
-
/usr/bin/rt-setup-kdump
を追加します RTでkdumpを設定します。 - スレッド化されたirqおよび
/dev/rtc
にudev固有のルールを追加します アクセス。 -
/usr/bin/slub_cpu_partial_off
を追加しますcpu_partials
をオフにします SLUBで。 - ネットソケットタイムスタンプ静的キーデーモンを追加します(
rt-entsk
。
まとめ
リアルタイムカーネルを実行し、その可能性を評価することは、多くのアプリケーションがその恩恵を受けることができるため、努力する価値があります。 Kernel-rt
パフォーマンスの問題をさらに減らすように調整できます。 ftrace
などのツール RHEL for Real-Timeが提供されており、レイテンシーの問題の分析とデバッグに非常に役立ちます。ただし、これらの詳細はこの記事の範囲外です。
リアルタイムカーネルは長い間存在していましたが、多くのシステム管理者はそれをどのように操作するかを確信していません。この記事では、リアルタイムカーネルが何をするかを定義しました。また、インストール方法についても説明しました。おそらく、リアルタイムカーネルは、組織がさらに優れたLinuxパフォーマンスを実現するのに役立つでしょう!
[無料のオンラインコース:Red HatEnterpriseLinuxの技術概要。 ]