Die nr_requests ist ein Parameter für Blockgerät, er steuert die maximale Anzahl von Anfragen, die in der Blockschicht für Lese- oder Schreibanfragen zugewiesen werden können, der Standardwert ist 128 . Gelegentlich kann vorgeschlagen werden, den Wert anzupassen, allgemein gesagt:
- Eine Erhöhung des Werts verbessert den E/A-Durchsatz, erhöht aber auch die Speichernutzung.
- Das Verringern des Werts kommt den latenzempfindlichen Echtzeitanwendungen zugute, verringert aber auch den E/A-Durchsatz.
In diesem Beitrag wird erläutert, wie Sie den Parameter dauerhaft über Systemneustarts hinweg festlegen.
1. Erstellen Sie eine neue udev-Regel.
Erstellen Sie beispielsweise die Datei /etc/udev/rules.d/71-nr-requests.rules , mit folgendem Inhalt:
SUBSYSTEM!="block", GOTO="end_rule" ENV{DEVTYPE}=="partition", GOTO="end_rule" ACTION!="add|change", GOTO="end_rule" KERNEL=="sd*", ATTR{queue/nr_requests}="256" LABEL="end_rule"
Die obigen Regeln setzen nr_requests für alle sd*-Geräte auf 256, wenn Sie einige auf die schwarze Liste setzen müssen (z. B. sda und sdb), verwenden Sie die Regeln wie:
SUBSYSTEM!="block", GOTO="end_rule" ENV{DEVTYPE}=="partition", GOTO="end_rule" ACTION!="add|change", GOTO="end_rule" KERNEL=="sda|sdb", GOTO="end_rule" KERNEL=="sd*", ATTR{queue/nr_requests}="256" LABEL="end_rule"
2. Regel anwenden
Überprüfen Sie vor dem Anwenden der Regel den Wert des Parameters „nr_requests“:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:128 /sys/block/sdb/queue/nr_requests:128
Wenden Sie die Regel auf CentOS/RHEL 6 oder höher an:
# udevadm trigger
Verwenden Sie dies in CentOS/RHEL 5
# udevtrigger
Überprüfen Sie nach dem Anwenden der Regel den Parameterwert „nr_requests“:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:256 /sys/block/sdb/queue/nr_requests:256