Les nr_requests est un paramètre pour le périphérique de bloc, il contrôle le nombre maximal de demandes pouvant être allouées dans la couche de bloc pour les demandes de lecture ou d'écriture, la valeur par défaut est 128 . Parfois, il peut être suggéré d'ajuster la valeur, de manière générale :
- L'augmentation de la valeur améliore le débit d'E/S, mais augmente également l'utilisation de la mémoire.
- Diminuer la valeur profitera aux applications en temps réel sensibles à la latence, mais cela diminuera également le débit d'E/S.
Cet article explique comment définir le paramètre de manière permanente lors des redémarrages du système.
1. Créez une nouvelle règle udev.
Par exemple, créez le fichier /etc/udev/rules.d/71-nr-requests.rules , avec le contenu suivant :
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"
Les règles ci-dessus définiront nr_requests sur 256 pour tous les périphériques sd*, si vous devez en mettre certains sur liste noire (par exemple, sda et sdb), utilisez les règles telles que :
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. Appliquer la règle
Avant d'appliquer la règle, vérifiez la valeur du paramètre "nr_requests" :
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:128 /sys/block/sdb/queue/nr_requests:128
Appliquez la règle sur CentOS/RHEL 6 ou supérieur :
# udevadm trigger
Utilisez ceci dans CentOS/RHEL 5
# udevtrigger
Après avoir appliqué la règle, vérifiez la valeur du paramètre "nr_requests" :
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:256 /sys/block/sdb/queue/nr_requests:256