ceph io性能测试


vdbench测试

HD:主机定义

·        如果您希望展示当前主机,则设置 hd= localhost。如果希望指定一个远程主机,hd= label。

·        system= IP 地址或网络名称。

·        clients= 用于模拟服务器的正在运行的客户端数量。

SD:存储定义

·        sd= 标识存储的名称。

·        host= 存储所在的主机的 ID。

·        lun= 原始磁盘、磁带或文件系统的名称。vdbench 也可为您创建一个磁盘。

·        threads= 对 SD 的最大并发 I/O 请求数量。默认为 8。

·        hitarea= 调整读取命中百分比的大小。默认为 1m。

·        openflags= 用于打开一个 lun 或一个文件的 flag_list。

WD:工作负载定义

·        wd= 标识工作负载的名称。

·        sd= 要使用的存储定义的 ID。

·        host= 要运行此工作负载的主机的 ID。默认设置为 localhost。

·        rdpct= 读取请求占请求总数的百分比。

·        rhpct= 读取命中百分比。默认设置为 0。

·        whpct= 写入命中百分比。默认设置为 0。

·        xfersize= 要传输的数据大小。默认设置为4k。

·        seekpct= 随机寻道的百分比。可为随机值。

·        openflags= 用于打开一个 lun 或一个文件的 flag_list。

·        iorate= 此工作负载的固定 I/O 速率。

RD:运行定义

·        rd= 标识运行的名称。

·        wd= 用于此运行的工作负载的ID。

