第3章 リアルタイム固有のチューニング


最適化が完了したら2章一般的なシステムチューニングRed Hat Enterprise Linux for Real Time 固有のチューニングを開始する準備が整いました。この手順のために Red Hat Enterprise Linux for Real Time カーネルがインストールされている必要があります。
重要
このセクションのツールは、最初に 2章一般的なシステムチューニング を完了させてから使用するようにしてください。パフォーマンスは改善されません。
Red Hat Enterprise Linux for Real Time のチューニングを開始する準備ができたら、最大のメリットが得られる次の手順を最初に実行してください。
この章のチューニング提案をすべて完了したら、4章アプリケーションのチューニングとデプロイメント に進みます。

3.1. スケジューラーの優先順位の設定

Red Hat Enterprise Linux for Real Time カーネルを使用すると、スケジューラーの優先順位を詳細に制御できます。また、アプリケーションレベルのプログラムをカーネルスレッドよりも優先度の高い状態でスケジュールすることもできます。
警告
スケジューラーの優先度を設定すると、結果が生じる可能性があります。重要なカーネルプロセスが必要に応じて実行できなくなると、システムが応答しなくなり、その他の予測不可能な動作が発生する可能性があります。最終的に、正しい設定はワークロードに依存します。
優先順位は、特定のカーネル機能専用の一部のグループで定義されます。
Expand
表3.1 優先順位マップ
優先度 Threads 説明
1 優先度の低いカーネルスレッド 優先度 1 は通常、SCHED_OTHER の すぐ上に必要なタスク用に予約されています。
2 - 49 利用可能 一般的なアプリケーションの優先順位に使用される範囲
50 ハード IRQ のデフォルト値
51 - 98 優先度の高いスレッド この範囲は、定期的に実行され、応答時間が短くなければならないスレッドに使用します。中断が不足するため、CPU にバインドされたスレッドにはこの範囲を使用しないでください。
99 watchdogs および移行 最も優先度が高いシステムスレッド

手順3.1 systemd を使用して優先順位を設定する

  • 優先度は、0 (最低優先度) から 99 (最高優先度) までの一連のレベルを使用して設定されます。systemd サービスマネージャーを使用すると、カーネルのブート後にスレッドのデフォルトの優先順位を変更できます。
    実行中のスレッドのスケジュール優先順位を表示するには、tuna ユーティリティーを使用します。
    ~]# tuna --show_threads
                          thread       ctxt_switches
        pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
      2      OTHER     0    0xfff       451            3        kthreadd
      3       FIFO     1        0     46395            2     ksoftirqd/0
      5      OTHER     0        0        11            1    kworker/0:0H
      7       FIFO    99        0         9            1   posixcputmr/0
    ...[output truncated]...
    
    Copy to Clipboard Toggle word wrap

3.1.1. ブートプロセス中のサービスの優先度の変更

systemd を 使用すると、ブートプロセス中に起動されるサービスに対してリアルタイムの優先度を設定できます。
ユニット設定ディレクティブ は、システムの起動プロセス中にサービスの優先度を変更するために使用されます。ブートプロセスの優先度の変更は、サービスセクションの以下のディレクティブを使用して行われます。
CPUSchedulingPolicy=
実行したプロセスの CPU スケジューリングポリシーを設定します。Linux で利用可能なスケジューリングクラスの 1 つを取ります。
  • その他
  • バッチ
  • idle
  • fifo
  • rr
CPUSchedulingPriority=
実行したプロセスの CPU スケジューリングの優先度を設定します。利用可能な優先度の範囲は、選択した CPU スケジューリングポリシーにより異なります。リアルタイムスケジューリングポリシーでは、1 (最も低い優先度) から 99 (最も高い優先度) の整数を使用できます。

例3.1 mcelog サービスの優先度の変更

次の例では、mcelog サービスを使用します。mcelog サービスの優先度を変更するには:
  1. 次のように、/etc/ systemd/system/mcelog.system.d/priority.conf に補足の mcelog サービス設定ディレクトリーファイルを作成します。
    # cat <<-EOF > /etc/systemd/system/mcelog.system.d/priority.conf
    
    Copy to Clipboard Toggle word wrap
  2. 以下を入力します。
    [SERVICE]
    CPUSchedulingPolicy=fifo
    CPUSchedulingPriority=20
    EOF
    
    Copy to Clipboard Toggle word wrap
  3. systemd スクリプトの設定をリロードします。
    # systemctl daemon-reload
    
    Copy to Clipboard Toggle word wrap
  4. mcelog サービスを再起動します。
    # systemctl restart mcelog
    
    Copy to Clipboard Toggle word wrap
  5. systemd によって設定された mcelog 優先度を表示するには、次のコマンドを発行します。
    $ tuna -t mcelog -P
    
    Copy to Clipboard Toggle word wrap
    このコマンドの出力は、以下のようになります。
                        thread       ctxt_switches
      pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
    826     FIFO    20  0,1,2,3        13            0          mcelog
    
    Copy to Clipboard Toggle word wrap
systemdユニット設定ディレクティブの 変更の詳細は、システム管理者ガイドの 既存のユニットファイルの変更 の章を参照してください。

3.1.2. サービスの CPU 使用率の設定

systemd を 使用すると、どの CPU 上でサービスが実行できるかを指定できます。
これを行うには、systemd は CPUAffinity= unit 設定ディレクティブ を使用します。

例3.2 mcelog サービスの CPU 使用率の設定

次の例では、mcelog サービスを CPU 0 および 1 で実行するように制限します。
  1. 次のように、/etc/ systemd/system/mcelog.system.d/affinity.conf に補足の mcelog サービス設定ディレクトリーファイルを作成します。
    # cat <<-EOF > /etc/systemd/system/mcelog.system.d/affinity.conf
    
    Copy to Clipboard Toggle word wrap
  2. 以下を入力します。
    [SERVICE]
    CPUAffinity=0,1
    EOF
    
    Copy to Clipboard Toggle word wrap
  3. systemd スクリプトの設定をリロードします。
    # systemctl daemon-reload
    
    Copy to Clipboard Toggle word wrap
  4. mcelog サービスを再起動します。
    # systemctl restart mcelog
    
    Copy to Clipboard Toggle word wrap
  5. mcelog サービスが制限されている CPU を表示します。
    $ tuna -t mcelog -P
    
    Copy to Clipboard Toggle word wrap
    このコマンドの出力は、以下のようになります。
                        thread       ctxt_switches
      pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
    12954   FIFO    20      0,1         2            1          mcelog
    
    Copy to Clipboard Toggle word wrap
systemdユニット設定ディレクティブの 変更の詳細は、システム管理者ガイドの 既存のユニットファイルの変更 の章を参照してください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2026 Red Hat
トップに戻る