32.7. ブートプロセス中のサービス優先度の変更
systemd
サービスを使用すると、システムの起動プロセス中に起動したサービスに対して、リアルタイムの優先度を設定できます。ユニット設定ディレクティブ は、ブートプロセス中にサービスの優先度を変更するために使用されます。
ブートプロセスの優先度の変更は、service セクションの以下のディレクティブを使用して行われます。
CPUSchedulingPolicy=
-
実行したプロセスの CPU スケジューリングポリシーを設定します。これは、
他
のポリシー、fifo
ポリシー、およびrr
ポリシーを設定するために使用されます。 CPUSchedulingPriority=
-
実行したプロセスの CPU スケジューリングの優先度を設定します。利用可能な優先度の範囲は、選択した CPU スケジューリングポリシーによって異なります。リアルタイムスケジューリングポリシーでは、
1
(最も低い優先度) から99
(最も高い優先度) までの整数を使用できます。
以下の手順では、ブートプロセス中に mcelog
サービスを使用してサービスの優先度を変更する方法を説明します。
前提条件
TuneD パッケージをインストールします。
# yum install tuned
TuneD サービスを有効にして起動している。
# 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 EOF
systemd
スクリプト設定を再読み込みします。# systemctl daemon-reload
mcelog
サービスを再起動します。# 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
関連情報
-
システム上の
systemd(1)
およびtuna(8)
man ページ - 優先度範囲の説明