nr_requests 是块设备的一个参数,它控制可以在块层中为读或者写请求分配的最大请求,默认值为 128 。
偶尔可能会建议调整该值,一般来说:
- 增加该值将提高 I/O 吞吐量,但也会增加内存使用量。
- 降低该值将有利于对延迟敏感的实时应用程序,但也会降低 I/O 吞吐量。
这篇文章详细说明了如何在系统重新启动后永久设置该参数。
1. 创建一个新的 udev 规则。
例如,创建文件 /etc/udev/rules.d/71-nr-requests.rules ,内容如下:
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"
上述规则会将所有 sd* 设备的 nr_requests 设置为 256,如果我们需要将某些设备(例如 sda 和 sdb)列入黑名单,请使用以下规则:
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"
欢迎 on
it
road
2. 应用规则
在应用规则之前验证“nr_requests”参数的值:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:128 /sys/block/sdb/queue/nr_requests:128
在 CentOS/RHEL 6 或者更高版本上应用规则:
# udevadm trigger
在 CentOS/RHEL 5 中使用它
# udevtrigger
应用规则后验证“nr_requests”参数值:
$ grep "" /sys/block/sd*/queue/nr_requests /sys/block/sda/queue/nr_requests:256 /sys/block/sdb/queue/nr_requests:256
日期:2020-09-17 00:13:53 来源:oir作者:oir