Spider1996
Ehrenmitglied
- 681
Hallo Android-Hilfe Userinnen und User,
Hier eine Sammlung aller bekannter Governors & Schedulers. Hierzu zählen ausschließlich die Allgemeinen d.h. der Governor von Entwickler X mit Kernel Y wird hier nicht aufgezählt. Für Verhalten und Diskussionen über dessen dann bitte im jeweiligen ROM oder Kernel Thread führen.
Inhaltsverzeichnis
__________________
Zum Wiki Eintrag: Governor
1. Was ist ein Governor?
Ein Governor ist ein Treiber zur Regulierung der CPU-Frequenz. Er entscheidet, wann bei Vollauslastung die maximale, mittlere oder minimale Frequenz erreicht wird. Er entscheidet, wann, wie und wie lange die CPU reagiert und trotzdem akkusparend und weich arbeitet. Durch geschicktes verwenden der verschiedenen Regler lässt sich beides optimieren.
Es gibt eine Menge von Governors. Manche sind für Einkern-Prozessoren und manche für Mehrkern-Prozessoren ausgelegt. In den Stock Kernels gibt es meistens nur eine geringe Auswahl (ca 5 Stück), hier helfen Custom Kernel.
2. Welche Governors gibt es?
Grundregler:
Erweiterte Grundregler:
Basierend auf...
...OnDemand
...Interactive
...Conservative
__________________
Zum Wiki Eintrag: Scheduler
3. Was ist ein Scheduler?
In einem Betriebssystem, welches mehrere Abläufe auf einmal geben kann, muss es eine Instanz geben, welche Rechenzeit zuteilt und sie nach Ablauf der zugeteilten Zeitspanne (Timeslice) wieder schließt. Diese Instanz bilder der Scheduler. Beispiel: Wird eine Anwendung geöffnet oder geschlossen, regelt der Scheduler wie schnell dies geschieht und wie lange sie noch im RAM gehalten wird.
I/O-Scheduler können viele Zwecke haben wie:
Zeit beim Suchen auf der Festplatte zu minimieren.
Prioritäten setzen bei bestimmten Prozess-Anfragen.
Einen bestimmten Teil der Bandbreite des Datenträgers zu jedem laufenden Prozess zu regulieren.
Bestimmte Prozess-Anfragen innerhalb einer bestimmten Zeit zu garantieren.
4. Welche Scheduler gibt es?
__________________
5. Wie kann ich den Governor und/oder Scheduler ändern?
Manche ROMs bieten dies in den Einstellungen (zwar nicht ausführlich aber die Basis der Scheduler ist änderbar). Einstellungen -> Leistung/Performance -> CPU-Gouverneur/Scheduler
Dies varriert je nach Gerät und ROM. Ein CustomROM bietet dies meistens an. Daher einfach mal in den Einstellungen suchen.
Im GooglePlay Store gibt es dafür Haufenweise Anwendungen, die dies automatisch für einen erledigen. Die Bekanntesten sind:
SetCPU, VoltageControl
Danksagungen und Quellen:
Zum Diskussionsthread: Diskussion zu Governors & Schedulers - Android-Hilfe.de
Hier eine Sammlung aller bekannter Governors & Schedulers. Hierzu zählen ausschließlich die Allgemeinen d.h. der Governor von Entwickler X mit Kernel Y wird hier nicht aufgezählt. Für Verhalten und Diskussionen über dessen dann bitte im jeweiligen ROM oder Kernel Thread führen.
Inhaltsverzeichnis
- Was ist ein Governor?
- Welche Governors gibt es?
- Was ist ein Scheduler?
- Welche Scheduler gibt es?
- Wie kann ich den Governor und/oder Scheduler ändern?
__________________
Zum Wiki Eintrag: Governor
1. Was ist ein Governor?
Ein Governor ist ein Treiber zur Regulierung der CPU-Frequenz. Er entscheidet, wann bei Vollauslastung die maximale, mittlere oder minimale Frequenz erreicht wird. Er entscheidet, wann, wie und wie lange die CPU reagiert und trotzdem akkusparend und weich arbeitet. Durch geschicktes verwenden der verschiedenen Regler lässt sich beides optimieren.
Es gibt eine Menge von Governors. Manche sind für Einkern-Prozessoren und manche für Mehrkern-Prozessoren ausgelegt. In den Stock Kernels gibt es meistens nur eine geringe Auswahl (ca 5 Stück), hier helfen Custom Kernel.
2. Welche Governors gibt es?
Grundregler:
- Powersafe: Gegenteil von Performance: Prozessor steht dauerhaft auf minimaler Taktung. Nicht intelligent, Minimaler Energieverbrauch, dafür kein flüssiges Ergebnis möglich.
- Performance: Gegenteil von Powersafe: Prozessor steht dauerhaft auf maximaler Taktung. Nicht intelligent, Maximaler Energieverbrauch, dafür aber am flüssigsten. Nicht für den Normalbetrieb, eher für Demogeräte und Benchmarks geeignet!
- MinMax: Regelt nur minimal. Bei ihm gibt es entweder 1 (maximale Frequenz) oder 0 (minimale Frequenz). Zwischenschritte gibt es nicht.
- Userspace: Stellt den Apps genau die Ressourcen zu Verfügung, die es braucht. Oft im Desktopbereich vorzufinden
Erweiterte Grundregler:
- OnDemand: Meistens ist dieser auf Grund seiner ausgewogenen Einstellungen die Standardauswahl. Er bietet eine gute Mitte zwischen Akkulaufzeit und Performance. Er bietet jedoch kein Profil bei einem ausgeschaltetem Display oder für das Aufwecken des Geräts. Er reagiert damit mit hohen Sprüngen zur Leistung
- Interactive: Die meisten arbeiten des Prozessors werden interaktiv geregelt und passen sich schnell an den Einsatzzweck an. Er bleibt jedoch oft länger auf maximaler Taktung stehen. Dies beeinträchtigt die Akkuleistung, jedoch ist er sparsamer und leistungsfähiger als OnDemand. Anstatt von Anfragen in jedem Intervall beim OnDemand, bestimmt der Interactive wie er hoch skaliert, wenn die CPU aus dem Standby aufgeweckt wird.
- Conservative: Er ist ein (um etwa die hälfte) langsamerer OnDemand, der nach Bedarf nach oben taktet. Er zieht es jedoch vor, im unteren Taktbereich zu bleiben.
Basierend auf...
...OnDemand
- OnDemandX: Ein OnDemand mit Aufweck-Profilen. Er soll noch akkufreundlicher sein als seine Basis. Hier spielt der I/O-Scheduler eine große Rolle
- Lagfree: Die Frequenz wird bei ihm weich herauf oder herab gesetzt. Er steigt also stufenweise und überspringt keine Frequenz bei der Skalierung. Hierzu kann es jedoch zu rucklern kommen, jedoch ist er akkufreundlicher als seine Basis, der OnDemand.
- Lazy: Hat einen zusätzlichen Parameter "min_time_state", was die minimale Zeit der CPU auf einer Frequenz vor der Skalierung beibehält. Hiermit werden Instabilitäten vermieden. Er stellt öfters Anfragen als OnDemand, wechselt aber erst nach dem "min_time_state". Des weiteren bringt er Einstellungen für den Standby mit.
- Intellidemand: (=Intelligent OnDemand) Er verhält sich anders je nach GPU-Nutzung. Ist die GPU beschäftigt, verhält er sich wie ein Ondemand. Ist sie im Leerlauf, begrenzt der Intellidemand die maximale Frequenz abhängig von der verfügbaren Frequenzen im Gerät bzw Kernel. Dies nennt man Browsing-Modus. Er enthält auch teile des Interactives.
- HotPlug: Er ist ausschließlich auf Multicoregeräten vorhanden, hat die Fähigkeit, nicht genutzte Kerne abzuschalten, anstatt sie nur auf 0 herunter zu takten. Dies spart Strom.
- Pegasusq/Pegasusd: Er basiert auf HotPlug. Laufende Prozesse werden in eine Warteschlange gestellt und abgearbeitet. Beendete Prozesse werden bevorzugt und zuerst bearbeitet.
...Interactive
- InteractiveX: Ein Interactive mit Aufweck-Profilen.
- Smartass: Vorgänger des SmartassV2. Er begrenzt die maximale Frequenz, wenn der Bildschirm ausgeschaltet ist. Er ist nicht sehr akkufreundlich, da er bei eingeschaltetem Display eine hohe minimal Frequenz hat, welche höher ist als die Skalierung während dem Standby.
- SmartassV2: Er ist eine überarbeitete Version den Smartass. Er verfolgt aggressiv das Ziel eine ideale Frequenz zu erreichen und verliert dieses weniger aggressiv. Er benutzt ideale Frequenzen beim anschalten und abschalten des Displays. Ist das Display ausgeschaltet, so skalliert der Governor abwärts sehr schnell. Es gibt im Gegensatz zum Smartass keine Obergrenze für die Frequenz, wenn das Display ausgeschaltet ist. Hier soll ein Gleichgewicht zwischen Leistung und Akkulaufzeit bestehen.
- Smoothass: Dieser Governor verhält sich wie der Smartass, nur das dieser flotter skaliert. Er reagiert daher weicher und schneller, dies kostet aber mehr Akku.
- SavagedZen: Er ist ähnlich wie der SmartassV2. Er erzielt eine gute Balance zwischen Leistung und Akkuverbrauch.
- BrazillianWax: Auch dieser ist ähnlich wie der SmartassV2, skaliert aber aggressiver hoch, was mehr Leistung und Akkuverbrauch mitbringt.
- Lulzactive: Bei einer Arbeitslast von 60%=<, skaliert die CPU nach oben. Ist die Arbeitslast 60%>, skaliert sie herunter. Wenn der Bildschirm ausgeschaltet ist, wird die niedrigste skalierbare Frequenz eingestellt und darauf gesperrt
...Conservative
- Scary: Er basiert auf Conservative, hat aber Elemente des Smartass, der wiederum als einer der schnellsten Skalierfähigkeiten hat.
- Lionheart: Ein optimierter Conservative-Governor. Er ist auf extreme Reaktionsfähigkeit und Leistung getrimmt, auf kosten der Akkuleistung.
- LinonheartX: Lionheart mit Aufweck-Profilen.
__________________
Zum Wiki Eintrag: Scheduler
3. Was ist ein Scheduler?
In einem Betriebssystem, welches mehrere Abläufe auf einmal geben kann, muss es eine Instanz geben, welche Rechenzeit zuteilt und sie nach Ablauf der zugeteilten Zeitspanne (Timeslice) wieder schließt. Diese Instanz bilder der Scheduler. Beispiel: Wird eine Anwendung geöffnet oder geschlossen, regelt der Scheduler wie schnell dies geschieht und wie lange sie noch im RAM gehalten wird.
I/O-Scheduler können viele Zwecke haben wie:
Zeit beim Suchen auf der Festplatte zu minimieren.
Prioritäten setzen bei bestimmten Prozess-Anfragen.
Einen bestimmten Teil der Bandbreite des Datenträgers zu jedem laufenden Prozess zu regulieren.
Bestimmte Prozess-Anfragen innerhalb einer bestimmten Zeit zu garantieren.
4. Welche Scheduler gibt es?
- Noop: Er ist der einfachste. Er eignet sich am besten für Geräte, die nicht von mechanischen Bewegungen abhängig sind. Er ist eigentlich kein richtiger Scheduler. Er überlässt dies der Hardware.
- Vorteile:
- Alle Anfragen kommen in eine Warteschlange und die mit der geringsten Anzahl von CPU-Zyklen werden zuerst abgearbeitet
- Für Flashlaufwerke geeignet, da keine Suchfehler
- Guter Datendurchsatz auf DB-Systemen
- Nachteile:
- Die Verringerung der Anzahl der CPU-Zyklen entspricht einem gleichzeitig einhergehendem Leistungsabfall
- Vorteile:
- Simple: Wie der Name schon sagt. Sortiert nicht. Arbeitet so einfach wie nur möglich.
- Anticipatory: Er ist auf Flashlaufwerken sehr langsam. Schreibvorgänge werden jeder Zeit abgearbeitet, jedoch werden Lesevorgänge vorgezogen, da er diesen eine höhere Priorität zuordnet.
- Vorteile:
- Anfragen von Lese-Zugriffen werden immer zuerst abgearbeitet. Daher hat er eine gute Leseleistung
- Nachteile:
- Anfragen von Prozessvorgängen sind nicht immer verfügbar
- Verringerte Schreib-Performance, da der Lesezugriff zuerst bearbeitet wird
- Vorteile:
- CFQ: Completely Fair Queuing, Er versucht die verfügbare I/O-Bandbreite fair und gleichmäßig auf alle Anfragen zu verteilen. Dabei erstellt er eine Statistik zwischen den Blöcken und Prozessen und erahnt anschließend, wann der nächste Block von welchem Prozess angefordert wird.
- Vorteile:
- Ausgewogene Performance
- Sehr einfach einzustellen
- Hervorragend auf Multicore-Systemen
- Gute DB-Performance
- Nachteile:
- Media-Scanner braucht manchmal sehr lange durch die "faire" Behandlung, welche auch beim Booten besteht
- Jitter, der Worst-Case-Delay kann manchmal sehr hoch sein, da die Anzahl der Prozess-Aufgaben untereinander konkurrieren
- Vorteile:
- BFQ: Anstelle Anfragen in Zeitabschnitte aufzuteilen wie der CFQ, weist er Budgets auf. Dem Flashlaufwerk wird ein aktiver Prozess gewährt, bis es sein Budget (Anzahl der Sektoren auf dem Flashlaufwerk) aufgebraucht hat. Er vergibt hohe Budgets an nicht gelesene Aufgaben.
- Vorteile:
- Gute USB-Datentransferrate
- Bester Scheduler zum Abspielen von HD-Videos
- Sehr genau
- ca. 30% mehr Datendurchsatz als der CFQ
- Nachteile:
- Nicht für Benchmarks geeignet
- Vorteile:
- Deadline: Er soll die Wartezeit einer Prozess-Anfrage verringern. Dies geschieht anhand der Blocknummern der Daten auf dem Laufwerk.Damit auch Blöcke mit stark abweichenden Blocknummern bearbeitet werden, erhält jede Anfrage eine maximale Auslieferungszeit.
- Vorteile:
- Ist annähernd ein Echtzeit-Scheduler
- Bester Scheduler für DB-Zugriffe und Abfragen
- Verringerung der Wartezeit von einzelnen Prozessen
- Gut geeignet für Flashlaufwerke
- Nachteile:
- Es können Prozesse verloren gehen, wenn das System überlastet ist. Dies ist nicht so einfach vorhersehbar.
- Vorteile:
- SIO: Er soll bei minimalem Aufwand, eine niedrige Wartezeit erreichen. Keine Prioritäten, er führt die Anfragen einfach zusammen durch. Eine Mischung aus Noop und Deadline.
- Vorteile:
- Einfach und Stabil
- Nachteile:
- Langsame/Zufällige Lesegeschwindigkeiten bei Flashlaufwerken
- Vorteile:
- ROW: Steht für Read Over Write. Wurde für Mobilgeräte entwickelt und versucht immer zuerst zu lesen und danach zu schreiben. Sind in der Warteschlange Leseanfragen, werden diese nicht abgelehnt, sondern einfach behalten.
- Vorteile:
- Bearbeitet Lesende Anfragen immer bevorzugt
- Lehnt nie Anfragen ab, behält diese einfach
- Nachteile:
- Vorteil ist gleich auch Nachteil: Bearbeitet Lesende Anfragen immer bevorzugt
- Vorteile:
- VR: Er behandelt synchrone und asynchrone Anfragen zusammen. Die nächste abgearbeitete Anfrage, ist abhängig vom Abstand der letzten Anfrage. Er kann am meisten bei Benchmarks heraus holen, ist aber dafür sehr instabil.
- Vorteile:
- Bester Scheduler für Benchmarks
- Nachteile:
- Performance-Schwankungen, daher manchmal auch schlechte Ergebnisse
- sehr instabil
- Vorteile:
- test-iosched: Test Scheduler. Ist eine Kopie vom NOOP Scheduler mit 2 Kanälen. Einen Testkanal und einen nicht-Test Kanal. Er testet "Block-Device" indem er spezifische Anfragen sendet und gibt ein PASS/FAIL zur passenden Antwort aus. Jeder Test wird von debugfs überwacht. Er ist nur aktiviert wenn CONFIG_DEBUG_FS definiert ist.
- Vorteile:
- Für Entwickler?
- Nachteile:
- ?
- Vorteile:
__________________
5. Wie kann ich den Governor und/oder Scheduler ändern?
Manche ROMs bieten dies in den Einstellungen (zwar nicht ausführlich aber die Basis der Scheduler ist änderbar). Einstellungen -> Leistung/Performance -> CPU-Gouverneur/Scheduler
Dies varriert je nach Gerät und ROM. Ein CustomROM bietet dies meistens an. Daher einfach mal in den Einstellungen suchen.
Im GooglePlay Store gibt es dafür Haufenweise Anwendungen, die dies automatisch für einen erledigen. Die Bekanntesten sind:
SetCPU, VoltageControl
Danksagungen und Quellen:
- Thread im Samsung Galaxy S2 Bereich Wer bei mir ein Danke da lässt muss dies auch hier tun!
- Julian M. mit seinem Thead von AndroidPit
- knzo und droidphile von denen er die Daten hat:
Zum Diskussionsthread: Diskussion zu Governors & Schedulers - Android-Hilfe.de
Zuletzt bearbeitet: