IO Tuning
IO Tuning mit Schedulers und Elevators
Die Lektüre der Red Hat Enterprise Linux 5 IO Tuning Guide motiviert mich, verschiedene Benchmarks mit einem für unsere Verhältnisse typischen System durchzuführen.
"Unsere Verhältnisse" definiert sich folgendermassen:
- RAID-1
- Multicore
- OpenVZ Virtualisierung
- Zope Datenbanken mit Plone
- ev. Varnish Cache
Ich kann mir gut vorstellen, dass es bei verschiedenen Schedulern grosse Unterschiede gibt. Vor allem, da die Architektur mit Zope und Plone ja nicht das typische Webserver Szenario darstellt.
Es gibt unter Linux aktuell die folgenden 4 Scheduler zur Auswahl (mit cfq als Standard):
- cfq
"completely fair queueing" bewirkt vereinfacht ausgedrückt, dass IO Bandbreite auf allen Prozessen gleich verteilt wird. Dies ist bei Red Hat die Standardauswahl. - deadline
Jede Anfrage erhält eine Deadline. Wenn die erreicht wird, wird sie erfüllt, egal, wo sich die Disk gerade befindet. Andere Anfragen, die durch in der Nähe liegende Diskzugriffe erfüllt werden können, werden dann auch gleich erledigt. Dieser Scheduler garantiert eine Antwortzeit für jede Anfrage. - anticipatory
Auf Deutsch "vorausschauend". Statt dass der Scheduler nach der Erfüllung einer Anfrage gleich zur nächsten Tagesordnung hüpft, bleibt er noch ganz kurz stehen und schaut, ob es noch was gibt, das er für diese Anwendung tun kann. Das kann er dann auch gleich erledigen, wenn er schon mal hier ist. Der Scheduler verliert also weniger Zeit mit hin- und herrennen. Empfiehlt sich eigentlich nur für Maschinen, die wenig externe Anfragen erhalten, also z.B. Desktops oder Compiler-Server. - noop
Den braucht man eigentlich nur auf Flashdisks oder wenn das Disksystem ein totales Tuning direkt der Hardware ermöglicht.

