Wie kann ich eine Frist als E / A-Planer für USB-Flash-Geräte festlegen, indem ich udev-Regeln verwende? [Duplikat]

0

Mögliches Duplizieren: Die
Udev-Regel funktioniert nicht

Ich habe CFQ als Standard-E / A-Scheduler festgelegt. Wenn ich Daten auf ein Flash-Gerät schreibe, ist die Leistung oft schlecht. Dies ist behoben, wenn ich deadline als I / O-Scheduler für USB-Flash-Geräte verwende. Ich kann den Scheduler nicht immer manuell ändern, oder? Ich halte es für eine gute Idee, udev-Regeln zu schreiben.

Kann mir bitte jemand Regeln schreiben? Ich will:

  1. Wenn ich ein USB-Gerät anschließe, erkenne ich den Typ des Geräts.
  2. Wenn es sich um eine tragbare USB-Festplatte handelt, tun Sie nichts (ich denke, wenn ein Gerät mehr als eine Partition hat, handelt es sich immer um eine tragbare Festplatte).
  3. Wenn es sich um ein USB-Flash-Gerät handelt, legen Sie den Termin als Planer fest.
比尔 比尔
quelle
Hast du das udev-Handbuch gelesen? Haben Sie den udev-Monitor ausprobiert? Haben Sie versucht, eine Regel zu erstellen? Was ist das genaue praktische Problem, das Sie haben? Wir können Ihre Hardware nicht sehen, schreiben also keine Regeln.
Tamara Wijsman
Eigentlich habe ich viele Artikel über USB & udev gelesen. Sie versuchen jedoch nur, neue Geräte von / dev / sdx zu erkennen, unabhängig von einem USB-Gerät oder etwas anderem.
30.
OK. Ich habe viele F ** king-Handbücher gelesen. Und ich weiß jetzt, wie man die Regeln schreibt. Aber udev scheint meine Regeln nicht zu sehen (irgendeine Regel). Es funktioniert überhaupt nicht. Bitte lesen Sie die Frage superuser.com/questions/481748/udev-rule-is-not-working .
1.
Wenn Sie udevadm monitrwie in den Handbüchern beschrieben verwenden würden, würden Sie ??Ihre Regeln nicht einhalten.
Tamara Wijsman

Antworten:

1

Zuerst setzen Sie das Shell-Skript scheduler4usbin $PATH(zB:) /usr/bin:

#!/bin/bash
# Usage: ./script device scheduler

# If your are using util-linux 2.22, you must change this line to:
# fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "doesn't contain a valid partition table"
#
fdisk /dev/$1 -l 2>&1 >/dev/null | grep -q "This doesn't look like a partition table"

# If this device has a partition table.
if (($?==0)); then 
    echo $2 > /sys/block/$1/queue/scheduler
fi

exit

Vergiss nicht chmod +x scheduler4usbzu deinem Drehbuch!

Dann schreiben Sie die Regel in /etc/udev/rules.d/91-change-schduler.rules:

SUBSYSTEMS=="usb", ACTION=="add", KERNEL=="sd?", RUN+="/usr/local/bin/scheduler4usb %k deadline"
比尔 比尔
quelle
1
Stattdessen RUN+="some_script"können Sie die sysfs-Attribute direkt ändern:..., ATTR{queue/scheduler}="deadline"
hurikhan77