CentOS中使用FIO测试磁盘IO性能

2019-10-28 07:29 来源:未知
  1. 顺序读:

 

  1. 随机写:

     本测试类型为所有worker的一个target增加未处理I/O的数量,然后为所有worker增加target数量。例如,如果每个worker有两个target,# of Outstanding I/O End = 3,该测试类型将运行六次:

FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持19种不同的I/O引擎,包括:sync, mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。
FIO官网:http://freecode.com/projects/fio/

     为每一个测试的每一个磁盘worker的每一个磁盘增加未处理I/O的数量(对于网络worker,该值总是1)。测试数量由# of Outstanding I/O参数决定。例如,如果# of Outstanding I/O参数的终止(End)值为4,本测试类型将运行四次。

$ fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file

 

$ fio -filename=/dev/sda1 -direct=1 -rw=randread -bs=4k -size 60G -numjobs=64 -runtime=10 -group_reporting -name=file
file: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1
... 
file: (g=0): rw=randread, bs=4K-4K/4K-4K, ioengine=sync, iodepth=1 
fio 1.57
Starting 64 processes 
Jobs: 4 (f=4): [______r_______________________r_r_______r_______________________] [3.5% done] [745K/0K /s] [181 /0 iops] [eta 12m:26s]s] 
file: (groupid=0, jobs=64): err= 0: pid=8717
read : io=15792KB, bw=1532.2KB/s, iops=383, runt= 10307msec
clat (usec): min=78 , max=1303.3K, avg=99439.90, stdev=12973.11
lat (usec): min=78 , max=1303.3K, avg=99440.39, stdev=12973.10
bw (KB/s) : min= 3, max= 150, per=2.52%, avg=38.61, stdev= 2.45
cpu : usr=0.01%, sys=0.68%, ctx=4026, majf=0, minf=1961
IO depths : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
complete : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
issued r/w/d: total=3948/0/0, short=0/0/0
lat (usec): 100=0.13%, 250=0.61%, 500=0.25%, 750=0.08%, 1000=0.03%
lat (msec): 2=0.03%, 4=0.10%, 10=0.76%, 20=1.85%, 50=10.61%
lat (msec): 100=18.90%, 250=47.21%, 500=19.02%, 750=0.28%, 1000=0.10%
lat (msec): 2000=0.05%

Run status group 0 (all jobs):
READ: io=15792KB, aggrb=1532KB/s, minb=1568KB/s, maxb=1568KB/s, mint=10307msec, maxt=10307msec

Disk stats (read/write):
sda: ios=3931/13, merge=0/13, ticks=584686/184, in_queue=584841, util=98.53%

 

  1. 所有manager使用一个worker(第一个选中的worker)
  2. 所有manager使用两个worker(前两个选中的worker)
  3. 所有manager使用三个worker(所有三个worker)

 

     本测试类型将为每一个测试中的每一个worker增加target数量。测试数量由每个worker的target数量的最大值决定。例如,每个worker有三个target,那么本测试类型将运行三个测试:

  1. 随机读:

     本测试类型将为每一个测试中的一个worker增加target数量,然后重新开始为每一个测试中的两个worker增加target数量,以此类推。测试数量由【每个manager的worker数量的最大值】与【每个worker的target数量的最大值】的乘积决定的。例如,如果每个manager有三个worker,每个worker有两个target,那么该测试类型将运行六个测试:

