linux磁盤讀寫性能優化


在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 bytes
255 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 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM