# Welchen I/O-Scheduler nehmen?

## frag-o-mat

Hallo,

welchen I/O-Scheduler (Kernel 2.6.10) würdet ihr für ein Desktop-System empfehlen?

Da sind ja 3 zur Auswahl.

Worin unterscheiden die sich eigentlich?

----------

## Mindphaser

genau das würde mich auch mal intressieren...

----------

## Aldo

Also ich nehm den (Standard)-Antizipatorischen Scheduler.

Was an dem besser oder schlechter ist als an den anderen weiß ich auch nicht.

Man findet auch wenig brauchbare Infos im Netz über die Unterschiede.

Wäre auch über Aufklärung dankbar.

----------

## Der P@te

Im Kernel selber stehen ja ein paar Infos...habe die Tage mal den den letzen genommen. Lief super  :Smile:  Aber genaueres würde mich natürlich auch interessieren.   :Very Happy: 

----------

## c07

Für Desktops ist der CFQ gedacht, der statt auf maximalen Durchsatz auf Gerechtigkeit zwischen den Prozessen optimiert und damit Latenzzeiten vermindert, die beim antizipatorischen IO-Scheduler schon mal in den Sekundenbereich kommen können.

Ich hab vor einiger Zeit auf CFQ umgestellt und bild mir ein, dass seither das System bei Kopieraktionen u.Ä. im Hintergrund tatsächlich flüssiger läuft. Die Hänger, die XFS und Reiser4 manchmal produzieren, sind damit aber nicht ganz weg.

----------

## dakjo

XFS produziert haenger?

Kann ich hier nicht nachvollziehen.

----------

## LinuxSmiley

Ich scheine blind zu sein - wo ist die Einstellung des Schedulers in der Kernel-Konfiguration? Oder habe ich die Option nicht, weil ich den ck-Kernel benutze (2.6.10-ck2)?

----------

## ralph

Device Drivers -> Block Devices -> IO Schedulers

----------

## Lenz

Irgendwie hab ich bei mir alle 3 fest einkompiliert. Kann man irgendwie herausfinden welchen er nun verwendet? Vielleicht sollte ich die überflüssigen zwei rausschmeißen. Welcher nun der geeignetste für ein Desktop-System ist, würde mich auch mal interessieren.

----------

## c07

 *LinuxSmiley wrote:*   

> Ich scheine blind zu sein - wo ist die Einstellung des Schedulers in der Kernel-Konfiguration? Oder habe ich die Option nicht, weil ich den ck-Kernel benutze (2.6.10-ck2)?

 

Zumindest in 2.6.9 sind alle verfügbaren standardmäßig drin (in General Setup -> Standard Kernel Features), können aber nur per Bootparameter (z.B. elevator=cfq ) tatsächlich gewählt werden. In ck gibts AFAIK noch einige mehr zur Auswahl.

