最近又遇到了性能测试相关的话题,现在常测试的无非就是接口读写,网络性能,CPU性能之类的,找了下常用的最基础的工具,后续慢慢逐一讨论。

Linux下hdparm硬盘测速

在Linux下可以使用hdparm对硬盘进行测试或者查看硬盘的相关信息

hdparm

hdparm [-CfghiIqtTvyYZ] [-a<快取分区>][-A<0或1>][-c<I/O模式>][-d<0或1>][- k<0或1>][-K<0或1>][-m<分区数>][-n<0或1>][-p <PIO模式>][-P <分区数>][-r<0或1>][-S<时间>][-u <0或1>][-W <0或1>][-X<传输模式>][设备]

补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。

参  数:
-a<快取分区>   设定读取文件时,预先存入块区的分区数,若不加上<快取分区>选项,则显示目前的设定。
-A<0或1>   启动或关闭读取文件时的快取功能。
-c<I/O模式>   设定IDE32位I/O模式。
-C   检测IDE硬盘的电源管理模式。
-d<0或1>   设定磁盘的DMA模式。
-f   将内存缓冲区的数据写入硬盘,并清除缓冲区。
-g   显示硬盘的磁轨,磁头,磁区等参数。
-h   显示帮助。
-i   显示硬盘的硬件规格信息,这些信息是在开机时由硬盘本身所提供。
-I   直接读取硬盘所提供的硬件规格信息。
-k<0或1>   重设硬盘时,保留-dmu参数的设定。
-K<0或1>   重设硬盘时,保留-APSWXZ参数的设定。
-m<磁区数>   设定硬盘多重分区存取的分区数。
-n<0或1>   忽略硬盘写入时所发生的错误。
-p<PIO模式>   设定硬盘的PIO模式。
-P<磁区数>   设定硬盘内部快取的分区数。
-q   在执行后续的参数时,不在屏幕上显示任何信息。
-r<0或1>   设定硬盘的读写模式。
-S<时间>   设定硬盘进入省电模式前的等待时间。
-t   评估硬盘的读取效率(不经过磁盘cache)。
-T   估硬盘快取的读取效率。
-u<0或1>   在硬盘存取时,允许其他中断要求同时执行。
-v   显示硬盘的相关设定。
-W<0或1>   设定硬盘的写入快取。
-X<传输模式>   设定硬盘的传输模式。
-y   使IDE硬盘进入省电模式。
-Y   使IDE硬盘进入睡眠模式。
-Z   关闭某些Seagate硬盘的自动省电功能。

----------------------------------------

补充说明:hdparm可检测,显示与设定IDE或SCSI硬盘的参数。

 测试各硬盘读取速度判断硬盘故障
 
  在服务端命令窗口中执行如下命令
 
  hdparm -t /dev/hda (IDE硬盘)
 
  hdparm -t /dev/sda (SATA、SCSI、硬RAID卡阵列)
 
  hdparm -t /dev/md0 (软RAID设备)

测试举例:

1、评估硬盘的读取效率(不经过磁盘cache)

root@LOonux:/home/loongson# hdparm -t /dev/sda

/dev/sda:
 Timing buffered disk reads: 222 MB in  3.02 seconds =  73.59 MB/sec

设定或取消硬盘的写入快取

root@LOonux:/home/loongson# hdparm -W 0 -t /dev/sda

/dev/sda:
 setting drive write-caching to 0 (off)
 write-caching =  0 (off)
 Timing buffered disk reads: 222 MB in  3.01 seconds =  73.84 MB/sec
root@LOonux:/home/loongson# hdparm -W 1 -t /dev/sda

/dev/sda:
 setting drive write-caching to 1 (on)
 write-caching =  1 (on)
 Timing buffered disk reads: 220 MB in  3.00 seconds =  73.23 MB/sec

2、 估硬盘快取的读取效率

root@LOonux:/home/loongson# hdparm -t /dev/sda 硬盘的读取速度

/dev/sda:
Timing buffered disk reads: 226 MB in 3.01 seconds = 75.15 MB/sec


root@LOonux:/home/loongson# hdparm -T /dev/sda        硬盘缓存的读取速度 
/dev/sda: Timing cached reads: 756 MB in 2.00 seconds = 377.97 MB/sec
root@LOonux:/home/loongson# hdparm -W 0 -T /dev/sda
/dev/sda: setting drive write-caching to 0 (off) 
write-caching = 0 (off)
 Timing cached reads: 792 MB in 2.00 seconds = 395.39 MB/sec
root@LOonux:/home/loongson# hdparm -W 1 -T /dev/sda
/dev/sda: setting drive write-caching to 1 (on)
 write-caching = 1 (on)
 Timing cached reads: 778 MB in 2.00 seconds = 388.37 MB/sec


(直接)硬盘读测试

root@LOonux:/home/loongson# hdparm -tT /dev/sda

/dev/sda:
Timing cached reads: 768 MB in 2.00 seconds = 383.38 MB/sec
Timing buffered disk reads: 224 MB in 3.02 seconds = 74.16 MB/sec
root@LOonux:/home/loongson# hdparm -tT --direct /dev/sda

/dev/sda:
Timing O_DIRECT cached reads: 206 MB in 2.00 seconds = 103.01 MB/sec
Timing O_DIRECT disk reads: 258 MB in 3.01 seconds = 85.67 MB/sec


-T
用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不存取磁盘直接从Linux缓存 读取数据的速度.这项测量实际上标示了被测系统的处理器,缓存 和内存的吞吐量. 如果标志 -t 也被指定,那么一个基于 -T 输出结果的修正量将被综合到 -t 操作报告的结果中.
-t
用于以基准测试和比较为目的的缓存读取计时.要得到有意义的结果, 应该在内存不少于2M,系统没有其它活动(没有其它活动的程序) 的条件下,重复操作2-3次.它显示了不使用预先的数据缓冲从磁盘 这项测量标示了Linux下没有任何文件系统开销时磁盘可以支持多快的连续数据读取.为确保测量的精确,缓存在 -t 的过程中通过BLKFLSBUF控制被刷新. 如果标志 -T 也被指定,那么一个基于 -T 数促结果的修正量将被综合到 -t 操作报告的结果中.

PS:

硬盘坏道修复方法

检查:smartctl -l selftest /dev/sda
卸载:umount /dev/sda*
修复:badblocks /dev/sda

另一种测试硬盘读写的测试方法:

root@LOonux:/home/loongson# time dd if=/dev/zero of=/var/test bs=2M count=100
记录了100+0 的读入
记录了100+0 的写出
209715200字节(210 MB)已复制,3.57205 秒,58.7 MB/秒

real 0m4.486s
user 0m0.004s
sys 0m2.738s
root@LOonux:/home/loongson# time dd if=/var/test of=/dev/mull bs=2M count=100
记录了100+0 的读入
记录了100+0 的写出
209715200字节(210 MB)已复制,1.94033 秒,108 MB/秒

real 0m1.960s
user 0m0.004s
sys 0m1.879s




从if读出,写到of;

不产生IO,因此可以用来测试纯写速度;同理of=/dev/null不产生IO,可以用来测试纯读速度;

bs是每次读或写的大小,即一个块的大小,count是读写块的数量,相乘就是读写数据量大小;

bs=2M count=500

则是1.1G大小的文件;



posted on 2022-07-05 18:13  我在全球村  阅读(138)  评论(0编辑  收藏  举报