跳转至

磁盘IO性能:测试磁盘IO速度方法

一、hdparm

测试磁盘读取速度:

Bash
1
2
3
4
5
hdparm  -Tt  /dev/sda1

/dev/sda1:
 Timing cached reads:   23136 MB in  2.00 seconds = 11580.41 MB/sec
 Timing buffered disk reads:  196 MB in  1.91 seconds = 102.76 MB/sec

2秒读取了23146M的缓存,约合11580.41MB/sec。

1.91秒读取的196M的磁盘(物理读),读取速度约102.76MB/sec。

二、dd

1. 2个特殊设备说明

/dev/null 伪设备,回收站,写该文件不会产生IO。

/dev/zero 伪设备,会产生空字符流,对它不会产生IO。

命令详解:

time 用于计时 dd 用于复制,从if读出,写到of。 if=/dev/zero 不产生IO,因此可以用来测试纯写速度; of=/dev/null 不产生IO,可以用来测试纯读速度。 bs 是每次读或写的大小,即一个块的大小 count 是读写块的数量,相乘就是读写数据量大小。 数据量越大越准确,多次测试取平均值

2. 测试磁盘IO的读速度

Bash
1
2
3
4
5
6
7
8
9
time dd if=/dev/sda1 of=/dev/null bs=8k

25097+1 records in
25097+1 records out
205599744 bytes (206 MB) copied, 1.89498 seconds, 108 MB/s

real 0m1.899s
user 0m0.005s
sys 0m0.205s

磁盘的读取速度约为108MB/s。

3. 测试磁盘IO的写速度

Bash
1
2
3
4
5
6
7
8
9
time dd if=/dev/zero of=test.sdf bs=8k count=300000

300000+0 records in
300000+0 records out
2457600000 bytes (2.5 GB) copied, 1.65826 seconds, 1.5 GB/s

real 0m1.672s
user 0m0.023s
sys 0m1.637s

磁盘的写入速度约为1.5GB/s。

4. 测试磁盘IO同时读和写的速度

Bash
1
2
3
4
5
6
7
8
9
time dd if=/dev/sda1 of=test.sdf bs=8k

25097+1 records in
25097+1 records out
205599744 bytes (206 MB) copied, 0.178311 seconds, 1.2 GB/s

real 0m0.179s
user 0m0.006s
sys 0m0.174s

磁盘的同时读合写速度约为1.2GB/s