Zum Inhalt springen

Completely Fair Scheduler

aus Wikipedia, der freien Enzyklopadie

Completely Fair Scheduler (CFS) ist ein fur Linux konzipierter und dort als Standard vorgesehener Prozess-Scheduler. Solche Scheduler werden verwendet, um die Prioritat von Programmablaufen auf Kernelebene von Betriebssystemen zu verwalten. Eine fruhere Version des CFS wurde zuerst von Ingo Molnar entwickelt und ersetzte mit Kernelversion 2.6.23 im Oktober 2007 den zuvor verwendeten O(1)-Scheduler.

Der CFS garantiert eine faire Aufteilung der Prozessorzeit. Er verzichtet im Gegensatz zum O(1)-Scheduler dabei auf Heuristiken und Statistiken. Im Idealfall lauft beim CFS jeder Prozess quasiparallel in gleicher Geschwindigkeit. Der CFS benotigt keine Runqueue, keine Timeslices und kein Array-Switching. Stattdessen ist jedem Prozess ein vruntime genannter Wert zugeordnet (virtual runtime), der seine tatsachliche Laufzeit auf Nanosekunden bestimmt abstrahiert und eine Bewertung daruber erlaubt, wie lange der Prozess schon gelaufen ist. Derjenige Prozess mit der jeweils geringsten vruntime wird gewahlt. Als Struktur wird dafur ein nach der vruntime sortierter Rot-Schwarz-Baum verwendet.[1][2]

Erweiterungen im 2.6.24er-Kernel

[Bearbeiten | Quelltext bearbeiten]

Mit dem 2.6.24er-Kernel unterstutzt der CFS Task Groups. Dies bedeutet, dass mehrere Prozesse zu Gruppen zusammengefasst werden und dadurch eine faire Aufteilung zwischen den Gruppen stattfindet. Das kann sinnvoll sein, wenn mehrere User an einem System arbeiten.

Folgendes Szenario verdeutlicht den Sachverhalt: Benutzer A lasst zwei Prozesse laufen, Benutzer B dagegen einen. Alle drei Prozesse haben die gleiche Prioritat. Der alte O(1)-Scheduler wurde dem Benutzer A zwei Drittel und Benutzer B ein Drittel der CPU-Laufzeit zuteilen. Der CFS teilt dagegen beiden Usern 50 % der Rechenzeit zu.[1]

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. | a b Ingo Molnar: This is the CFS scheduler. (Memento des Originals vom 25. Februar 2018 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft. Bitte prufe Original- und Archivlink gemass Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/people.redhat.com, Stand 13. Marz 2008
  2. | Robert Love: Linux Kernel Development. 3. Auflage, Addison-Wesley 2010, ISBN 978-0-672-32946-3. S. 41-67