Linux测试硬盘性能测试之hdparm、dd
你可以使用以下命令在一个Linux或类Unix操作系统上进行简单的I/O性能测试。
- dd命令 :它被用来在Linux和类Unix系统下对硬盘设备进行写性能的检测。
- hparm命令:它用来在基于 Linux 的系统上获取或设置硬盘参数,包括测试读性能以及缓存性能等。
一、hparm
1.1、安装hdparm工具
[root@localhost ~]# yum install hdparm -y
1.2、显示硬盘的相关信息(可以使用 “lsblk” 来查看磁盘信息 )
[root@localhost ~]# hdparm /dev/sda /dev/sda: IO_support = 0 (default 16-bit) readonly = 0 (off) readahead = 256 (on) geometry = 19929[柱面数]/255[磁头数]/63[扇区数], sectors = 320173056[总扇区数], start = 0[起始扇区数
1.3、查看读写速度
[root@localhost ~]# hdparm -tT /dev/sda2 /dev/sda2: Timing cached reads: 15738 MB in 2.00 seconds = 7876.71 MB/sec Timing buffered disk reads: 3578 MB in 3.00 seconds = 1191.20 MB/sec [root@localhost ~]#
二、dd命令
使用dd命令来监控硬盘的读写性能:
- 使用dd命令来测量服务器的吞吐率(写速度)
dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync
- 使用dd命令测量服务器延迟
dd if=/dev/zero of=/tmp/test2.img bs=512 count=1000 oflag=dsync
语法:
dd if=/dev/input.file of=/path/to/output.file bs=block-size count=number-of-blocks oflag=dsync ## GNU dd语法 ## dd if=/dev/zero of=/tmp/test1.img bs=1G count=1 oflag=dsync ##另外一种GNU dd的语法 ## dd if=/dev/zero of=/tmp/testALT.img bs=1G count=1 conv=fdatasync
参数说明:
if=/dev/zero
(if=/dev/input.file) :用来设置dd命令读取的输入文件名。of=/tmp/test1.img
(of=/path/to/output.file):dd命令将input.file写入的输出文件的名字。bs=1G
(bs=block-size) :设置dd命令读取的块的大小。例子中为1个G。count=1
(count=number-of-blocks):dd命令读取的块的个数。oflag=dsync
(oflag=dsync) :使用同步I/O。不要省略这个选项。这个选项能够帮助你去除caching的影响,以便呈现给你精准的结果。conv=fdatasyn
: 这个选项和oflag=dsync
含义一样。
2.1 执行性能压测
#写压力测试
[root@localhost ~]# sync; time -p bash -c "(dd if=/dev/zero of=test.dd bs=1M count=2000 oflag=dsync);sync;"
记录了2000+0 的读入
记录了2000+0 的写出
2097152000字节(2.1 GB)已复制,6.95537 秒,302 MB/秒
real 6.96
user 0.00
sys 1.35
[root@localhost ~]#
其中/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO,所以,IO都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。输出的结果类似(因为一般更长测试时间更准确,所以可以设置count大一些):
2.2 iotop观察数据
具体用法见另外随笔
执行上述命令后,使用iotop观察占用的I/O情况
# 安装软件 yum -y install iotop #输出正在产生IO的进程 iotop -o -P
2.3 iostat观察数据
具体用法见另外随笔
# 安装工具 yum -y install sysstat # 观察 # 查看TPS和吞吐量信息(磁盘读写速度单位为KB) [root@localhost ~]# iostat -m -x 2 5 -k:以kb为单位统计 -d:显示磁盘状态 -x:显示详细信息 2:统计时间间隔为2秒 5:统计5次