Ich würde vorschlagen, dass Sie udev verwenden, um Parameter für die SSD-Festplatten festzulegen. Auf diese Weise können Sie einen bestimmten Warteschlangenplaner konfigurieren, der besser für SSD usw. geeignet ist. Sie können auch Parameter basierend auf vielen Parametern nur auf einige der Geräte anwenden.
Sie können die spezifischen Attribute erhalten, die für die Übereinstimmung mit Ihren Geräten erforderlich sind (z. B. das Festplattenmodell und der Hersteller), indem Sie Folgendes ausführen:
udevadm info -a -p /sys/block/sda
und überprüfen Sie alle ATTR-Paare für Ihr Blockgerät.
Ein weiterer Vorteil ist die Möglichkeit, die Parameter für steckbare Festplatten (z. B. in Gehäusen oder Hotswap-Einschüben) festzulegen. Diese Einstellung wird auf alle neuen Geräte angewendet, sofern die Geräteparameter übereinstimmen.
Hier ist ein Beispiel, um einen bestimmten Scheduler für Intel-SSDs anzuwenden, Ihren gewünschten Readahead-Wert (4096 Blöcke = 2048 KB), und auch einen anderen Scheduler für alle anderen SSDs:
cat /etc/udev/rules.d/99-ssd.rules
# http://unix.stackexchange.com/a/71409/36574
# Setting specific kernel parameters for a subset of block devices (Intel SSDs)
SUBSYSTEM=="block", ATTRS{model}=="Intel SSDSC*", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="2048", ATTR{queue/scheduler}="deadline"
# for all other non-rotational block devices set a scheduler to 'noop' and readahead to 1024KB
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{bdi/read_ahead_kb}="1024", ATTR{queue/scheduler}="noop"
Nach dem Speichern der Datei können Sie testen, ob Ihre Regel mit dem Gerät übereinstimmt und was udev mit udevadm macht:
udevadm test --action=add /sys/block/sda
Dies gibt alle Regeln aus, die udev lädt, welche übereinstimmt, welche nicht und welche Entscheidungen udev treffen wird, wenn das Gerät angeschlossen ist.
Hoffe das hilft.