23.2. 起動時のサービスの優先度の変更
systemd を使用すると、起動プロセス中に起動されるサービスのリアルタイム優先度を設定できます。
ユニット設定ディレクティブを使用して、起動プロセス時のサービスの優先度を変更します。ブートプロセスの優先順位の変更は、/etc/systemd/system/service.service.d/priority.conf の service セクションにある以下のディレクティブを使用して行います。
CPUSchedulingPolicy=-
実行されるプロセスの CPU スケジューリングポリシーを設定します。Linux で利用可能なスケジューリングクラス (
other、batch、idle、fifo、rr)のいずれかを受け取ります。 CPUSchedulingPriority=-
実行されるプロセスの CPU スケジューリングの優先度を設定します。設定可能な優先度の範囲は、選択した CPU スケジューリングポリシーにより異なります。リアルタイムスケジューリングポリシーでは、
1(最低優先度) から99(最高優先度) までの整数を使用できます。
前提条件
- 管理者権限がある。
- システムの起動時に実行するサービス。
手順
既存のサービスの場合、そのサービス用の補助的なサービス設定ディレクトリーファイルを作成します。
# cat <<-EOF > /etc/systemd/system/mcelog.service.d/priority.confファイルの
[Service]セクションに、スケジューリングポリシーと優先度を追加します。以下に例を示します。
[Service] CPUSchedulingPolicy=fifo CPUSchedulingPriority=20 EOFsystemdスクリプトの設定を再読み込みします。# systemctl daemon-reloadサービスを再起動します。
# 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