PS:
filename=/dev/sda1:测试文件名称,通常选择需要测试的盘的data目录
direct=1:测试过程绕过机器自带的buffer。使测试结果更真实
rw=randwrite:测试随机写的I/O
rw=randrw:测试随机写和读的I/O
rw=randread:测试随机读的I/O
bs=4k:单次io的块文件大小为4k
bsrange=512-2048:同上,提定数据块的大小范围
size=60g:本次的测试文件大小为60g,以每次4k的io进行测试
numjobs=64:本次的测试线程为64
runtime=10:测试时间为10秒,如果不写则一直将5g文件分4k每次写完为止
ioengine=psync:io引擎使用pync方式
rwmixwrite=30:在混合读写的模式下,写占30%
group_reporting:关于显示结果的,汇总每个进程的信息。
此外
32450新蒲京网站,lockmem=1g:只使用1g内存进行测试
zero_buffers:用0初始化系统buffer
nrfiles=8:每个进程生成文件的数量。

     # of Outstanding I/Os – 用于为“Cycle # Outstanding I/Os”和“Cycle # Outstanding I/Os and Targets”确定未处理I/O的起始和最终数量,步进值和步进类型。对于以上两种测试类型,它会覆盖Disk Targets tab中的# of Outstanding I/Os字段,所有其它测试类型都忽略该控制字段。默认起始值 = 1,最终值 = 32,power base = 2,指数步进类型。网络worker忽略该字段,它的# Outstanding I/Os总是1。

0x03 实例测试

 

$ fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file

 

$ fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file

Increment Targets Serial – Add step targets at a time


特定应用测试:
(1) 文件服务器
transfer request size为64 Kbytes;
percent random/sequential distribution为100%随机;
percent read/write distribution为80%读 20%写。

0x02 命令

 

 

$ fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file

l  为来自不同适配器卡的磁盘分配worker,从而观察在将工作量分布到其他适配器卡之后的系统可伸缩性(scalability)

$ yum install fio

 

Cycle Targets and Workers – add step targets at a time spread across workers

此例是测试随机读,文中bw=1532.2KB/s, iops=383即是测试出的iops

of Outstanding I/Os per target – 被选中worker的每个磁盘一次所允许的未处理的异步I/O的数量。模拟测试多个应用向 IO 请求读写,默认是 1。通常不用这个参数,除非是用在 NAS/SAN 上面。此参数和”Test Setup”面板上的Cycling Options 有关。(注意:如果操作完成的非常快,磁盘实际看到的队列深度可能更少,默认值是1)举个例子:假设选中了一个Manager,选中8个disk,指定# of Outstanding I/O of =16,磁盘被分布到各个worker(每个worker分到2个disk),每个worker对其下的每一个disk生成最大16个未处理I/O,那么整个系统中该Manager每次将生成最多128个未处理I/O(4 worker * 2disk/worker * 16未处理I/O/disk)。

  1. 混合随机读写:

 

博客地址:http://yangfannie.com

(2) Web 服务器
transfer request size为512 Kbytes;
percent random/sequential distribution为100%随机;
percent read/write distribution为100%读。

0x01 安装

     Cycle #Outstanding I/O and Targets – run step outstanding I/Oson step targets at a time.

$ fio -filename=/dev/sda1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=30 -ioengine=psync -bs=4k -size=60G -numjobs=64 -runtime=10 -group_reporting -name=file -ioscheduler=noop

 

可以直接yum进行安装,也可以下载压缩包进行安装

l  为同一个磁盘指派worker,观察增加请求队列的结果

  1. 顺序读:

 

 

本测试类型为每一个测试中的每一个manager增加worker的数量。测试的数量是由每个manager的worker数量的最大值来决定的。例如,如果每个manager有三个worker,本测试将运行三个测试:

Test Setup 面板
Run Time:
设置测试运行时间
Ramp Up Time:
一些高级的 RAID 系统通常会有一块 RAM 当做 IOcache,为避免开始得到的数据来自于这些cache,系统会将这个参数设置的时间不列入最后的性能计算,以便得到真正的 IO值

Increment Targets Parallel – add step targets to all mangers at a time.

 

 

     该测试可用于以下场合:

有以下测试类型可供选择,为了简单起见,每个测试用例都将假设所有的对象数量起始值为1,步进类型为线性,步进值是1。

 

 

Cycle #Outstanding I/O – run step outstanding I/Os on all disks at a time.