Welcher aktiv ist, steht normalerweise irgendwo in dmesg und kann indirekt aus dem Inhalt von /sys/block/*/queue/iosched geschlossen werden, wo man jeweils unterschiedliche Feinjustierungen vornehmen kann.

 *dakjo wrote:*   

> XFS produziert haenger?

 

Selten; vor allem bei einem umount direkt nach einer ausgedehnten Kopieraktion. Bei Reiser4 ist es aber krasser.

----------

## schachti

 *Lenz wrote:*   

> 
> 
> Irgendwie hab ich bei mir alle 3 fest einkompiliert. Kann man irgendwie herausfinden welchen er nun verwendet?
> 
> 

 

cat /sys/block/hda/queue/scheduler liefert Dir eine Liste aller für /dev/hda möglichen IO-Scheduler, der jeweils aktuelle ist in eckigen Klammern markiert. Beim Booten kannst Du einen auswählen, indem Du dem Kernel elevator=XXX übergibst; mögliche Werte für XXX sind as, cfq und deadline.

 *Lenz wrote:*   

> 
> 
> Vielleicht sollte ich die überflüssigen zwei rausschmeißen.
> 
> 

 

Oder als Modul kompilieren, AFAIK unterstützt der aktuelle Kernel ein Ändern des IO-Schedulers im laufenden Betrieb.

 *Lenz wrote:*   

> 
> 
> Welcher nun der geeignetste für ein Desktop-System ist, würde mich auch mal interessieren.
> 
> 

 

Da gehen die Meinungen auseinander. as ist bewährt und eigentlich nicht schlecht, deadline ist etwas kompakter und zeigt daher unter hoher Last (Datenbankserver) etwas bessere Ergebnisse, cfq ist nicht auf Durchsatz, sondern auf geringere Latenzzeiten ausgelegt - das kann auf einem Desktop-System die Arbeit etwas "flüssiger" machen, kostet aber insgesamt gesehen wohl ein wenig Performance (Interaktivität steigt, Durchsatz sinkt).Last edited by schachti on Thu Jan 13, 2005 7:46 pm; edited 1 time in total

----------

## schachti

 *c07 wrote:*   

> 
> 
>  *dakjo wrote:*   
> 
> XFS produziert haenger?
> ...

 

Daran kann der Scheduler nichts ändern. XFS ist so konstruiert, daß es massiv den RAM als Cache nutzt und erst so spät wie möglich auf Platte schreibt; direkt nach umfangreichen Schreibzugriffen stehen daher noch viele Daten im Cache, die vor dem umount geschrieben werden müssen. Das ist auch der Grund, warum man XFS nur mit einer USV einsetzen sollte; aufgrund des agressiven Cachings von XFS ist sonst bei einem Stromausfall Datenverlust vorprogrammiert.

----------

## c07

 *schachti wrote:*   

> XFS ist so konstruiert, daß es massiv den RAM als Cache nutzt und erst so spät wie möglich auf Platte schreibt; direkt nach umfangreichen Schreibzugriffen stehen daher noch viele Daten im Cache, die vor dem umount geschrieben werden müssen.

 

Schon klar, aber deshalb müssten nicht Prozesse blockiert werden, die mit dem umount nichts zu tun haben. Der IO-Scheduler hat damit wohl eh nichts zu tun, sondern es muss ein überlanger Kernellock oder ein Problem vom normalen Scheduler sein (in dem Moment brauchen XFS und Reiser4 auch sehr viel CPU, so dass das womöglich der eigentliche Engpass ist).

----------

## Mindphaser

Benutze seit gestern den CFQ, sehr viel Unterschied merke ich an sich nicht, nur das wenn z.B. Portage am syncen ist, nichts mehr ruckelt, also scheint CFQ für Desktop-System ne gute Sache zu sein  :Smile: 

----------

## sirro

Ich nutze schon seit einiger Zeit (sprich: mehrere Monate) den Deadline IOS und hab damit noch nie Probleme gehabt. Obs damit schneller wird? Keine Ahnung...

BTW: sirro back in action. frohes neues Jahr zusammen  :Smile: 

----------

## Anarcho

Da ich nen Gameserver betreibe (UT2004) wollte ich mal nachfragen welcher Scheduler für solche Zwecke am besten geeignet ist. Eigentlich spielt bei Spieleservern die Latenz eine wichtige Rolle und weniger der Durchsatz, oder übersehe ich da was?

Kann man noch weitere Optimierungen des Kernels bezüglich Gameserver machen, wie etwa das UDP System zu tunen?

----------

## LinuxSmiley

 *c07 wrote:*   

>  *LinuxSmiley wrote:*   Ich scheine blind zu sein - wo ist die Einstellung des Schedulers in der Kernel-Konfiguration? Oder habe ich die Option nicht, weil ich den ck-Kernel benutze (2.6.10-ck2)? 
> 
> Zumindest in 2.6.9 sind alle verfügbaren standardmäßig drin (in General Setup -> Standard Kernel Features), können aber nur per Bootparameter (z.B. elevator=cfq ) tatsächlich gewählt werden. In ck gibts AFAIK noch einige mehr zur Auswahl.

 

cfq ist bei mir standardmäßig aktiv ... in der Kernel-Konfiguration hab ich auch nur die drei bekannten zur Verfügung (d.h. keine zusätzlichen). Danke für die Infos!

----------

## Tobiking

 *Anarcho wrote:*   

> Da ich nen Gameserver betreibe (UT2004) wollte ich mal nachfragen welcher Scheduler für solche Zwecke am besten geeignet ist. Eigentlich spielt bei Spieleservern die Latenz eine wichtige Rolle und weniger der Durchsatz, oder übersehe ich da was?
> 
> Kann man noch weitere Optimierungen des Kernels bezüglich Gameserver machen, wie etwa das UDP System zu tunen?

 

Soweit ich verstanden habe geht es größtenteils bei den I/O Sheuldern nur um den zugriff auf die Festplatte (oder auch andere Hardware ?). Mit Latenz ist da nicht der Ping im Netz gemeint oder sonst was sondern der zugriff auf Hardware und Dateien.

Und das man an udp was tunen könnte glaub ich nicht. Es ist ja nur nen Protokoll für die Netzwerkübertragung und das sollte im normalfall so gut sein wie möglich und es kommt mehr darauf an wie man es nutzt.

----------

## Anarcho

Naja, auch der Zugriff auf die Platte sollte bei Gameservern möglichst schnell ablaufen, z.b. beim nachladen von Maps oder ähnlichem. 

bei udp bin ich mir auch nicht ganz sicher, aber für tcp gibt es einige HOWTOs im internet zum tunen. Daher meine hoffnung.

----------

## c07

Schneller wirds mit CFQ in der Regel nicht (ganz im Gegenteil). Aber der Worst Case bei der Wartezeit wird reduziert.

----------

