====== I/O Schedulers ====== \\ ===== Allgemeines ===== Unter Linux gibt es im Grunde drei verschiedene Schedulers. * CFQ * Deadline * NOOP \\ ==== Erklärung und Nutzung ==== Nur eine sehr kurze Erklärung dazu. \\ **CFQ (Completely fair queuing)** \\ * Faire Aufteilung von IOs auf aktive Prozesse * Die Fairness wird in kürzere oder längere IO Schedulers verteilt. Die Bandbreite wird hier nicht verändert. Die Bandbreite bleibt immer voll erhalten. * Periodische Abarbeitung \\ **Deadline** * Jeder Request wird mit einer Ablaufzeit versehen bis wann dieser abgearbeitet werden muss. * Read Requests werden höher behandelt als Write. \\ **NOOP** * Alle IOs werden in eine FIFO-Queue geschoben und diese wird abgearbeitet * IO Merges werden durchgeführt um Seek Time zu sparen * Eine Sortierung der IOs findet nicht statt \\ ===== Einsatz ===== * CFQ - Bei vielen Distros der Standard. Großer Funktionsumfang. Auf VMs oder SSD oft langsam. * Deadline - Weniger Funktionen jedoch flotter. Empfohlen auf Hypervisoren oder Systemen die schnellen IO benötigen. PVE verwendet diesen zB als Default * NOOP - Sehr schnell. Wird für SSDs empfohlen. Auch auf VMs eine gute Wahl wenn diese voll virtualisiert sind. \\ Im Grunde muss man sagen das jede Config getestet werden sollte. Je nachdem wie gut die Performance sein soll und um was für ein System es sich handelt. \\ Anzeigen des Schedulers Dies muss man sich pro Platte ansehen. \\ Hier ein Beispiel mit der Platte /dev/sda cat /sys/block/sdb/queue/scheduler \\ ===== Parameter ===== Hier ein paar Parameter die man setzten kann zum testen echo 0 > /sys/block/sdb/queue/rotational echo noop > /sys/block/sdb/queue/scheduler echo 1024 > /sys/block/sdb/queue/nr_requests echo 0 > /sys/block/sdb/queue/add_random echo 2048 > /sys/block/sdb/queue/max_sectors_kb