在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

# 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 參數可以大幅提升磁盤的吞吐量,缺點就是你要犧牲一定的內存。但是這個犧牲的比例,目前 我還沒有一個比較嚴格的數字,所以大家還是要慎重的去更改為好,最后先做一個壓力測試,再去進行更改。當然如果你服務器的內存很足,就不必有此顧慮了。