20.2. 起動時のサービスの優先度の変更

systemd を使用すると、システムの起動時に起動するサービスのリアルタイムの優先度を設定できます。

ユニット設定ディレクティブを使用して、起動プロセス時のサービスの優先度を変更します。ブートプロセスの優先順位の変更は、/etc/systemd/system/service.system.d/priority.conf の service セクションにある以下のディレクティブを使用して行います。

CPUSchedulingPolicy=

実行されるプロセスの CPU スケジューリングポリシーを設定します。Linux で利用可能なスケジューリングクラスのいずれかを設定できます。

  • other
  • batch
  • idle
  • fifo
  • rr

CPUSchedulingPriority=

実行されるプロセスの CPU スケジューリングの優先度を設定します。設定可能な優先度の範囲は、選択した CPU スケジューリングポリシーにより異なります。リアルタイムスケジューリングポリシーでは、1 (最低優先度) から 99 (最高優先度) までの整数を使用できます。

前提条件

  • 管理者権限がある。
  • システムの起動時に実行するサービス。

手順

既存のサービスに対して以下を実行します。

  1. サービスの補助サービス設定ディレクトリーファイルを作成します。

    # cat <<-EOF > /etc/systemd/system/mcelog.system.d/priority.conf
  2. ファイルの [SERVICE] セクションに、スケジューリングポリシーと優先度を追加します。

    以下に例を示します。

    [SERVICE]
    CPUSchedulingPolicy=fifo
    CPUSchedulingPriority=20
    EOF
  3. systemd スクリプトの設定を再読み込みします。

    # systemctl daemon-reload
  4. サービスを再起動します。

    # systemctl restart mcelog

検証

  • サービスの優先度を表示します。

    $ tuna -t mcelog -P

    この出力は、設定されているサービスの優先度を示します。

    以下に例を示します。

                        thread       ctxt_switches
      pid SCHED_ rtpri affinity voluntary nonvoluntary             cmd
    826     FIFO    20  0,1,2,3        13            0          mcelog