Linux系统测试工具

一、文件系统测试工具简介

1、LTP

参考网站:http://oss.sgi.com/projects/ltp/

LTP(Linux Test Project)是由SGI和IBM联合发起的项目,提供一套验证Linux系统可靠性、健壮性、稳定性的测试套件,也可用来进行POSIX兼容测试和功 能性测试。LTP提供了2000多个测试工具,可以根据需要自行进行定制。同时,LTP还是一个优秀的自动化测试框架,基于它通过设计测试用例和测试工具 可以实现更多功能的测试自动化。

稳定性测试相关参考:

基于LTP《测试Linux的可靠性》http://www.ibm.com/developerworks/cn/linux/l-rel/

 

2、fstest

 

参考网站:http://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。

该用例测试以上几个常用的文件系统调用,涉及用例约2K条左右,基于Android系统的测试,需要将相关测试用例的shell脚本稍微做下适配,可以基 于busybox下的相关命令(如dirname修改为busybox dirname),另外还需要适配主脚本“misc.sh”里面的相关命令

 

3、locktests

 

参考网站:http://nfsv4.bullopensource.org/tools/tests/locktest.php

locktest用于fcntl锁功能的压力测试。运行时,主进程先在指定文件区域设置字节范围的记录锁,然后多个从进程尝试在该文件区域执行read, write, 加新锁操作。这些操作结果是可预期的(矩阵如下),如果操作结果与预期一致则测试通过,否则测试失败。

Expected results

Here is the table of expected results, depending on :

  1. Slave test operations (READ, WRITE, SET A WRITE LOCK … )
  2. Master Operation (SET A READ LOCK, SET A WRITE LOCK )
  3. Slave types (Processes, threads)
  4. Locking profile (POSIX locking, Mandatory locking)
     

Master

   

Slave type

Test operation

advisory

locking 

  mandatory

locking 

   

read lock 

write lock 

read lock 

write lock 

thread

set a read lock

Allowed

Allowed

Allowed

Allowed

 

set a write lock

Allowed

Allowed

Allowed

Allowed

 

read

Allowed

Allowed

Allowed

Allowed

 

write

Allowed

Allowed

Allowed

Allowed

process

set a read lock

Allowed

Denied

Allowed

Denied

 

set a write lock

Denied

Denied

Denied

Denied

 

read

Allowed

Allowed

Denied

Allowed

 

write

Allowed

Allowed

Denied

Denied

4、PCTS

参考网站:http://www.opengroup.org/testing/downloads.html

PCTS(Posix Complicance Testing Suite),POSIX一致性测试套件,是从POSIX标准出发,通过严格的、定量地测试,以验证、评价、认证操作系统符合POSIX标准的程序的测试 软件。IEEE std2003.1是PCTS的设计标准,常见的PCTS主要有VSX-PCTS、NIST-PCTS、OPTS-PCTS三种实现,上面提供的连接为 VSX-PCTS。

 

5、iozone

 参考网站:http://www.iozone.org/

Iozone是目前应用非常广泛的文件系统测试标准工具,它能够产生并测量各种的操作性能,包括read, write, re-read, re-write, read backwards, read strided, fread, fwrite, random read, pread ,mmap, aio_read, aio_write等操作。Iozone目前已经被移植到各种体系结构计算机和操作系统上,广泛用于文件系统性能测试、分析与评估的标准工具。

 

6、Postmark

 参考网站:http://openbenchmarking.org/test/pts/postmark

Postmark 是由著名的 NAS 提供商 NetApp 开发,用来测试其产品的后端存储性能。Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小 文件。 Postmark 的测试原理是创建一个测试文件池。文件的数量和最大、最小长度可以设定,数据总量是一定的。创建完成后, Postmark 对文件池进行一系列的事务( transaction )操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,在有些情况下,文件系统的缓存策略可能对性能造成影响, Postmark 可以通过对创建 / 删除以及读 / 添加操作的比例进行修改来抵消这种影响。事务操作进行完毕后, Post 对文件池进行删除操作,并结束测试,输出结果。 Postmark是用随机数来产生所操作文件的序号,从而使测试更加贴近于现实应用。输出结果中比较重要的输出数据包括测试总时间、每秒钟平均完成的事务 数、在事务处理中平均每秒创建和删除的文件数,以及读和写的平均传输速度。

一、Postmark原理

Postmark是由着名的NAS提供商NetApp开发,用来测试其产品的后端存储性能。

Postmark主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小文件。

Postmark的测试原理是创建一个测试文件池。文件的数量和最大、最小长度可以设定,数据总量是一定的。创建完成后,Postmark对文件池进行一 系列的事务(transaction)操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,在有些情况下,文件 系统的缓存策略可能对性能造成影响,Postmark可以通过对创建/删除以及读/添加操作的比例进行修改来抵消这种影响。事务操作进行完毕后,Post 对文件池进行删除操作,并结束测试,输出结果。

