27.7. ブートプロセス中のサービス優先度の変更
systemd サービスを使用すると、ブートプロセス中に起動するサービスのリアルタイムの優先度を設定できます。ブートプロセス中のサービスの優先度を変更するには、ユニット設定ディレクティブを使用します。ブートプロセスの優先度は、サービスセクションで次のディレクティブを使用して変更できます。
-
CPUSchedulingPolicy=: 実行されるプロセスの CPU スケジューリングポリシーを設定します。これは、other、fifo、および rr ポリシーを設定するために使用されます。 -
CPUSchedulingPriority=: 実行されるプロセスの CPU スケジューリング優先度を設定します。設定可能な優先度の範囲は、選択した CPU スケジューリングポリシーにより異なります。リアルタイムスケジューリングポリシーでは、1 (最も低い優先度) から 99 (最も高い優先度) の整数を使用できます。
サービスの優先度は、ブートプロセス中に、および mcelog サービスを使用して変更できます。
前提条件
-
tunedをインストールして有効化した。詳細は、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