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 :
- Slave test operations (READ, WRITE, SET A WRITE LOCK … )
- Master Operation (SET A READ LOCK, SET A WRITE LOCK )
- Slave types (Processes, threads)
- Locking profile (POSIX locking, Mandatory locking)
|
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
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。
三.postmark命令集
3.1 postmark命令解析
postmark的操作是在命令行的环境下的。
一个配置文件(在命令行中被指定)包含了一组可以直接运行的命令。
在命令行提示下,有如下命令:
pm > ?
set size : 设置文件大小的上限和下限。(low bound and high bound)
set number : 设置并发的文件数(simultaneous files)
set seed : 为随机数产生器设置种子(sets seed for random number generator)
set transactions : 设置事务处理的数目(set number of transactions)
set location : 设定工作文件的location(sets location of working files)
set read : 设定读取block的大小(sets read block size)
set write : 设定写block的大小(sets write block size)
set buffering : (set usage of buffered I/O)
set bias read : 设置读操作发生的频率(sets the chance of choosing read over append)
set bias create : 设置删除操作发生的频率(sets the chance of choosing create over delete)
run : 运行该软件
show : 显示当前的配置信息(displays current configuration)
help : 显出可用的命令(prints out available commands )
quit : Exit program
pm >
show命令显示可用于下次run的当前的配置信息。系统的默认配置信息如下:
pm>show
Current configuration is:
Transactions: 500 事务处理的数目是500个;
Files range between 500 bytes and 9.77 kilobytes in size
文件大小的上下限分别是500字节和9.77K字节。
Random number generator seed is 42 随机数产生器的种子是42
The base number of files is 500 并发的文件数是500个
The working directory is: . 工作目录是 .
Block sizes are: read=512 bytes, write=512 bytes 块大小是:读:512字节,写:512字节
Biases are: read/append=5, create/delete=5
读/追加发生的概率相等;创建/删除发生的概率相等。
Using Unix buffered file I/O 文件操作将使用标准的缓冲区I/O
pm>
If this configuration is run:
500 files will be initially created, between .. and 10 Kilobytes in size
The files will be processed in the current directory
All reads will occur in 512 byte blocks
All writes will occur in 512 byte blocks
Reads and appends are equally likely to occur
Creates and deletes are equally likely to occur
File operations will be performed using the standard buffered I/O in the runtime library
部分命令解释:
pm > set size 10000 20000 表示文件大小的下限是10000字节,文件大小的上限是20000字节;
pm > set size 15000 表示文件的大小只能固定是15000字节,不能变化。
pm > set number 整数 注意:后面的整数可以是任何大于1的整数,但是要保证文件系统有足够的空间来存放结果文件;设置并发的文件数;
pm > set seed 整数; 表示随机数产生器的种子。注意:任何整数都是可以的。但是这个项很少被自行设置,因为改变这个数之后测试结果将与原先测试的结果不同。
pm > set transaction 表示即将到来的下一次run中读/追加、创建/删除等操作的事务数目。任何大于1的整数都是可以的。
pm > set location 表示程序运行过程中产生文件的工作目录。例如:pm > set location user2/tmp
pm > set read 整数 以及 pm > set write 整数 表示从文件中一次读取的数据的大小或者一次写进文件的数据的大小。这两个整数的取值范围是:1 < 整数 < 文件的最大大小;
pm > set buffering true(默认是true) 或者 pm > set buffering false
true表示buffering is enabled.
false表示buffering is not enabled.
pm > set bias read整数 和 pm > set bias create 整数 两个整数分别表示该操作发生的频率;
其取值范围是:-1,0,1,2,3,…,10
当取值为-1时,表示系统禁止read和append这两个操作;取值从0到10变化过程中,值越小,表示read操作发生的几率小于append操作发
生的几率;值越大,表示read操作发生的几率大于append操作发生的几率。默认是5,表示read和append两种操作发生的几率相等。
同样,对于pm > set bias write 整数 和 pm > set bias delete 整数 两个整数分别表示该操作发生的频率;
其取值范围是:-1,0,1,2,3…10;
当取值为-1时,表示系统禁止write和delete这两个操作;取值从0到10变化过程中,值越小,表示write操作发生的几率小于delete操
作发生的几率;值越大,表示write操作发生的几率大于delete操作发生的几率。默认是5,表示write和delete两种操作发生的几率相等。
set bias read n n为read/append中read所占比例 n/10
set bias create n create/delete中create所占比例 n/10
set report verbose(default)/terse 设置报告模式,terse模式的输出没有文字说明,便于通过批处理运行多个测试之后,使用excel对结果进行分析
pm > run 命令表示在当前的配置下运行程序
四.postmark命令使用例子
postmark有两种使用方法:
1、 使用配置文件
./postmark XXX.cfg
配置文件方式,是将所有配置命令及run放入文件中,由postmark自动读取
配置文件示例:
set size 10000 50000
set location /mnt/cfs
set transactions 5000
set number 5000
run result.txt
show
quit
2、命令行模式
./postmark
进入命令行模式,然后打入相应命令,进行配置,run命令按当前配置运行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++就已经安装,并可以使用了。
命令:
[cpp] view plaincopyprint?
01.#./Bonnie
02.You must use the "-u" switch when running as root.
03.usage: bonnie++ [-d scratch-dir] [-s size(MiB)[:chunk-size(b)]]
04. [-n number-to-stat[:max-size[:min-size][:num-directories]]]
05. [-m machine-name]
06. [-r ram-size-in-MiB]
07. [-x number-of-tests] [-u uid-to-use:gid-to-use] [-g gid-to-use]
08. [-q] [-f] [-b] [-D] [-p processes | -y]
09.
10.
11.Version: 1.03e
方括号中的选项都是可选,其含义如下:
Bonnie
程序名字。
-d 起始路径
目录名字;Bonnie将在该目录下创建测试文件并进行读写,即为需要测试的文件系统挂载的目录。bonnie不会对目录名字进行任何特殊的解释,只是按照原名字使用。
-s size-in-MB
测试文件的大小,以MB为单位。默认是100MB大小。文件大小一定要是数倍于可用内存的大小,否则操作系统将会把文件的大部分文件cache到内存中,从而导致bonnie执行的真正的I/O次数非常少。建议设置至少为可用内存大小的2倍(另一种说法为4倍)。
-m machine-label
给出bonnie用来生成报告的标识。如果不使用该选项,bonnie将不在报告中提供特定标识。
-html
以html的格式输出测试结果
-m 机器名
实际上我们可以认为是本次测试的方案名,可以随便定义。默认是本机的hostname。
-r 内存大小
指定内存大小,这样可以通过-s参数创建r*2大小的文件,通常用于缩短测试时间,但是需要注意这样由于内存的cache可能导致测试结果的不准确
-x 测试的次数
-u 测试文件的属主和组,默认是执行bonnie++的当前用户和当前组
-g 测试文件的组,默认是执行bonnie++的当前用组
-b 在每次写文件时调用fsync()函数,对于测试邮件服务器或者数据库服务器这种通常需要同步操作的情况比较适合,而不使用该参数则比较适合测试copy文件或者编译等操作的效率。
在此,我们的文件系统挂载在/mnt目录下,因此我们将工作目录定为/mnt
[cpp] view plaincopyprint?
01.[root@de18 bonnie++-1.03e]# ./bonnie++ -d /mnt -s 1000 -u root
02.Using uid:0, gid:0.
03.File size should be double RAM for good results, RAM is 1000M.
说明我们的文件大小设置小了,RAM的大小为1000M,因此我们设置文件大小为2000M:
#./bonnie++ -d /test -s 2000 -u root
则可以得到测试结果:
[cpp] view plaincopyprint?
01.Version 1.03e ——Sequential Output—— –Sequential Input- –Random-
02. -Per Chr- –Block– -Rewrite- -Per Chr- –Block– –Seeks–
03.Machine Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP /sec %CP
04.de18 2000M 7849 44 16681 34 15773 37 60869 86 215620 36 9076 98
05. ——Sequential Create—— ——–Random Create——–
06. -Create– –Read— -Delete– -Create– –Read— -Delete–
07. files /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP /sec %CP
08. 16 1993 24 8381 16 2545 11 2025 30 8922 17 2576 15
09.de18,2000M,7849,44,16681,34,15773,37,60869,86,215620,36,9075.7,98,16,1993,24,8381,16,2545,11,2025,30,8922,17,2576,15
测试结果分析:
Sequential Output部分表示写文件的相关信息
Sequential Input部分表示读文件的相关信息
Per Chr表示以字符为单位读写文件
Block表示以block为单位读写文件
Rewrite表示修改并重写已经存在的文件的每一个block
K/sec表示每秒读或写文件的速率,以K为单位
%CP表示在某阶段执行操作时平均消耗的CPU
Sequential Output
1. Per Char
就是Per-Character的含义。使用putc()函数进行循环写入,每次写入的字节很小,基本上可以放入任意一种I-Cache中,这种情况下的CPU消耗在处理putc()代码和分配磁盘文件空间上。
2. Block
使用write(2)函数创建文件。这种情况下的CPU消耗只是在分配磁盘文件空间上。
3. Rewrite
使用read(2)函数读取文件,然后修改再用write(2)函数写回。由于文件的空间已经分配好,所以这种方式可以很有效地测试文件系统缓存和数据传输的速度。
Sequential Input
1. Per Char
使用getc()函数循环 读取文件内容
2. Block
使用read(2)函数循环读取文件内容,有效测试磁盘读取的效率。
Random Seek
默认3个seeks进程作8000次的测试。用read(2)函数读取文件的block,同时有10%的操作是用write(2)函数将block修改以
后写回文件中。在这个测试中,如果内存容量大于创建的文件大小,那么将会出现比较高的数值,而这个数值可能并不能准确反映磁盘本身的I/O效率。
Sequential Create和Radom Create
这两大类测试均是用创建,读取,删除大量的小文件来测试磁盘效率。文件名用7位数字和任意个数(0-12)的任意英文字母来组成。在Sequential部分,字母在数字之后,而Random部分则是字母在数字之前。
创建文件的最小值和最大值等参数可以在bonnie++命令行中用-n参数来控制。
最后需要注意的是,在测试RAID的时候,对于多CPU的系统,bonnie++并没有发挥CPU的最大潜力,也就是说bonnie++发出的I/O请求
通常不够达到CPU和磁盘的最大压力,这时候显示的吞吐量就不是存储设备能够达到的最大值。因此,这些数字智能作为在单CPU系统中操作的有效性指标。
二、内存测试工具简介
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]:测试次数
案例:
# ./memtester -p 0x0a0000 4k 1
memtester version 4.3.0 (32-bit)
Copyright (C) 2012 Charles Cazabon.
Licensed under the GNU General Public License version 2 (only).
pagesize is 4096
pagesizemask is 0xfffff000
want 0MB (4096 bytes)
Loop 1/1:
Stuck Address :testing 0FAILURE: possible bad addressline at physical address 0x000a0000.
Skipping to next test…
Random Value : ok
Compare XOR : ok
Compare SUB : ok
Compare MUL : ok
Compare DIV : ok
Compare OR : ok
Compare AND : ok
Sequential Increment : ok
Solid Bits : ok
Block Sequential : ok
Checkerboard : ok
Bit Spread : ok
Bit Flip : ok
Walking Ones : ok
Walking Zeroes : ok
8-bit Writes : ok
16-bit Writes : ok
Done.
Linux文件系统测试工具的更多相关文章
- [转帖]linux操作系统测试工具
linux操作系统测试工具 http://cfdtesting.com/879156.html 作者: minions_222 来源: CFDTesting.com采编 发布于: ...
- 9款最佳的Linux文件比较工具
程序员和撰稿人在编写程序文件或平常的文本文件时,有时想知道两个文件或同一文件的两个版本之间的差异.你在Linux上比较两个计算机文件时,文件内容之间的差异就叫diff.这一描述来源于提到diff的输出 ...
- window与linux文件传输工具
window与linux文件传输工具 [一般用于SecureCRT ssh中使用] 法一:直接用yum安装lrzsz(推荐) yum install lrzsz -y 注意:rhel安装完系统后 直接 ...
- Linux文件编辑工具——VIM
Linux文件编辑工具--VIM 1.VIM基本概述 1.1 什么是vim vi 和 vim 是 Linux 下的一个文本编辑工具.(可以理解为 windows 的记事本,或 Notepad++ 1. ...
- Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...
- Linux文件排序工具 sort 命令详解
sort是排序工具,它完美贯彻了Unix哲学:"只做一件事,并做到完美".它的排序功能极强.极完整,只要文件中的数据足够规则,它几乎可以排出所有想要的排序结果,是一个非常优质的工具 ...
- Linux文件归档工具——tar
Linux打包压缩命令——tar 一tar工具的介绍 Tar(Tape ARchive,磁带归档的缩写) NAME tar - manual page for tar 1.26 SYNOPSIS ta ...
- Linux文件同步工具之rsync
学习背景 1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器.但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器 ...
- Linux文件归档工具——cpio
一cpio的介绍 功能:复制文件从或到归档 cpio命令是通过重定向的方式将文件进行打包备份,还原恢复的工具,它可以解压以“.cpio”或者“.tar”结尾的文件. cpio [选项] > 文件 ...
随机推荐
- 转:nginx 官方drupal 配置 - Drupal | NGINX
#参考:nginx 官方drupal 配置 - Drupal | NGINX server { server_name example.com; root /var/www/drupal8; ## & ...
- CRM Online Outlook Client Configuration Wizard
CRM Outlook客户端满足和便捷了用户对office outlook和CRM两个程序的使用需求.通过CRM outlook 客户端,用户可以像在浏览器中访问CRM一样,流畅的读写CRM数据.同时 ...
- Atitit.resin could not create the java virtual machine问题
Atitit.resin could not create the java virtual machine问题 1. 正常的参数是这样1 2. 错误的cmd运行时候的参数1 3. 输出2 4. 原 ...
- c# 后台异步请求接口
第一步:引用程序集:Systen.Net.Http 第一种方式: 异步 Get请求 HttpClient client = new HttpClient(); //client. ...
- lock free数据结构内存回收技术-hazard pointer
lock free数据结构一般来说拥有比基于lock实现的数据结构更高的性能,但是其实现比基于lock的实现更为复杂,需要处理的难题包括预防ABA问题,内存如何重用和回收等.通常,最简单最有效的处理A ...
- C# 调用WebService服务
方 法 一 : 选择项目,右键添加服务引用,输入服务地址,如图: 点击确定跳转到如下界面: 调用 接口: ServiceReference1.ImportDataServiceClient sr = ...
- 关于sys CPU usage 100%问题的分析
最近一个客户抱怨他的核心EBS数据库出现性能问题.这是一个10.2.0.3的数据库,运行在Red Hat Enterprise Linux Server release 5.5 (Linux x86- ...
- ext button 属性
var buttonName = new Ext.Button({ id:"buttonName", text:" ...
- 我用的是python2,以后加python3的内容
可能有的不成功,比如print 'abc',这时候确定下python版本,3的方式是print('abc')
- 解决点击cell执行动画导致的重用问题
解决点击cell执行动画导致的重用问题 说明: 动画的细节都是裸露的,并没有封装,靠看官来优化了. 效果: 源码: https://github.com/YouXianMing/UITableView ...