![どのプロセススケジューラが使用されているかを確認するには? [コピー]](https://linux33.com/image/22452/%E3%81%A9%E3%81%AE%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%A9%E3%81%8C%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
つまり、O(1)スケジューラですか、CFSスケジューラですか、それとも古いスケジューラですか?
答え1
sched_getscheduler(process_pid)
プロセスの予約ポリシーを決定するために呼び出すことができます。
存在するなら/sys/kernel/uids
CFSがあるのです。または試してみることができます
[[ -n $(awk '$3 == "load_balance_fair" {print;}' < /proc/kallsyms) ]] &&
echo CFS
O(1)スケジューラと他の古いスケジューラを区別する方法がわかりません。私の考えではカーネルバージョンを使用できますが、ディストリビューションは自分がリリースするカーネルにパッチを適用するので、これは信頼できません。
答え2
プログラマーは、この関数 man sched_setscheduler を使用してプロセスのスケジューラーを定義できます。
プロセスで使用されるスケジューラを表示するには、top コマンドを使用できます。
プロセスチャートを変更するためのスケジューラ