现有的测试工具分为三类:
- 合成IO测试
- 基准测试集
- 基于Trace的测试
合成测试程序根据统计的真实负载发生规律,如请求的读写比例,大小,频率和分布等信息。建立响应的io存取模型。在测试时产生符合存取模型的io请求序列。发送给存储系统。这类程序包括 IOMeter,IOZone 和 Bonnie++。
使用基准测试集测试计算机系统的性能,一直是有效和精确的评价方法。针对存储系统的测试研究也大量使用基准测试集。
存储性能委员会SPC,为存储系统开发了基准测试集。SPC-1 SPC-2; 标准性能评价组织SPEC 标准集成立于1988,目标是建立标准和实际的性能测试集。其中 SFS是测量NFSv2和NFSv3服务器的性能,包括吞吐率和响应时间。它在客户端上运行实现定义的负载脚本产生各种实际的文件和目录操作。https://www.spec.org/sfs2014/
Trace测试。Trace 测试是搜集真实系统中所有的IO请求信息,并按照一定格式记录在Trace文件中,一般包括请求时间,请求类型和请求大小等。测试时,程序按照Trace文件中的记录想存储系统中发出IO请求。但是记录Trace信息会增加IO开销。
对于一个测试工具来说,需要满足一下几个基本要求:
一是对不同系统进行测试所得到的结果具有可比较性。
二是可移植性好,能够适应或者非常方便的移植到不同的机器上;
三是测试结果准确客观。
影响测试软件网络带宽测试结果的关键因素有:读写操作比例,测试数据总大小,测试过程中每次操作的数据大小,顺序或者随机访问模式,多个测试进程同时访问一个文件还是访问各自独立的文件,或称之为共享或者并发访问模式。
参考文件:分布式文件系统性能测试软件的设计 2012 第1期
常用的文件系统测试工具:
1. pjd-fstest (posix 接口兼容性测试)
参考网站:https://www.tuxera.com/community/posix-test-suite/
fstest是一套简化版的文件系统POSIX兼容性测试套件,它可以工作在FreeBSD, Solaris, Linux上用于测试UFS, ZFS, ext3, XFS and the NTFS-3G等文件系统。fstest目前有3601个回归测试用例,测试的系统调用覆盖chmod, chown, link, mkdir, mkfifo, open, rename, rmdir, symlink, truncate, unlink。
使用教程:
https://www.cnblogs.com/xuyaowen/p/pjd-fstest.html
2. IOZone (读写模式测试)
磁盘设备之上是文件系统,测试磁盘的工具往往就是调用块设备驱动的接口进行读写测试。而文件系统的测试软件就是针对文件系统层提供的功能进行测试,包括文件的打开关闭速度以及顺序读写随机位置读写的速度。以及进程并发数目等各个方面进行详细的测试。
IOZone是目前应用非常广泛的文件系统测试标准工具,它能够产生并测量各种的操作性能,包括read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write等操作。Iozone目前已经被移植到各种体系结构计算机和操作系统上,广泛用于文件系统性能测试、分析与评估的标准工具。
IOZone和IOMeter不同,IOMeter的测试是基于数据块的,而IOZome的测试是基于文件的,因此更适合用来测试文件系统的性能。使用IOZone 可以在多线程,多CPU,并指定CPU Cache 空间大小以及同步或者异步IO读写模式的情况下进行文件操作的性能测试。
使用教程:
https://www.cnblogs.com/xuyaowen/p/iozone.html
3. FIO (磁盘IO测试-顺序IO和随机IO)
参考网站:http://freshmeat.sourceforge.net/projects/fio
fio是一个I/O标准测试和硬件压力验证工具,它支持13种不同类型的I/O引擎(sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio等),I/O priorities (for newer Linux kernels), rate I/O, forked or threaded jobs等等。fio可以支持块设备和文件系统测试,广泛用于标准测试、QA、验证测试等,支持Linux, FreeBSD, NetBSD, OS X, OpenSolaris, AIX, HP-UX, Windows等操作系统。
使用教程:
https://www.cnblogs.com/xuyaowen/p/fio-usage.html
4. Filebench (文件系统应用负载生成测试)
参考网站:https://sourceforge.net/projects/filebench/
Filebench 是一款文件系统性能的自动化测试工具,它通过快速模拟真实应用服务器的负载来测试文件系统的性能。它不仅可以仿真文件系统微操作(如 copyfiles, createfiles, randomread, randomwrite ),而且可以仿真复杂的应用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy )。 Filebench 比较适合用来测试文件服务器性能,但同时也是一款负载自动生成工具,也可用于文件系统的性能。
使用教程:
https://www.cnblogs.com/xuyaowen/p/filebench.html
https://www.usenix.org/legacy/event/lsf08/tech/FS_shepler.pdf
http://www.nfsv4bat.org/Documents/nasconf/2005/mcdougall.pdf
5. Mdtest (元数据性能测试)
Mdtest 是一个测试文件系统元数据性能的工具。
使用教程:
https://www.cnblogs.com/xuyaowen/p/ior-and-mdtest.html
6. IOR (结合mpi,利用并行IO来测试文件系统的IO性能和元数据性能)
IOR使用MPI进行进程同步(也可以使用srun或其他工具) - 通常在HPC(High Performance Computing)集群中的多个节点上并行运行IOR进程,在安装目标文件系统的每个客户机节点上运行一个IOR进程。
使用教程:
https://www.cnblogs.com/xuyaowen/p/ior-and-mdtest.html
7. dd测试工具 (磁盘IO测试-针对于顺序IO)
使用 dd 来测试硬盘读写速度,dd 只能提供一个大概的测试结果,而且是连续IO不是随机IO,理论上文件规模越大,测试结果就越精准。
使用场景,适用在单节点进行测试。
使用教程:
https://www.cnblogs.com/xuyaowen/p/dd.html
8. Iperf (网络测试,测试分布式存储系统中网络的实际带宽,主要是对tcp/udp协议的测试)
Iperf 是一个网络性能测试工具。IPerf可以测试最大的TCP和UDP带宽性能。Iperf具有多种参数和特性,可以根据需要调整。IPerf可以报告带宽。延迟抖动和数据包丢失。iperf3是一个网络速度测试工具,支持IPv4与IPv6,支持TCP、UDP、SCTP传输协议,可在Windows、Mac OS X、Linux、FreeBSD等各种平台使用,是一个简单又实用的小工具。 本文介绍安装、使用iperf3 网速测试工具。
使用教程:
https://www.cnblogs.com/xuyaowen/p/iperf-for-network.html
9. netperf (首先使用指定端口交换控制信息,再开另外的端口进行对tcp的stream,rr,crr和udp的stream,rr等应用模式进行测试)
netperf是惠普公司开源的一款针对网络性能的测试工具,主要基于TCP或UDP的传输。根据应用的不同,可以进行批量数据传输(bulk data transfer)模式和请求/应答(request/reponse)模式的性能测试。
netperf以Client/Server方式工作。Server端是netserver,用来侦听来自client端的连接,Client端是netperf,用来向Server发起网络测试。在Client与Server之间,首先建立一个控制连接,传递有关测试配置的信息,以及测试的结果;在控制连接建立并传递了测试配置信息以后,Client与Server之间会再建立一个测试连接,来回传递特殊的流量模式,用来测试网络的性能。
netperf测试结果反映了一个系统能够以多快的速度向另外一个系统发送数据,以及另外一个系统能够以多块的速度接收数据。
使用教程:
https://www.cnblogs.com/xuyaowen/p/netperf.html
保持更新,转载请注明出处:cnblogs.com/xuyaowen; 如果对您有帮助,请点击推荐吧~