nr_requests je parametr pro blokové zařízení, řídí maximální počet požadavků, které mohou být přiděleny v blokové vrstvě pro požadavky na čtení nebo zápis, výchozí hodnota je 128 . Občas může být doporučeno upravit hodnotu, obecně řečeno:
- Zvýšení hodnoty zlepší propustnost I/O, ale také zvýší využití paměti.
- Snížení hodnoty prospěje aplikacím v reálném čase, které jsou citlivé na latenci, ale také sníží propustnost I/O.
Tento příspěvek vysvětluje, jak nastavit parametr trvale při restartování systému.
1. Vytvořte nové pravidlo udev.
Vytvořte například soubor /etc/udev/rules.d/71-nr-requests.rules , s následujícím obsahem:
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"
Výše uvedená pravidla nastaví nr_requests na 256 pro všechna sd* zařízení, pokud potřebujete některá zakázat (např. sda a sdb), použijte pravidla jako:
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. Použijte pravidlo
Před aplikací pravidla ověřte hodnotu parametru „nr_requests“:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:128 /sys/block/sdb/queue/nr_requests:128
Aplikujte pravidlo na CentOS/RHEL 6 nebo vyšší:
# udevadm trigger
Použijte to v CentOS/RHEL 5
# udevtrigger
Po použití pravidla ověřte hodnotu parametru „nr_requests“:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:256 /sys/block/sdb/queue/nr_requests:256