·        iorate= (#,#,...) 一个或多个 I/O 速率。

·        curve:性能曲线(待定义)。

·        max:不受控制的工作负载。

·        apsed= time:以秒为单位的运行持续时间。默认设置为 30。

·        warmup= time:加热期,最终会被忽略。

·        distribution= I/O 请求的分布:指数、统一或确定性。

·        pause= 在下一次运行之前休眠的时间,以秒为单位。

·        openflags= 用于打开一个 lun 或一个文件的 flag_list。

对于一个文件系统

对于一个文件系统,配置以下参数:

HD:主机定义。与虚拟块设备相同。

FSD:文件系统定义

·        fsd= 标识文件系统定义的名称

·        anchor= 将在其中创建目录结构的目录

·        width= 要在定位符下创建的目录数

·        depth= 要在定位符下创建的级别数

·        files= 要在最低级别创建的文件数

·        sizes= (size,size,...) 将创建的文件大小

·        distribution= bottom(如果希望仅在最低级别创建文件)和 all(如果希望在所有目录中创建文件)

·        openflags= 用于打开一个文件系统 (Solaris) 的 flag_list

FWD:文件系统工作负载定义

·        fwd= 标识文件系统工作负载定义的名称。

·        fsd= 要使用的文件系统定义的ID。

·        host= 要用于此工作负载的主机的 ID。

·        fileio= random 或 sequential,表示文件 I/O 将执行的方式。

·        fileselect= random 或 sequential,标识选择文件或目录的方式。

·        xfersizes= 数据传输(读取和写入操作)处理的数据大小。

·        operation= mkdir、rmdir、create、delete、open、close、read、write、getattr setattr。选择要执行的单个文件操作。

·        rdpct= (仅)读取和写入操作的百分比。

·        threads= 此工作负载的并发线程数量。每个线程需要至少 1 个文件。

RD:运行定义

·        fwd= 要使用的文件系统工作负载定义的ID。

·        fwdrate= 每秒执行的文件系统操作数量。

·        format= yes / no / only / restart / clean / directories。在开始运行之前要执行的操作。

·        operations= 覆盖 fwd 操作。选项相同。
运行之后的输出文件夹文件

每次运行后,vdbench 会创建一个包含以下文件的输出文件夹:当为测试启用了数据验证时,它可包含一些数据块中的错误的相关信息:    

  • 无效的密钥读取
  • 无效的 lba 读取(一个扇区的逻辑字节地址)
  • 无效的 SD 或 FSD 名称读取
  • 数据损坏,即使在使用错误的 lba 或密钥时
  • 数据损坏
  • 坏扇区

包含 vdbench 生成的一种逐列的 ASCII 格式的信息。一种包含报告柱状图的响应时间、文本格式的文件。包含 Java 代码写入控制台窗口的每行信息的副本。l 主要用于调试用途显示已包含用于测试的每项内容的最终结果

l、l、resourcel

  • 摘要报告
  • stdout/stderr 报告
  • 主机 N 的摘要报告
  • 最后 “nn” 行文件 /var/adm/messages 和 /var/adm/messages。每个 M 个 JVM/Slave 的目标主机 N 和主机 N 上为 0。

sdl、

每个 N 存储定义的柱状图和存储定义 “N” 报告。主要报告文件,显示为在每个报告间隔的每次运行生成的总工作负载,以及除第一个间隔外的所有间隔的加权平均值。    

  • interval:报告间隔序号
  • I/O rate:每秒观察到的平均 I/O 速率
  • MB sec:传输的数据的平均 MB 数
  • bytes I/O:平均数据传输大小
  • read pct:平均读取百分比
  • resp time:以读/写请求持续时间度量的平均响应时间。所有 vdbench 时间都以毫秒为单位。
  • resp max:在此间隔中观察到的最大响应时间。最后一行包含最大值总数。
  • resp stddev:响应时间的标准偏差
  • cpu% sys+usr:处理器繁忙 = 100(系统 + 用户时间)(Solaris、Windows、Linux)
  • cpu% sys:处理器利用率:系统时间

swat_mon.txt,swat_mon_total.txt

  • vdbench 与 Sun StorageTekTM Workload Analysis Tool (Swat)     Trace Facility (STF) 相结合,支持您重放使用 Swat 创建的一个轨迹的 I/O 工作负载。
  • Swat 使用 Create Replay File 选项创建和处理的轨迹文件会创建文件 flatfile.bin(flatfile.bin.gz 用于 vdbench403 和更高版本),其中包含 Swat 所识别的每个 I/O 操作的一条记录。
  • 这些文件包含一个格式化的报告,可将该报告导入 Swat Performance Monitor (SPM) 中来创建性能图表。

基准测试和结果

  我们运行了 3 个不同的测试。

测试 1

  在第一个测试中,使用一个 parmfile 定义对单个原始磁盘的单次运行测试。

  名为 sd1 的存储指向大小为 4MB 的设备 /dev/rdsk/c0t0d0s0。

  定义了工作负载 wd1 来在存储 sd1 上运行,其中读取操作占 100%,每个操作涉及到一个 4KB 数据块。

  定义了运行,以 100 个操作/秒的速度使用工作负载 wd1 10 秒。

清单 5. 定义了对单个原始磁盘的一次运行测试的 Parmfile

*SD: StorageDefinition *WD: Workload Definition *RD: Run Definition *sd=sd1,lun=/dev/rdsk/c0t0d0s0,size=4m wd=wd1,sd=sd1,xfersize=4096,readpct=100rd=run1,wd=wd1,iorate=100,elapsed=10,interval=1 *Single raw disk, 100% randomread of 4KB blocks at I/O rate of 100 for 10 seconds

测试 2

  在此测试期间,parmfile 定义了对一个文件系统和对远程主机 129.35.213.249 的一次测试。HD 包含安装在远程主机上的 vdbench 的完整路径,以及用于通信的 shell(ssh 或 own rsh)。

  在本例中,vdbench 表示 rsh。User=root 是拥有远程主机上的进程的用户。文件系统的定义支持创建一个包含 3 个级别的结构,每个级别包含两个目录和两个文件(借助于选项 distribution=all)。工作负载包含 80% 的读取操作(20% 的写入操作)、一个随机文件选择操作和随机文件I/O。操作涉及到 4KB 的数据块。

  该运行以最大速率使用此工作负载 600 秒,每秒抽样一次并在启动时格式化文件系统。
清单 6. 定义对一个文件系统和一个远程主机的一次测试的 Parmfile

hd=resource1,system=129.35.213.249,vdbench=/var/www/html/vdbench,shell=vdbench,user=rootfsd=fsd1,anchor=/fs,width=2,depth=3,files=2,distribution=all,size=4m,openflags=(o_dsync,o_rsync)fwd=fwd1,fsd=fsd1,host=resource1,xfersize=4096,operation=read,rdpct=80,fileselect=random,fileio=random,threads=1 rd=run1,fwd=fwd1,fwdrate=max,format=yes,elapsed=600,interval=3

测试 3

  在此测试中,parmfile 定义一个要在其中执行测试的 SmartCloud 主机。存储是一个临时创建的 1GB 大的虚拟块设备,称为 disk1.raw。

  所有设置都以再现最坏的情形(没有任何命中区域)为导向,以加快响应速度,使用 open-flags 来打开文件或设备以避免使用缓冲区缓存(o_direct)。

  工作负载定义强化了同时避免读取和写入命中 (rhpct=0whpct=0) 的概念,随机寻道百分比为 100%。该测试执行 11 次,每次按照一条定义的曲线执行 1500 秒。第一次运行尝试发现最大的 i/o 速率。其他运行将 I/O 速率增加 10%,一直从 10 增加到 100。每次运行生成一个具有指数分布的工作负载。

  清单 7. 定义要在其上执行测试的 SmartCloud 主机的 Parmfile

hd=resource1,system=129.35.209.189,vdbench=/var/www/html/vdbench503,shell=vdbench,user=root sd=sd1,lun=/home/idcuser/disk1.raw,hitarea=0m,offset=32256,openflags=o_directwd=wd1,sd=sd1,host=resource1,xfersize=4096,rdpct=40,rhpct=0,whpct=0,seekpct=100rd=run1,wd=wd1,iorate=curve,curve=(10-100,10),format=yes,elapsed=1500,warmup=18,distribution=exponential,pause=60,interval=6,threads=1

 

示例Demo:

1.先将以下4个文件准备好:

jdk-6u3-linux-i586-rpm.bin

Parmfile

vdbench502.tar

Vdbench使用指导书.doc

2.在linux下建立一个文件夹,为vdbench。

3.将上面的4个文件copy到刚才建立的文件建vdbench中。

4.安装jdk - jdk-6u3-linux-i586-rpm.bin

先赋予权限:chmod 755 *

在执行:./jdk-6u3-linux-i586-rpm.bin

执行该命令后,会让你阅读协议,一直点击回车到最后,输入yes或者y,同意协议。

5.解压tar包: tar  -xvf  vdbench502.tar

6.执行命令:./vdbench -t。对vdbench进行测试

最后输出: Vdbench execution completed successfully. Output directory: /root/vdbench/output。表示执行测试成功。

7.使用命名: vi parmfile 。进入文件,对里面的参数进行修改。

8.保存parmfile文件后。执行命令:./vdbench -f parmfile。就能达到效果了。

vdbench工具的测试命令可以如下书写:

vdbench -fsd=sd1,lun=/dev/sdb1,size=100g,align=8192,threads=64,openflags=o_dsync,openflag=o_rsync,openflag=o_direct

wd=wd1,sd=sd1,xfersize=8k,seekpct=random,rdpct=100

rd=run1,wd=wd1,iorate=max,warmup=30,elapsed=60,interval=1

-o wm

其中,lun指出待测试设备名称,threads数为线程数,xfersize为缓存空间,seekpct为测试类型,warmup为预热时间(在最后统计时会去除),elapsed指命令运行时间

 

fio测试
fio --name=test1 --filename=/dev/rbd0 --ioengine=libaio --numjobs=1 --iodepth=32 --rw=randwrite --blocksize=16k --size=100G --direct=1 --output=ranr100G.txt

二、FIO用法:
随机读:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=10 -runtime=1000 -group_reporting -name=mytest
说明:
filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
direct=1 测试过程绕过机器自带的buffer。使测试结果更真实。
rw=randwrite 测试随机写的I/O
rw=randrw 测试随机写和读的I/O
bs=16k 单次io的块文件大小为16k
bsrange=512-2048 同上,提定数据块的大小范围
size=5g 本次的测试文件大小为5g,以每次4k的io进行测试。
numjobs=30 本次的测试线程为30.
runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
ioengine=psync io引擎使用pync方式
rwmixwrite=30 在混合读写的模式下,写占30%
group_reporting 关于显示结果的,汇总每个进程的信息。
此外
lockmem=1g 只使用1g内存进行测试。
zero_buffers 用0初始化系统buffer。
nrfiles=8 每个进程生成文件的数量。
顺序读:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
随机写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
顺序写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合随机读写:
fio -filename=/dev/sdb1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=100 -group_reporting -name=mytest -ioscheduler=noop


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM