分类: LINUX
2012-01-06 12:02:50
性能指标
(1) 吞吐量
数据吞吐量 (Throughput) ,指单位时间内可以成功传输的数据数量,吞吐量 以 MB/S 指标来衡量,体现存储系统在大量数据持续读写时的性能,特别是能衡量在非线性编辑、视频流媒体等需要大量读写环境下,存储持续读写的能力。 对于大量顺序读写的应用,则更关注吞吐量指标。这里用来衡量大量小文件读写场景下的数据吞吐量。
(2) IOPS
IOPS (Input/Output Per Second) 即每秒的输入输出量 ( 或读写次数 ) ,是衡量存储系统性能的主要指标之一。 IOPS 是指单位时间内系统能处理的 I/O 请求数量,一般以每秒处理的 I/O 请求数量为单位, I/O请求通常为读或写数据操作请求。随机读写频繁的应用,如 OLTP(Online Transaction Processing) 、海量小文件是典型代表, IOPS 是关键衡量指标。
(3) 写入速率
写入速率,指单位时间(秒、分钟或小时)内成功创建并完成数据写操作的文件总数或者平均数量。客户每天平均约写入 5000 万小文件,写入速率要求达到每小时 200 万以上。
(4) 并发客户端数
并发客户端数,指系统能够同时支持的饱和读写能力的最大客户端数量。假设总写入速率为 200 万 /小时,单位客户端写入速率为 2 万 / 小时,则系统至少需要支持 100 台并发客户端数。
测试工具
(1) DD
DD 是 Linux 系统自带的一个简易测试工具,比较实用,可以作为一个测试工具对文件系统以及裸设备的吞吐量和带宽进行测试。 DD 只能提供一个大概的测试结果,而且是连续 IO 而不是随机 IO ,理论上文件越大,测试结果越准确。 DD 通常用来大致测试文件系统的极限性能,包括 IOPS 和数据吞吐量。 DD的 bs 参数可以用来设置读写记录大小,测试 IOPS 时可设置为 1~4KB ,测量数据吞吐量时可设置为4~16MB 。实际测试中,建议文件大小是内存总量的两倍以上,或者采用 DIRECT_IO 模式,以获得更准确的测试结果。
(2) Bonnie++
Bonnie++ 是一款文件系统的基准性能自动化测试工具,包括测试文件系统的读写能力、查找能力、创建新文件的能力,它通过一系列的简单测试来生成文件系统的性能参数。其主程序提供两种风格的测试:针对单个文件的数据库风格的访问测试和针对大量小文件的创建和删除来模拟诸如 Squid , INN, 或者 Maildir 格式的 Email 这一类风格的访问测试。 Bonnie++ 对三个方面做基准测试:数据读、写速度,每秒可以完成的文件元数据操作次数。 Bonnie++ 12 项结果分为 5 大类,分别是 Sequential Output (写测试), Sequential Input (读测试), Random Seeks (读写测试), Sequential Create (顺序读写文件测试)和 Random Create (随机读写文件测试)。
URL :
(3) Postmark
Postmark 是由著名的 NAS 提供商 NetApp 开发,用来测试其产品的后端存储性能。 Postmark 主要用于测试文件系统在邮件系统或电子商务系统中性能,这类应用的特点是:需要频繁、大量地存取小文件。Postmark 的测试原理是创建一个测试文件池。文件的数量和最大、最小长度可以设定,数据总量是一定的。创建完成后, Postmark 对文件池进行一系列的事务( transaction )操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,在有些情况下,文件系统的缓存策略可能对性能造成影响, Postmark 可以通过对创建 / 删除以及读 / 添加操作的比例进行修改来抵消这种影响。事务操作进行完毕后, Post 对文件池进行删除操作,并结束测试,输出结果。 Postmark 是用随机数来产生所操作文件的序号,从而使测试更加贴近于现实应用。输出结果中比较重要的输出数据包括测试总时间、每秒钟平均完成的事务数、在事务处理中平均每秒创建和删除的文件数,以及读和写的平均传输速度。
URL :
(4) Filebench
Filebench 是一款文件系统性能的自动化测试工具,它通过快速模拟真实应用服务器的负载来测试文件系统的性能。它不仅可以仿真文件系统微操作(如 copyfiles, createfiles, randomread, randomwrite ),而且可以仿真复杂的应用程序(如 varmail, fileserver, oltp, dss, webserver, webproxy )。 Filebench 比较适合用来测试文件服务器性能,但同时也是一款负载自动生成工具,也可用于文件系统的性能。
URL :
测试 方法
本次测试主要使用DD 和Postmark 两个工具进行性能测试,DD 用于大致测试IOPS 和数据吞吐量,Postmark 用于测试海量小文件创建性能表现。测试过程中,使用TOP 观测系统负载变化。
(1) DD 测试方法
五个StorNext SAN 客户端同行运行DD ,命令行参数如下:
Dd if=/dev/zero of=/mnt/snfs/f100g bs=1KB count=100M (小写)
Dd if=/mnt/snfs/f100g of=/dev/null bs=1KB (小读)
Dd if=/dev/zero of=/mnt/snfs/f160g bs=16MB count=10K (大写)
Dd if=/mnt/snfs/f160g of=/dev/null bs=16MB (大读)
(2) Postmark 测试方法
五个StorNext SAN 客户端同时运行两个Postmark 进程,总共10 个进程。每轮测试创建1000 万个2~6KB 小文件,平均到每个进程为100 万。Postmark 对所创建的文件进行删除测试,为了让StorNext累积文件数,我对Postmark 进行了修改,使其创建文件而不删除。10 轮测试后,系统中文件数量可以达到1 亿。然后再进行持续压力测试,每个进程创建2 亿小文件,最后系统中文件总数可达到21 亿个。Postmark 参数配置说明如下:
set size 1024 1024000 # 文件大小设定为1KB~1MB
set number 1000000 # 文件数量,测试前指定
set location /home/anita/Documents #StorNext mount 点
run # 执行测试
quit # 完成退出并输出结果
一、Postmark原理
Postmark是由著名的NAS提供商NetApp开发,用来测试其产品的后端存储性能。
Existing file system benchmarks are deficient in portraying performance in the ephemeral small-file
regime used by Internet software, especially:
electronic mail;
netnews; and
web-based commerce.
Postmark主要用于测试文件系统在邮件系统或电子商务系统,新闻组中性能,这类应用的特点是:需要频繁、大量地存取小文件。
Although a panoply of file system benchmarks currently exists, most emphasize raw throughput or
performance on large, relatively long-lived groups of files. Current file servers provide services such as electronic mail, netnews, and commerce service, which depend on enormous numbers of relatively shortlived files. These systems are inherited from an era predating the exponential growth of the Internet and were never envisioned as being scaleable to today's required levels.
传统的测试工具只是测试原始吞量,而当前的文件系统提供如电子邮件,新闻组,电子商务类的服务,这些服务一般是大量的小文件的读写。
Postmark的测试原理是创建一个测试文件池。文件的数量和最大、最小长度可以设定,数据总量是一定的。创建完成后,Postmark对文件池进行一系列的事务(transaction)操作,根据从实际应用中统计的结果,设定每一个事务包括一次创建或删除操作和一次读或添加操作,在有些情况下,
The incidence of each transaction type and its affected files are chosen randomly to minimize the influence of file system caching, file read ahead, and disk level caching and track buffering. This incidence can be tuned by setting either the read or create bias parameters to produce the desired results.
文件系统的缓存策略可能对性能造成影响。每一个事务的发生的概率和它影响的文件是被随机选择的,这可以减少文件缓存的影响。通过设置read 和 create偏向参数可以得到需要的结果。事务操作进行完毕后,Post对文件池进行删除操作,并结束测试,输出结果。
Postmark是用随机数来产生所操作文件的序号,从而使测试更加贴近于现实应用。
When a file is created, a random initial length is selected, and text from a random pool is appended up to the chosen length.
一旦一个文件被创建,他会有一个随机的长度。
File deletion selects a random file from the list of active files and deletes it.
文件删除:从活动文件链表中选择随机选择一个文件,并删除。
输出结果中比较重要的输出数据包括测试总时间、每秒钟平均完成的事务数、在事务处理中平均每秒创建和删除的文件数,以及读和写的平均传输速度。
Appending data to a file opens a random file, seeks to its current end, and writes a random amount of data.This value is chosen to be less than the configured file size high bound. If the file is already at the
maximum size, no further data will appended.
打开一个随机文件,向里面添加数据,先找到当前的结尾,然后随机写入一系列数据。这个值必须在文件文件大小范围之内。如果这个文件已经是最大的size,那么将不会再向里面添加数据。
When all of the transactions have completed, the remaining active files are all deleted (also producing
statistics on continuous file deletion).
当所有的事务处理完成之后,仍然active的文件将被全部删除。
postmark软件只有一个.c文件,在gcc下编译即可。假定编译之后的可执行文件名为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有两种使用方法:
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将上面配置文件中的命令在命令行中依次执行,结果是相同的,没有任何区别。