l  将worker置于单独的系统,观察一个共享总线的伸缩效果

     Normal – run all selected targets for all workers: 本测试类型只采用所有对象数量的默认值运行一个测试:所有manager的所有worker都是活动的,所有选中的target将被每一个worker使用,每个磁盘的未处理I/O由Disk Targets tab中的“# of Outstanding I/Os”字段指定。

本测试类型可用于确定一次性从所有客户端增加服务器负载的影响。

 

     该测试类型可用于总线和网络的可伸缩性的特征化。

 

 

     本测试类型增加每一个测试的每一个Manager的target数量,分发给该manager的worker。测试数量由【每个worker的target数量的最大值】与【每个manager的worker数量的最大值】的乘积决定。例如,如果每个manager有两个worker,每个worker有两个target,那么本测试类型将运行四个测试:

下面介绍Test Setup tab下的Cycling Options,理解它有助于构建复杂的测试环境,满足对不同场景的需求。

  1. 所有worker对所有选中的target上的每一个target使用1个未处理I/O
  2. 所有worker对所有选中的target上的每一个target使用2个未处理I/O
  3. 所有worker对所有选中的target上的每一个target使用3个未处理I/O
  4. 所有worker对所有选中的target上的每一个target使用4个未处理I/O

Cycle Workers – add step workers using all selected targets at a time

     本测试类型可用于确定来自许多客户端到服务器的总负载增加量的影响。

 

     本测试类型增加每一个测试中所有Manager的target总数,并分发给每一个manager的worker。测试数量由【manager的数量】、【每个manager的worker数量的最大值】以及【每个worker的target数量的最大值】的乘积决定。例如,如果每个manager有两个worker,每个worker有两个target,本测试类型将运行八个测试:

 

 

     需要注意的是,每个target所接收到的未处理I/O总量是每个worker的未处理I/O数量与使用该target的worker数量的乘积。

     Workers – 用于为“Cycle Workers“和”Cycle Targets and workers“测试类型确定初始worker的数量、步进大小、步进类型(线性或指数),其它所有测试类型都忽略该控制字段(文本框将是灰掉的)。

Cycle Targets – add step targets for all workers at a time

此测试类型可用于快速测试当前系统配置,它也是默认测试类型。

 

  1. 所有worker对1个target使用1个未处理I/O
  2. 所有worker对1个target使用2个未处理I/O
  3. 所有worker对1个target使用3个未处理I/O
  4. 所有worker对2个target上的每一个target使用1个未处理I/O
  5. 所有worker对2个target上的每一个target使用2个未处理I/O
  6. 所有worker对2个target上的每一个target使用3个未处理I/O
  1. 所有worker使用一个target(第一个选中的target)
  2. 所有worker使用两个target(前两个选中的target)
  3. 所有worker使用三个target(所有三个target)

l  将worker指派给同一个磁盘,观察递增的传输请求队列

这种测试可用于几种不同的场合,例如:

 

l  如果这些worker位于单独的系统,允许测试共享总线

 

     Targets – 用于为“Cycle Targets“、”Increment Targets Parallel“、”Increment  Targets Serial”、”Cycle Targets and Workers”和“Cycle # Outstanding I/Os and Targets”测试类型确定初始target的数量、步进大小、步进类型(线性或指数),其它所有测试类型都忽略该控制字段。默认起始值 = 1,步进值 = 1,线性步进类型。

l  为分布在不同适配器上的磁盘指派worker,观察同一个系统上负载严重的适配器卡的interaction

(3) 在线交易OLTP
transfer request size为8 Kbytes;
percent random/sequential distribution为100%随机;
percent read/write distribution为67%读%33%写。

TAG标签:
版权声明:本文由32450新蒲京网站发布于葡萄游戏厅_棋牌游戏,转载请注明出处:CentOS中使用FIO测试磁盘IO性能