在LINUX系统中,如果有大量读请求,默认的请求队列或许应付不过来,我们可以
动态调整请求队列数来提高效率,默认的请求队列数存放在/sys/block/xvda/queue/nr_requests 文件中,注意:/sys/block/xvda ,这里 xvda 写的是你自己的硬盘名,因我的是vps所以是xvda,有可能的参数是 sda hda....等等。
如果你不清楚可以,fdisk -l查看一下自己的物理磁盘名称。
[root@leda03 public_html]# fdisk -l
Disk /dev/xvdd: 117 MB, 117549056 bytes255 heads, 63 sectors/track, 14 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/xvdd doesn't contain a valid partition table
Disk /dev/xvda: 21.4 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/xvda1 * 1 13 104391 83 Linux
/dev/xvda2 14 2610 20860402+ 8e Linux LVM
Centos系统
查看磁盘的默认请求队列:
# cat /sys/block/xvda/queue/nr_requests
128
默认请求队列数为:128。
现在我们来测试请求一个1G大小的文件:
# time dd if=/dev/zero of=test bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 60.2789 seconds, 17.4 MB/s
real 1m0.553s
由此看出,共花了1分55秒,现在把 nr_requests 的 128 改成 512 再试下:
# echo 512 > /sys/block/xvda/queue/nr_requests
# cat /sys/block/hda/queue/nr_requests
512
![](data:image/png;base64,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)
# rm -f test
# time dd if=/dev/zero of=test bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 28.298 seconds, 37.1 MB/s
real 0m28.787s
user 0m0.040s
sys 0m5.982s
同样大小的文件,改成 512 后只需要 28 秒钟,由此可以结论出,通过适当的调整
nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。
建议:通过适当的调整nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。但是这个牺牲的比例,目前 我还没有一个比较严格的数字,所以大家还是要慎重的去更改为好,最后先做一个压力测试,再去进行更改。当然如果你服务器的内存很足,就不必有此顾虑了。
# time dd if=/dev/zero of=test bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 60.2789 seconds, 17.4 MB/s
real 1m0.553s
user 0m0.043s
sys 0m6.363s
由此看出,共花了1分55秒,现在把 nr_requests 的 128 改成 512 再试下:
# echo 512 > /sys/block/xvda/queue/nr_requests
# cat /sys/block/hda/queue/nr_requests
512
# rm -f test
# time dd if=/dev/zero of=test bs=1M count=1000
1000+0 records in
1000+0 records out
1048576000 bytes (1.0 GB) copied, 28.298 seconds, 37.1 MB/s
real 0m28.787s
user 0m0.040s
sys 0m5.982s
同样大小的文件,改成 512 后只需要 28 秒钟,由此可以结论出,通过适当的调整
nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。
建议:通过适当的调整nr_requests 参数可以大幅提升磁盘的吞吐量,缺点就是你要牺牲一定的内存。但是这个牺牲的比例,目前 我还没有一个比较严格的数字,所以大家还是要慎重的去更改为好,最后先做一个压力测试,再去进行更改。当然如果你服务器的内存很足,就不必有此顾虑了。