[Index] Governors/Scheduler [29.11.11]

  • Da mittlerweile eine reichliche Anzahl an verschiedenen Governors verfügbar sind, habe ich mal kleine Übersicht erstellt um die jeweiligen Eigenschaften des Governor aufzuzeigen. Diese Übersicht steht in ständiger Überarbeitung und doch wäre ich über jede Hilfe, in Form von Ergänzungen, Fehlermeldungen, Erfahrungen usw. sehr erfreut!


    Im zweiten Post befindet sich eine Übersicht über die verschiedenen I/O Scheduler.



    Governor (alphabetisch sortiert)

    brazilianwax
    Basiert auf dem "smartass" Governor, ist in seinem Verhalten aber viel aggressiver.


    conservative
    Hält die CPU bei der möglichst niedrigsten Taktfrequenz mit der Prämisse immer noch eine gute Performance zu verzeichnen.

    interactive
    Verhält sich ähnlich wie der "ondemand" Governor aber "erahnt" wenn Leistung benötigt bevor sie wirklich benötigt wird.


    interactivex
    Modifizierte Version des "interactive" Governor mit Sleep- und WakeUp Features.


    lagfree
    Verhält sich sehr ähnlich wie der "ondemand" Governor, mit dem Unterschied den Batterieverbrauch zu optimieren. Die Taktfrequenz erhöht und verringert sich bei einer Leistungsanforderung sanft und nicht wie beim "ondemand" Governor sprunghaft.

    lazy
    Der "lazy" ist ein optimierter "ondemand" Governor der die schnellen Frequenzwechsel unterbindet indem er eine bestimmte Zeit auf einer Frequenz bleibt bevor die Taktfrequenz erhöht bzw. verringert wird. Dies hat den Vorteil das die CPU bei hohen Datenraten einen Frequenzwechsel problemloser durchführen kann.

    lulzactive
    Basiert auf dem "interactive" Governor in Verbindung mit dem "smartass". Ein Screen-Off Profil wird nicht benötig, da die CPU Frequenz automatisch auf eingestellte minimum Leistung begrenzt wird.


    minmax
    Hält die CPU Taktfrequenz bei der möglichst minimalen Taktrate wenn keine Leistung benötigt wird, diese steigt aber sofort auf die möglichst maximale Taktrate sobald Leistung erforderlich wird.

    ondemand
    Senkt die CPU Taktfrequenz wenn keine Leistung benötigt wird, diese steigt aber sprunghaft sobald mehr Leistung erforderlich wird.


    ondemandx
    Modifizierte Version des "ondemand" Governor mit Sleep- und WakeUp Features.

    performance
    Hält die CPU Taktfrequenz permanent auf Maximum.


    powersave
    Hält die CPU Taktfrequenz permanent auf Minimum.


    savagedzen
    Der "savagedzen" ist ein optimierter "smartass" Governer der äußerst flott und Batterie sparend ist.


    scary
    Basiert auf dem "conservative" Governor mit einigen Features des "smartass" Governor. Der "scary" Governor verbringt die meiste Zeit in dem niedrigen Frequenzbereich um eine optimale Batterielaufzeit, bei noch anständiger Leistung zu erreichen.

    smartass
    Verhält sich ähnlich wie der "conservative" Governor aber sperrt die CPU während der Bildschirm aus ist auf eine niedrige Taktfrequenz. Diese Frequenz ist abhängig davon was der jeweilige Kernel vorgibt.

    Dieser Governor kann zu Problemen bei Anwendungen führen, die eine hohe Leistung bei abgeschaltetem Bildschirm benötigen. Desweiteren kann es vorkommen das der Bildschirm sich schwer tut um aus dem Standby aufzuwachen. Um dieses Problem zu beheben sollte man die "Min Frequenz" über SetCPU oder ähnliches auf 245Mhz anstatt 128Mhz stellen.

    smoothass
    Verhält sich ähnlich wie der "smartass" Governor, steigert die Taktfrequenz jedoch etwas aggressiver.

    superbad
    Ein stark optimierter "smartass" Governor, der durch niedrige Latenzen sich schnell an die Erfordernisse des Benutzers anpasst.

    userspace
    Der "userspace" Governor erlaubt es dem Benutzer oder einer unterstützten Anwendung die CPU auf eine bestimmte Taktfrequenz einzustellen.

    virtuous
    Ein optimierter "smartass" Governor.

  • Was macht ein Scheduler?


    Der IO-Scheduler verwaltet die Input / Output Zugriffe der Anwendungen auf die Speichermedien. Der IO-Scheduler dient zur Organisation der Reihenfolge von Zugriffen, je nach Scheduler wird versucht folgendes zu verbessern:

    • Höherer Datendurchsatz
    • niedrige Zugriffszeit
    • ausgewogenes Antwortverhalten der Anwendungen


    Scheduler (alphabetisch sortiert)

    anticipatory
    Dieser Scheduler arbeitet ähnlich wie der "Deadline" Scheduler, allerdings wird eine Statistik zwischen Blöcken und Prozessen erstellt. Durch die Statistiken ist es dem Scheduler möglich zu erahnen, wann der nächste Block von welchem Prozess angefordert wird.

    complete fair queuing (cfq)
    Dies ist der aktuelle Standard Scheduler, er hat einen anderen Ansatz als die anderen Scheduler. Er führt auch eine Block- und Prozessstatistik, benutzt diese allerdings um die Bandbreite „Fair“ an die Prozesse zu verteilen. Durch dieses Verhalten werden zwar keine geringen Antwortzeiten oder hohe Datendurchsätze garantiert, aber alle Anwendungen erhalten ein ausgewogenes Antwortverhalten.

    deadline
    Dieser Scheduler sortiert die I/O-Request anhand der Blocknummer der Daten auf der Festplatte. Damit auch Blöcke mit stark abweichenden Blocknummern bearbeitet werden, erhält jeder Request eine maximale Auslieferungszeit.

    noop
    Der NOOP-Scheduler ist der einfachste Scheduler, die Daten die zuerst kommen werden als erstes geschrieben. Dieser Scheduler ist für intelligente Hardware gedacht, welche das Scheduling selbst übernimmt.

  • smartass
    Ähnlich dem interactive Governor. Hält die CPU bei der möglichst niedrigsten Taktrate wenn der Bildschirm aus ist. Kann Probleme verursachen wenn eine Anwendung viel Leistung benötigt aber der Bildschirm ausgeschaltet ist.


    smoothass
    Ähnlich dem smartass Governor, steigert die Taktrate jedoch aggressiver.


    minmax
    Hält die CPU bei der möglichst niedrigsten Taktrate wenn keine Leistung benötigt wird, diese steigt aber sofort auf die möglichst höchste Taktrate sobald Leistung erforderlich ist.

  • smartass
    Ähnlich dem interactive Governor. Hält die CPU bei der möglichst niedrigsten Taktrate wenn der Bildschirm aus ist. Kann Probleme verursachen wenn eine Anwendung viel Leistung benötigt aber der Bildschirm ausgeschaltet ist.

    Danke! Lasst dem armen chillzz etwas Zeit um die Liste mit Inhalt zu füllen. ;)

  • Kleiner Tipp zu den Smartass (2) Governors. Da sie ja bekanntlich Wakeup Probleme verursachen sollte man die Min Frequenz über SetCPU o.Ä. auf 245Mhz anstatt 128Mhz stellen. Dann sollte das Problem behoben sein.

  • Kleiner Tipp zu den Smartass (2) Governors. Da sie ja bekanntlich Wakeup Probleme verursachen sollte man die Min Frequenz über SetCPU o.Ä. auf 245Mhz anstatt 128Mhz stellen. Dann sollte das Problem behoben sein.

    Das behebt vielleicht das Wakeup Problem, es gibt aber trotzdem noch Probleme mit leistungshungrigen Apps.


    Ich habe immer wieder Probleme mit XiiLive (Internetradio App), die mit dem smartass Governor einfach nicht genug Power hat (vor allem wenn man die interne Streamingengine benutzt). Sobald man den Bildschirm abschaltet kann es zu Aussetzern bei der Wiedergabe kommen.
    Andere Anwendungen könnten da eventuell auch darunterfallen.


    Sollte man vielleicht noch ergänzen, dass die Lösung mit 245Mhz eher für das Wakeup Problem gedacht ist.
    Nicht das ein Nutzer z.B. oben genanntes Problem mit XiiLive hat obwohl er die Taktrate höher gestellt hat.

  • Update

    Ich habe die restlichen Governor Eigenschaften hinzugefügt und im zweiten Post eine Übersicht über die verschiedenen Scheduler angefertigt. Ich hoffe mit diesen Übersichten für ein wenig mehr Klarheit geschafft zu haben. ;)

  • Lulzactive:


    Basiert auf dem "interactive" Governor in Verbindung mit dem "smartass".
    Ein "Screen Off" Profil wird nicht benötig, da die CPU Frequenz automatisch auf eingestellte min. Leistung begrenzt wird.



    Brazilianwax:


    Eine aggressivere Variante des smartass Governors

  • Das sind alles sogenannte Festplatten Scheduler welche die Aufgabe haben, wann und wie was gelesen oder geschrieben werden darf.


    Die Unterschiede der von dir genannten äussert sich nur in unterschiedlicher Priortätenrangfolge. Dieses kann sich auf die Geschwindigkeit vom I/O Speed natürlich auswirken.


    Wie sie sich jetzt im einzelnen unterscheiden kannst du selber nachschlagen wenn du ins Github gehst und dir dort die Dokumentation der einzelnen anschaust.




    Gruß Kitty

  • hmm, also mir sind sie schon untergekommen, jedoch entsinne ich mich nicht mehr in welchem kernel...
    darf ich dich frecherweise vielleicht fragen, ob du n link zu einem kernel-github hast, wo die documentations zu finden sind?


    danke schoma für die aufklärung!