Wie können Sie feststellen, welcher Prozessplaner verwendet wird?

Wie können Sie feststellen, welcher Prozessplaner verwendet wird?

Handelt es sich also um den O(1)-Scheduler, den CFS-Scheduler oder einen älteren?

Antwort1

Sie können anrufen, sched_getscheduler(process_pid)um die Planungsrichtlinie für einen Prozess festzulegen.

Wenn /sys/kernel/uidsja, haben Sie CFS. Oder Sie könnten versuchen

[[ -n $(awk '$3 == "load_balance_fair" {print;}' < /proc/kallsyms) ]] && 
  echo CFS

Ich bin mir nicht sicher, wie Sie den O(1)-Scheduler von anderen veralteten Schedulern unterscheiden können. Sie könnten vermutlich die Kernel-Version verwenden, aber da Distributionen Patches auf ihre ausgelieferten Kernel anwenden, ist dies unzuverlässig.

Antwort2

Der Scheduler eines Prozesses kann vom Programmierer mit der Funktion man sched_setscheduler definiert werden.

Um den von einem Prozess verwendeten Scheduler anzuzeigen, können Sie den Befehl top verwenden.

zum Ändern des Schedulers eines Prozessdiagramms

verwandte Informationen