Le nr_request è un parametro per il dispositivo a blocchi, controlla le richieste massime che possono essere allocate nel livello di blocco per le richieste di lettura o scrittura, il valore predefinito è 128 . Occasionalmente, può essere suggerito di regolare il valore, in generale:
- L'aumento del valore migliorerà il throughput di I/O, ma aumenterà anche l'utilizzo della memoria.
- Diminuire il valore andrà a vantaggio delle applicazioni in tempo reale sensibili alla latenza, ma diminuisce anche il throughput di I/O.
Questo post spiega come impostare il parametro in modo permanente durante i riavvii del sistema.
1. Crea una nuova regola udev.
Ad esempio, crea il file /etc/udev/rules.d/71-nr-requests.rules , con il seguente contenuto:
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"
Le regole sopra imposteranno nr_requests su 256 per tutti i dispositivi sd*, se hai bisogno di inserirne alcuni nella blacklist (ad es. sda e sdb), usa le regole come:
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. Applica la regola
Prima di applicare la regola verificare il valore del parametro “nr_requests”:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:128 /sys/block/sdb/queue/nr_requests:128
Applica la regola su CentOS/RHEL 6 o versioni successive:
# udevadm trigger
Usalo in CentOS/RHEL 5
# udevtrigger
Dopo aver applicato la regola verificare il valore del parametro “nr_requests”:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:256 /sys/block/sdb/queue/nr_requests:256