Ergänzung:
Um das richtig zu nutzen, muss der I/O-Schedulder mit umgestellt werden.
Habe mal umgestellt auf:
ONDEMAND und NOOP.
mal sehen ob es was wird
3. Was ist ein Scheduler?
In einem Multitasking-Betriebssystem muss es eine Instanz geben, die den Prozessen, die laufen wollen, Rechenzeit zuteilt und sie nach Ablauf der zugeteilten Zeitspanne (Timeslice) wieder „schlafen legt“. Diese Instanz bildet der sog. Scheduler, z.B. beim Öffnen und Schließen von Anwendungen. d.h. wie schnell werden sie geöffnet und wie lange sie im RAM gehalten werden.
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 *
Anticipatory *@+
CFQ *&
Deadline *@+
VR +
Simple +&
BFQ #
Sio &+
Legende:
&=Default(standardmäßigeingestellt)
@=standardmäßigabgestellt
*=imStockkernelvorhanden
+=inQuasarkernelnvorhanden
Noop:
Der Noop-Scheduler ist der einfachste von ihnen. Er ist am Besten geeignet für Speichergeräte, die nicht von mechanische Bewegungen abhängig sind, wie unsere Flash-Laufwerke in unseren SGSII's, um den Datenzugriff zu verwenden. Der Vorteil ist, dass Flash-Laufwerke keine Neuanordnung der I/O-Anfragen im Gegensatz zu normalen Festplatten benötigen. d.h. die Daten, die zuerst kommen, werden auch als erstes geschrieben. Er ist im Grunde kein richtiger Scheduler, da er das Scheduling der Hardware überlässt.
Vorteile:
- Fügt alle eingehenden I/O-Anfragen in eine Wer-zuerst-kommt- mahlt- zuerst-Warteschlange und realisiert Anfragen mit der geringsten Anzahl von CPU-Zyklen, deshalb auch akkufreundlich
- Ist bestens für Flashlaufwerke geeignet, da es zu keinerlei Such-Fehlern kommt
- Guter Datendurchsatz auf db-Systemen
Nachteile:
- die Verringerung der Anzahl der CPU-Zyklen entspricht einem gleichzeitig einhergehendem Leistungsabfall
Anticipatory:
Zwei wichtige Dinge sind hier bezeichnend für diesen Scheduler:
- Das Suchen auf dem Flashlaufwerk geht sehr langsam von Statten
- Schreibvorgänge können zwar jeder Zeit abgearbeitet werden, jedoch werden Lesevorgänge vorgezogen, d.h. dieser Scheduler gibt den Lesevorgängen eine höhere Priorität als den Schreibvorgängen.
Vorteile:
- Anfragen von Lese-Zugriffen werden nie sekundär behandelt, d.h. hat ähnlich gute Leseleistung auf Flashlaufwerken wie der Noop
Nachteile:
- Anfragen von Prozessvorgängen sind nicht immer verfügbar
- Verringerte Schreib-Performance auf High-Performance- Festplatten
CFQ:
Der CFQ – Completely Fair Queuing –, ähnlich wie beim Deadline, verwaltet eine skalierbar durchgehende Prozess-I/O-Warteschlange, d.h. er versucht die verfügbare I/O-Bandbreite fair und gleichmäßig auf alle I/O-Anfragen zu verteilen. Dabei erstellt er eine Statistik zwischen den Blöcken und Prozessen. Durch diese Statistik kann er "erahnen", wann der nächste Block von welchem Prozess angefordert wird, d.h. jede Prozess-Warteschlange enthält synchrone Anfragen von Prozessen, die wiederum abhängig von der Priorität des Ursprungsprozesses ist. Es gibt eine V2 vom CFQ und hat einige Fixes, wie z.B. den I/O-Anfrage-Hunger zu stillen und einige kleine Rückwärtssuchen wurden eingebaut um die Reaktionsfähigkeit zu verbessern.
Vorteile:
- hat das Ziel eine ausgewogene I/O-Performance zu liefern
- am einfachsten einzustellen
- hervorragend auf Multiprozessoren-Systemen
- beste Datenbank-Performance nach dem Deadline
Nachteile:
- Einige User berichteten, dass das Medien-Scanning hierbei sehr sehr lange dauern würde und dies eben durch die faire bzw. gleichmäßige Verteilung der Bandbreite auf die I/O-Operationen während des Bootvorgangs bedingt ist, wobei das Medien-Scanning nicht unbedingt die höchste Priorität haben sollte
- Jitter (worst-case-delay) kann manchmal sehr hoch sein, da die Anzahl der Prozess-Aufgaben untereinander konkurrieren
Deadline:
Dieser Scheduler hat das Ziel, die I/O-Wartezeit einer Prozess-Anfrage zu verringern. Das geschieht anhand der Blocknummern der Daten auf dem Laufwerk. Damit aber auch Blöcke mit stark abweichenden Blocknummern bearbeitet werden, erhält jede Anfrage eine maximale Auslieferungszeit. Dieser Governor ist neben dem BFQ sehr beliebt und in vielen bekannten Kerneln wie Netarchy für das Nexus S enthalten. Er sei zwar besser als der BFQ, aber im Vergleich zum VR soll er schwächer sein.
Vorteile:
- Ist annährend ein Echtzeit-Scheduler.
- Zeichnet sich durch Verringerung der Wartezeit von einzelnen Prozessen aus - Bester Scheduler für Datenbankzugriffen und Abfragen.
- Bandbreitenbedarf eines Prozesses, z.B. wieviel Prozent eine CPU braucht, ist leicht zu berechnen.
- Wie der Noop-Governor hervorragend geeignet für Flashlaufwerke
Nachteile:
- Wenn das System überlastet ist, können eine Reihe von Prozessen verloren gehen, und ist nicht so einfach vorhersehbar
VR:
Im Gegensatz zu anderen Schedulern, werden synchrone und asynchrone Anfragen nicht getrennt behandelt, sondern es wird eine faire bzw. ausgeglichene Frist innerhalb dieser Anfragen verhängt, d.h. die nächste Anfrage, die bedient werden soll, ist abhängig von Abstand der letzten Anfrage. Der VR ist ein sehr guter Scheduler mit Elementen des Deadline-Schedulers. Er soll wahrscheinlich der Beste für MTD-Android-Geräten sein. Er ist derjenige, der die meisten Benchmarkpunkte machen kann, aber er sei auch einer instabilsten Schedulern sein, da seine Leistung schwanke. Mal schwankt sie unterhalb des Durchschnitts, mal schwankt sie oberhalb des Durchschnitts, aber wenn oberhalb, dann ist er der Beste.
Vorteile:
- Ist der beste Scheduler für Benchmarks
Nachteile:
- Performance-Schwankungen können zu unterschiedlichen Ergebnissen führen
- sehr unzverlässig bzw. meistens instabil
Simple:
Wie der Name schon sagt, ist er eher ein simpler bzw. einfacher Scheduler. Speziell für EMMC-Geräte geeignet. Er ist zuverlässig, vielleicht nicht so gut wie der VR, wenn dieser mal einen guten Tag hat, aber er ist trotzalledem sehr leistungsbezogen und gibt sein Bestes. Im Moment ist er der Standard-Scheduler bei Quasar-Kernels.
Vorteile: - nicht bekannt
Nachteile: - nicht bekannt
BFQ:
Anstelle Anfragen in Zeitabschnitte aufzuteilen wie der CFQ, weist der BFQ Budgets auf. Dem Flashlaufwerk wird ein aktiver Prozess gewährt, bis es sein Budget (Anzahl der Sektoren auf dem Flashlaufwerk) aufgebraucht hat. Der BFQ vergibt hohe Budgets an nicht gelesene Aufgaben.
Vorteile:
- Hat eine sehr gute USB-Datentransferrate.
- Sei der beste Scheduler zum Abspielen von HD-Videoaufzeichnungen und Video-Streaming ( da weniger Jitter als CFQ und andere Scheduler)
- Gilt als ein sehr genau arbeitender Scheduler
- Erzielt ca. 30% mehr Datendurchsatz als der CFQ
Nachteile:
- Nicht der beste Scheduler für Benchmarks - Höhere Budgets, die einem Prozess zugewiesen wurden, können die Interaktivität beeinflussen und erhöhte Wartezeit mit sich bringen.
SIO:
Er hat das Ziel, bei minimalem Aufwand eine niedrige Wartezeit bei I/O-Anfragen zu erreichen. Keine Priorität bei Warteschlangen zu setzen, stattdessen einfach die Anfragen zusammenzuführen. Dieser Scheduler ist eine Mischung zwischen dem Noop und dem Deadline. Bei ihm gibt es keine Umstellung oder Sortierung bei Anfragen.
Vorteile:
- Er ist einfach und stabil. - Minimierte Starvations (Hungertod) bei Anfragen
Nachteile:
- Langsame zufällige Lesegeschwindigkeiten auf Flashlaufwerken im Gegensatz zu anderen Schedulern. - Sequentielle Lesegeschwindigkeiten auf Flashlaufwerken auch nicht so gut
Um das richtig zu nutzen, muss der I/O-Schedulder mit umgestellt werden.
Habe mal umgestellt auf:
ONDEMAND und NOOP.
mal sehen ob es was wird
3. Was ist ein Scheduler?
In einem Multitasking-Betriebssystem muss es eine Instanz geben, die den Prozessen, die laufen wollen, Rechenzeit zuteilt und sie nach Ablauf der zugeteilten Zeitspanne (Timeslice) wieder „schlafen legt“. Diese Instanz bildet der sog. Scheduler, z.B. beim Öffnen und Schließen von Anwendungen. d.h. wie schnell werden sie geöffnet und wie lange sie im RAM gehalten werden.
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 *
Anticipatory *@+
CFQ *&
Deadline *@+
VR +
Simple +&
BFQ #
Sio &+
Legende:
&=Default(standardmäßigeingestellt)
@=standardmäßigabgestellt
*=imStockkernelvorhanden
+=inQuasarkernelnvorhanden
Noop:
Der Noop-Scheduler ist der einfachste von ihnen. Er ist am Besten geeignet für Speichergeräte, die nicht von mechanische Bewegungen abhängig sind, wie unsere Flash-Laufwerke in unseren SGSII's, um den Datenzugriff zu verwenden. Der Vorteil ist, dass Flash-Laufwerke keine Neuanordnung der I/O-Anfragen im Gegensatz zu normalen Festplatten benötigen. d.h. die Daten, die zuerst kommen, werden auch als erstes geschrieben. Er ist im Grunde kein richtiger Scheduler, da er das Scheduling der Hardware überlässt.
Vorteile:
- Fügt alle eingehenden I/O-Anfragen in eine Wer-zuerst-kommt- mahlt- zuerst-Warteschlange und realisiert Anfragen mit der geringsten Anzahl von CPU-Zyklen, deshalb auch akkufreundlich
- Ist bestens für Flashlaufwerke geeignet, da es zu keinerlei Such-Fehlern kommt
- Guter Datendurchsatz auf db-Systemen
Nachteile:
- die Verringerung der Anzahl der CPU-Zyklen entspricht einem gleichzeitig einhergehendem Leistungsabfall
Anticipatory:
Zwei wichtige Dinge sind hier bezeichnend für diesen Scheduler:
- Das Suchen auf dem Flashlaufwerk geht sehr langsam von Statten
- Schreibvorgänge können zwar jeder Zeit abgearbeitet werden, jedoch werden Lesevorgänge vorgezogen, d.h. dieser Scheduler gibt den Lesevorgängen eine höhere Priorität als den Schreibvorgängen.
Vorteile:
- Anfragen von Lese-Zugriffen werden nie sekundär behandelt, d.h. hat ähnlich gute Leseleistung auf Flashlaufwerken wie der Noop
Nachteile:
- Anfragen von Prozessvorgängen sind nicht immer verfügbar
- Verringerte Schreib-Performance auf High-Performance- Festplatten
CFQ:
Der CFQ – Completely Fair Queuing –, ähnlich wie beim Deadline, verwaltet eine skalierbar durchgehende Prozess-I/O-Warteschlange, d.h. er versucht die verfügbare I/O-Bandbreite fair und gleichmäßig auf alle I/O-Anfragen zu verteilen. Dabei erstellt er eine Statistik zwischen den Blöcken und Prozessen. Durch diese Statistik kann er "erahnen", wann der nächste Block von welchem Prozess angefordert wird, d.h. jede Prozess-Warteschlange enthält synchrone Anfragen von Prozessen, die wiederum abhängig von der Priorität des Ursprungsprozesses ist. Es gibt eine V2 vom CFQ und hat einige Fixes, wie z.B. den I/O-Anfrage-Hunger zu stillen und einige kleine Rückwärtssuchen wurden eingebaut um die Reaktionsfähigkeit zu verbessern.
Vorteile:
- hat das Ziel eine ausgewogene I/O-Performance zu liefern
- am einfachsten einzustellen
- hervorragend auf Multiprozessoren-Systemen
- beste Datenbank-Performance nach dem Deadline
Nachteile:
- Einige User berichteten, dass das Medien-Scanning hierbei sehr sehr lange dauern würde und dies eben durch die faire bzw. gleichmäßige Verteilung der Bandbreite auf die I/O-Operationen während des Bootvorgangs bedingt ist, wobei das Medien-Scanning nicht unbedingt die höchste Priorität haben sollte
- Jitter (worst-case-delay) kann manchmal sehr hoch sein, da die Anzahl der Prozess-Aufgaben untereinander konkurrieren
Deadline:
Dieser Scheduler hat das Ziel, die I/O-Wartezeit einer Prozess-Anfrage zu verringern. Das geschieht anhand der Blocknummern der Daten auf dem Laufwerk. Damit aber auch Blöcke mit stark abweichenden Blocknummern bearbeitet werden, erhält jede Anfrage eine maximale Auslieferungszeit. Dieser Governor ist neben dem BFQ sehr beliebt und in vielen bekannten Kerneln wie Netarchy für das Nexus S enthalten. Er sei zwar besser als der BFQ, aber im Vergleich zum VR soll er schwächer sein.
Vorteile:
- Ist annährend ein Echtzeit-Scheduler.
- Zeichnet sich durch Verringerung der Wartezeit von einzelnen Prozessen aus - Bester Scheduler für Datenbankzugriffen und Abfragen.
- Bandbreitenbedarf eines Prozesses, z.B. wieviel Prozent eine CPU braucht, ist leicht zu berechnen.
- Wie der Noop-Governor hervorragend geeignet für Flashlaufwerke
Nachteile:
- Wenn das System überlastet ist, können eine Reihe von Prozessen verloren gehen, und ist nicht so einfach vorhersehbar
VR:
Im Gegensatz zu anderen Schedulern, werden synchrone und asynchrone Anfragen nicht getrennt behandelt, sondern es wird eine faire bzw. ausgeglichene Frist innerhalb dieser Anfragen verhängt, d.h. die nächste Anfrage, die bedient werden soll, ist abhängig von Abstand der letzten Anfrage. Der VR ist ein sehr guter Scheduler mit Elementen des Deadline-Schedulers. Er soll wahrscheinlich der Beste für MTD-Android-Geräten sein. Er ist derjenige, der die meisten Benchmarkpunkte machen kann, aber er sei auch einer instabilsten Schedulern sein, da seine Leistung schwanke. Mal schwankt sie unterhalb des Durchschnitts, mal schwankt sie oberhalb des Durchschnitts, aber wenn oberhalb, dann ist er der Beste.
Vorteile:
- Ist der beste Scheduler für Benchmarks
Nachteile:
- Performance-Schwankungen können zu unterschiedlichen Ergebnissen führen
- sehr unzverlässig bzw. meistens instabil
Simple:
Wie der Name schon sagt, ist er eher ein simpler bzw. einfacher Scheduler. Speziell für EMMC-Geräte geeignet. Er ist zuverlässig, vielleicht nicht so gut wie der VR, wenn dieser mal einen guten Tag hat, aber er ist trotzalledem sehr leistungsbezogen und gibt sein Bestes. Im Moment ist er der Standard-Scheduler bei Quasar-Kernels.
Vorteile: - nicht bekannt
Nachteile: - nicht bekannt
BFQ:
Anstelle Anfragen in Zeitabschnitte aufzuteilen wie der CFQ, weist der BFQ Budgets auf. Dem Flashlaufwerk wird ein aktiver Prozess gewährt, bis es sein Budget (Anzahl der Sektoren auf dem Flashlaufwerk) aufgebraucht hat. Der BFQ vergibt hohe Budgets an nicht gelesene Aufgaben.
Vorteile:
- Hat eine sehr gute USB-Datentransferrate.
- Sei der beste Scheduler zum Abspielen von HD-Videoaufzeichnungen und Video-Streaming ( da weniger Jitter als CFQ und andere Scheduler)
- Gilt als ein sehr genau arbeitender Scheduler
- Erzielt ca. 30% mehr Datendurchsatz als der CFQ
Nachteile:
- Nicht der beste Scheduler für Benchmarks - Höhere Budgets, die einem Prozess zugewiesen wurden, können die Interaktivität beeinflussen und erhöhte Wartezeit mit sich bringen.
SIO:
Er hat das Ziel, bei minimalem Aufwand eine niedrige Wartezeit bei I/O-Anfragen zu erreichen. Keine Priorität bei Warteschlangen zu setzen, stattdessen einfach die Anfragen zusammenzuführen. Dieser Scheduler ist eine Mischung zwischen dem Noop und dem Deadline. Bei ihm gibt es keine Umstellung oder Sortierung bei Anfragen.
Vorteile:
- Er ist einfach und stabil. - Minimierte Starvations (Hungertod) bei Anfragen
Nachteile:
- Langsame zufällige Lesegeschwindigkeiten auf Flashlaufwerken im Gegensatz zu anderen Schedulern. - Sequentielle Lesegeschwindigkeiten auf Flashlaufwerken auch nicht so gut