31.7. ブートプロセス中のサービス優先度の変更
systemd サービスを使用すると、システムの起動プロセス中に起動したサービスに対して、リアルタイムの優先度を設定できます。ユニット設定ディレクティブ は、ブートプロセス中にサービスの優先度を変更するために使用されます。
ブートプロセスの優先度の変更は、service セクションの以下のディレクティブを使用して行われます。
CPUSchedulingPolicy=-
実行したプロセスの CPU スケジューリングポリシーを設定します。これは、
他のポリシー、fifoポリシー、およびrrポリシーを設定するために使用されます。 CPUSchedulingPriority=-
実行したプロセスの CPU スケジューリングの優先度を設定します。利用可能な優先度の範囲は、選択した CPU スケジューリングポリシーによって異なります。リアルタイムスケジューリングポリシーでは、
1(最も低い優先度) から99(最も高い優先度) までの整数を使用できます。
以下の手順では、ブートプロセス中に mcelog サービスを使用してサービスの優先度を変更する方法を説明します。
前提条件
TuneD パッケージをインストールします。
# dnf install tunedTuneD サービスを有効にして起動している。
# systemctl enable --now tuned
手順
実行中のスレッドのスケジュールの優先度を表示します。
# tuna --show_threads thread ctxt_switches pid SCHED_ rtpri affinity voluntary nonvoluntary cmd 1 OTHER 0 0xff 3181 292 systemd 2 OTHER 0 0xff 254 0 kthreadd 3 OTHER 0 0xff 2 0 rcu_gp 4 OTHER 0 0xff 2 0 rcu_par_gp 6 OTHER 0 0 9 0 kworker/0:0H-kblockd 7 OTHER 0 0xff 1301 1 kworker/u16:0-events_unbound 8 OTHER 0 0xff 2 0 mm_percpu_wq 9 OTHER 0 0 266 0 ksoftirqd/0 [...]補助の
mcelogサービス設定ディレクトリーファイルを作成し、このファイルにポリシー名と優先度を挿入します。# cat << EOF > /etc/systemd/system/mcelog.service.d/priority.conf [Service] CPUSchedulingPolicy=fifo CPUSchedulingPriority=20 EOFsystemdスクリプト設定を再読み込みします。# systemctl daemon-reloadmcelogサービスを再起動します。# systemctl restart mcelog
検証
systemd問題で設定した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