linux下硬盘瓶颈和读写速度测试的实例分享

发布时间:2020-02-18编辑:脚本学堂
本文介绍下,在linux系统中,测试硬盘瓶颈与读写速度的方法。有需要的朋友,作个参考吧。

linux系统中,可以通过以下命令检测磁盘读写情况:
 

复制代码 代码示例:
iostat -d -k -x 1 10

该命令中的1 ,10 表示每1秒取一次样本,共10份。

iostat -c 获取CPU 的信息。
 

Device:    rrqm/s wrqm/s   r/s   w/s  rsec/s  wsec/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await  svctm  %util
sda          0.00  36.00 42.00 193.00 1008.00 1856.00   504.00   928.00    12.19    73.52  297.22   4.26 100.10
sdb          0.00   0.00  0.00  0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0         0.00   0.00  0.00 23.00    0.00  184.00     0.00    92.00     8.00     1.67   72.61   6.09  14.00
dm-1         0.00   0.00 42.00 209.00 1008.00 1672.00   504.00   836.00    10.68   114.26  496.11   3.99 100.10

说明:
 

rrqm/s:   每秒进行 merge 的读操作数目。即 delta(rmerge)/s
wrqm/s:  每秒进行 merge 的写操作数目。即 delta(wmerge)/s
r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/s
w/s:         每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s:    每秒读扇区数。即 delta(rsect)/s
wsec/s:  每秒写扇区数。即 delta(wsect)/s
rkB/s:      每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:    每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:    平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:   平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)
%util:      一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。

idle小于70% IO压力就较大了,一般读取速度有较多的wait.
同时可以结合vmstat 查看查看b参数(等待资源的进程数)和wa参数(IO等待所占用的CPU时间的百分比,高过30%时IO压力高)

另外 await 的参数也要多和 svctm 来参考。差的过高就一定有 IO 的问题。

avgqu-sz 也是个做 IO 调优时需要注意的地方,这个就是直接每次操作的数据的大小,如果次数多,但数据拿的小的话,其实 IO 也会很小.如果数据拿的大,才IO 的数据会
高。也可以通过 avgqu-sz × ( r/s or w/s ) = rsec/s or wsec/s.也就是讲,读定速度是这个来决定的。

测试硬盘读写速度:
 

复制代码 代码示例:
[root@OS-5_2 ~]# df -hl    
Filesystem            Size  Used Avail Use% mounted on
/dev/sda2              19G  6.4G   11G  37% /
/dev/sda1             190M   11M  170M   7% /boot
tmpfs                 252M     0  252M   0% /dev/shm

只有一个硬盘sda:
 

复制代码 代码示例:

[root@OS-5_2 ~]# hdparm -tT /dev/sda

/dev/sda:
 Timing cached reads:   19032 MB in  1.99 seconds = 9560.26 MB/sec
 Timing buffered disk reads:    8 MB in  3.86 seconds =   2.07 MB/sec
 

以下的磁盘读写速度,基本可以支持到50路的录音并发:
 

复制代码 代码示例:
/dev/sda:
Timing cached reads:   4536 MB in  2.00 seconds = 2269.39 MB/sec
Timing buffered disk reads:  224 MB in  3.01 seconds =  74.33 MB/sec

本节主要学习了iostat、df、hdparm的用法,希望对大家有所帮助。