Linux bietet ausgereifte Möglichkeiten Ressourcen mit Prioritäten zuzuweisen. Dafür sind die „scheduler“ (I/O und CPU) verantwortlich die durch die vielen Tools Informationen bekommen wie Ressourcen am effektiv zugewiesen werden sollten.
I/O-Scheduler weisen die begrenzten Ressourcen der angeschlossenen Speichersysteme zu.
Um einen bestimmten Scheduler beim Boot zum Standard zu machen muss dem kernel das folgende Argument übergeben werden (am Beispiel deadline): elevator=deadline.
Natürlich geht das auch zur Laufzeit (seit Linux Kernel 2.6.10): Jedem Blockgerät kann über das sysfs 1)ein anderer scheduler zugewiesen werden.
/sys/block/<device>/queue/iosched, also z.B. für das Gerät sda: cat /sys/block/sda/queue/scheduler
noop anticipatory deadline [cfq]
Die Ausgabe zeigt dass noop, anticipatory, deadline, und cfq einstellbar sind, wobei die eckigen Klammern die aktuelle Einstellung anzeigen (hier: cfq).
echo deadline > /sys/block/sda/queue/scheduler
Mit diesem Shellscript können alle zulässigen Geräte auf den deadline-Scheduler umgestellt werden:
#!/bin/bash scheduler="deadline" if [ "`id -u`" -ne 0 ]; then echo you are not root! exit 1 fi for dev in /sys/block/* do # show available scheduler for device # cat $dev/queue/scheduler grep $scheduler "$dev/queue/scheduler" > /dev/null if [ $? -eq 0 ] then echo "setting scheduler $scheduler to $dev." echo $scheduler > $dev/queue/scheduler # cat $dev/queue/scheduler else echo "scheduler $scheduler not allowed for $dev. Allowed schedulers are: `cat "$dev/queue/scheduler"`" fi done
mount none /sys -t sysfs
News
Navigation