Postmark是用随机数来产生所操作文件的序号,从而使测试更加贴近于现实应用。

输出结果中比较重要的输出数据包括测试总时间、每秒钟平均完成的事务数、在事务处理中平均每秒创建和删除的文件数,以及读和写的平均传输速度。

二.Postmark的安装:

postmark软件只有一个.c文件,在gcc下编译即可。假定编译之后的可执行文件名为postmark。

 

7、fio

 

参考网站:http://freecode.com/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等操作系统。

 

8、filebench

 

参考网站:http://sourceforge.net/projects/filebench/

Filebench 是一款文件系统性能的自动化测试工具,它通过快速模拟真实应用服务器的负载来测试文件系统的性能。它不仅可以仿真文件系统微操作(如 copyfiles, createfiles, randomread, randomwrite ),而且可以仿真复杂的应用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy )。 Filebench 比较适合用来测试文件服务器性能,但同时也是一款负载自动生成工具,也可用于文件系统的性能。

 

9、bonnie

 参考网站:

http://sourceforge.net/projects/bonnie/

http://www.textuality.com/bonnie/

Bonnie++是一个用来测试UNIX文件系统性能的测试工具,主要目的是为了找出系统的性能瓶颈,其名字来源于作者喜爱的歌手Bonnie Raitt。

Bonnie++在类似的测试工具和软件中不是最大的和最复杂的,但是在易用性和输出结果显示方面很不错。

为什么需要bonnie++?

我们有以下假设:

内存是有限的,因此cache经常会达到上限;因此许多I/O操作最终需要真正执行I/O;因此有必要测试真实I/O的速度,而且在UNIX文件系统中随机搜索是非常慢的;

Bonnie++做了什么?

Bonnie++在一个已知文件大小的文件上执行一系列的测试操作。如果不指定文件大小,Bonnie++默认使用100MB。这个默认大小对于大型服务器来说可能不够大,因此文件的大小最好比可用RAM的大小大一点,一般会要求大两倍。

Bonnie++的使用说明

Bonnie++将长时间的执行磁盘文件读写操作(中间不断给出进程报告),然后生成一个小而精的报告。

下载Bonnie++的源码;

解压tar -xzf bonnie++-1.03e.tgz

进入解压后的目录

编译Bonnie++:make

至此,Bonnie++就已经安装,并可以使用了。

 

10、sysbench

sysbench提供了针对linux的基准测试能力,它支持测试CPU、内存、文件IO、信号量、线程等的能力,甚至包括mysql的基准测试。

安装:

# wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12.tar.gz
# tar zxvf sysbench-0.4.12.tar.gz -C ../software/
# ./configure --prefix=/usr/local/sysbench-0.4.12 \
--with-mysql-includes=/usr/local/mysql-5.5.8/include \
--with-mysql-libs=/usr/local/mysql-5.5.8/lib
# make
# make install

1. 基本指令
sysbench [common-options] --test=name [test-options] command
2. 测试文件IO负载
使用以下命令创建测试文件

sysbench --test=fileio --file-total-size=128G prepare


使用以下命令负载测试

sysbench --test=fileio --file-total-size=128G --file-test-mode=rndrw --max-time=60 --max-requests=0 run

测试完毕,使用以下命令清理测试文件

sysbench --test=fileio --file-total-size=128G cleanup

注意:

测试文件大小最好大于内存,确保文件缓存不会过多影响测试;
通过声明--file-test-mode选项,你可以告诉sysbench你想进行哪种类型的负载(顺序读写、随机读写、或者组合)。上面例子中指定了随机读写。
通过声明--max-time选项,你可以告诉sysbench你的测试时长。上面例子中指定了60秒。
3. 测试CPU负载
下面是一个验证最大素数的例子,通常用它来测试CPU

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run

4. 测试内存负载
执行以下命令:

sysbench --test=memory --num-threads=4 run

更多参数参见:SysBench manual

二、内存测试工具简介

 

1、memtester

参考网站:http://pyropus.ca/software/memtester/

memtester是用户态工具,用于测试内存子系统的故障。非常方便,支持32位或64位Unix-like系统。对于硬件开发开发者来说,memtester可以定位到物理地址。

1、安装

下载获取memtester-4.3.0.tar.gz源码包。

#tar –zxvf memtester-4.3.0.tar.gz

#make

#make install

2、测试

./memtester [-p physaddrbase] [B|K|M|G] [loops]

其中:

Physaddrbase:需要测试的物理地址;

<mem>[B|K|M|G]:测试内存的大小;

[loops]:测试次数

 

posted on 2019-11-12 11:17  wchonline  阅读(3356)  评论(1编辑  收藏  举报

导航