linux 磁盘队列深度nr_requests 和 queue_depth
nr_requests 和 queue_depth
本文主要介绍Linux 操作系统中 nr_requests 和 queue_depth的参数意义和工作原理。以及结合iostat 的avgqu-sz 之间关系分析。
1.nr_requests 和 queue_depth
操作系统中nr_requests参数,可以提高系统的吞吐量,似乎越大越好,但是该请求队列的也不能过大,因为这样会消耗大量的内存空间。该值的调整需要综合多处因素,
比如: 文件系统、sheduler类型、io的特点。
命令: echo xxx > /sys/block//queue/nr_requests,nr_requests的大小设置至少是/sys/block//device/queue_depth的两倍,所以,修改nr_requtests的时候要注意。
[root@node-1 ~]# cat /sys/block/sdj/queue/nr_requests
256
[root@node-1 ~]# cat /sys/block/sdj/device/queue_depth
64
2.修改配置值
$ echo “512” > /sys/block/sda/queue/nr_requests IO调度队列大小
$ echo “512” > /sys/block/sda/device/queue_depth 磁盘队列深度
3.nr_requests 和 queue_depth 区别
- nr_requests:请求的IO调度队列大小
- queue_depth:请求在磁盘设备上的队列深度
- I/O调度器中的最大I/O操作数是nr_requests * 2。读和写是分开的。
- 已经分配到底层设备的I/O操作是queue_depth。
- 一个磁盘设备的I/O操作的最大未完成限制为(nr_requests * 2)+(queue_depth) 。对应iostat 的avgqu-sz。
英文解释
4.iostat 的avgqu-sz
该值大小为:(nr_requests*2)+(queue_depth)
5.lsscsi -l 的队列大小
Lun queue depth值来自 /sys/block/sdj/device/queue_depth