2014-08-29 1 views
6

Ein Thread (oder Task) verliert dynamische Priorität, indem er eine Menge CPU verwendet und Priorität erhält, indem er weniger CPU verwendet. Wie genau werden diese Prioritäten für n Threads berechnet (mit der normalen Zeitplanungsrichtlinie SCHED_OTHER)?Wie werden dynamische Prioritäten von Threads in Linux 2.6.x berechnet?

+4

Der Completely Fair Scheduler (CFS), alias SCHED_NORMAL oder SCHED_OTHER, ist dokumentiert [hier] (https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt) und implementiert [hier] (https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c). – indiv

Antwort

1

Zitiert von this

Die Linux 2.6.8.1 Scheduler Belohnungen I/O-gebundene Aufgaben und straft CPU-gebundene Aufgaben durch Hinzufügen oder von einer Aufgabe des statischen Priorität abzieht. Die angepasste Priorität wird als dynamische Priorität einer Aufgabe bezeichnet, , und ist über die prio-Variable der Aufgabe zugänglich (z. B. p-> prio, wobei p eine Aufgabe ist). Wenn eine Task interaktiv ist (die Bezeichnung des Schedulers für E/A gebunden), wird ihre Priorität erhöht. Wenn es ein CPU-Schwein ist, wird es eine Strafe bekommen. Im Linux-2.6.8.1-Scheduler ist der Bonus mit der maximalen Priorität 5 und der Höchstprioritätsstrafe ist 5. Da der Scheduler Boni und Strafen verwendet, werden Anpassungen an die statische Priorität einer Aufgabe respektiert. Ein mildes CPU-Schwein mit einem schönen Wert von -2 könnte eine dynamische Priorität von 0 haben, genau wie eine Aufgabe, die weder eine CPU noch eine E/A Schwein ist.

Ich denke, das ist eine faire Erklärung. Die Priorität wird basierend darauf berechnet, ob es sich um einen CPU-gebundenen Thread oder um einen E/A-gebundenen Thread handelt. Und bezüglich was Sie in der Frage erwähnten, dass gain priority by using less of CPU eher Priorität erhält, indem es interaktiv ist (I/O-Grenze). Ich hoffe, dieser Auszug beantwortet Ihre Anfrage ...

Verwandte Themen