一、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将上面配置文件中的命令在命令行中依次执行,结果是相同的,没有任何区别

p​o​s​t​m​a​r​k​使​用的更多相关文章

  1. CF 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和(数位DP)

    题意: 给你三个数字L, R, K,问在[L, R]范围内有多少个数字满足它每一位不同数字不超过k个,求出它们的和 分析:考虑用状态压缩 , 10给位0~9 , 如果之前出现过了某个数字x ,那就拿当 ...

  2. Codeforces Round #377 (Div. 2) A. Buy a Shovel【暴力/口袋里面有无限枚 10 元和一枚 r 面值的硬币,问最少可以买多少把价值为 k 的铁铲】

    A. Buy a Shovel time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  3. luogu P3834 【模板】可持久化线段树 1(主席树) 查询区间 [l, r] 内的第 k 小/大值

    ————————————————版权声明:本文为CSDN博主「ModestCoder_」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明.原文链接:https:// ...

  4. (任意进制转换)将 r 进制数转成 k 进制数

    我们知道任意进制转换为十进制,都是乘以基数的多少次方,然后相加: 十进制转换为任意进制,都是除以基数,然后倒着取余数: 所以这里是用十进制数中转,实现任意进制数的转换 #include<iost ...

  5. 机器学习之寻找KMeans的最优K

    K-Means聚类算法是最为经典的,同时也是使用最为广泛的一种基于划分的聚类算法,它属于基于距离的无监督聚类算法.KMeans算法简单实用,在机器学习算法中占有重要的地位.对于KMeans算法而言,如 ...

  6. 几种经典排序算法的R语言描述

    1.数据准备 # 测试数组 vector = c(,,,,,,,,,,,,,,) vector ## [] 2.R语言内置排序函数 在R中和排序相关的函数主要有三个:sort(),rank(),ord ...

  7. 区间K 大数查询

      算法训练 区间k大数查询   时间限制:1.0s   内存限制:256.0MB 问题描述 给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个. 输入格式 第一行包含一个数n,表示序列 ...

  8. 主席树入门(区间第k大)

    主席树入门 时隔5个月,我又来填主席树的坑了,现在才发现学算法真的要懂了之后,再自己调试,慢慢写出来,如果不懂,就只会按照代码敲,是不会有任何提升的,都不如不照着敲. 所以搞算法一定要弄清原理,和代码 ...

  9. BZOJ 3110 【Zjoi2013】 K大数查询

    Description 有N个位置,M个操作.操作有两种,每次操作如果是1 a b c的形式表示在第a个位置到第b个位置,每个位置加入一个数c如果是2 a b c形式,表示询问从第a个位置到第b个位置 ...

随机推荐

  1. elixir 基础数据结构

     Elixir中的一些基础的数据结构:整数,浮点数,字符串,原子,列表,元组  整数,浮点数,字符串 跟其他语言差不多  原子:名字为值的常量  在ruby类似Symbols  在erlang是用大写 ...

  2. Android内核漏洞利用技术实战:环境搭建&栈溢出实战

    前言 Android的内核采用的是 Linux 内核,所以在Android内核中进行漏洞利用其实和在 一般的 x86平台下的 linux 内核中进行利用差不多.主要区别在于 Android 下使用的是 ...

  3. Sink Prosessor - Flume的可靠性保证:故障转移、负载均衡

    Flume的一些组件(如Spooling Directory Source.File Channel)能够保证agent挂掉后不丢失数据. 1.负载均衡 1)Load balancing Sink P ...

  4. git下配置github sshkey

    教程看这里 http://xiaxveliang.blog.163.com/blog/static/29708034201341244759225/

  5. 最常见到的runtime exception 异常

    ArithmeticException, 算术异常ArrayStoreException, 将数组类型不兼容的值赋值给数组元素时抛出的异常BufferOverflowException, 缓冲区溢出异 ...

  6. Sun Solairs系统添加裸设备

    Sun Solaris系统添加裸设备对表空间进行扩容的大体操作步骤. 1.查看当前卷组信息 --查看当前卷组信息#vxdg list --查看当前卷组中物理磁盘的使用情况#vxdg free |gre ...

  7. SQLServer中DataLength()和Len()两内置函数的区别

    最近工作中遇到了个问题:在数据库中声明字段类型时char(4),但实际只存储了‘DCE’三个字母,程序中拼装以该字段作为key的Map中,会把‘DCE’+空格作为其Key,这样造成用没加空格的‘DCE ...

  8. Oracle GoldenGate OGG管理员手册(较早资料)

    第一章 系统实现简述 前言 编写本手册的目的是为系统管理员以及相关操作人员提供 Oracle  Goldengat  软 件的日常维护和使用的技术参考: 3 ORACLE 第二章 OGG 日常维护操作 ...

  9. [翻译] ASFTableView

    ASFTableView A customizable Web like multi column table view for iOS with header and inner rows. 一个类 ...

  10. [翻译] JFMinimalNotifications

    JFMinimalNotifications This is an iOS UIView for presenting a beautiful notification that is highly ...