zoukankan      html  css  js  c++  java
  • Linux测试磁盘性能iops

    使用fio测试

    安装

    # yum install fio -y

    编译安装

    # wget https://brick.kernel.dk/snaps/fio-3.20.tar.gz

    # tar xfz fio-3.20.tar.gz

    cd fio-3.20

    # ./configure

    # make

    # make install

    测试

    [root@iZzm446eh1ux98Z ~]# fio -ioengine=libaio -bs=4k -direct=0 -thread -rw=read -filename=/dev/sda1 -name="BS 4KB read test" -iodepth=16 -runtime=60
    BS 4KB read test: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=16
    fio-3.20
    Starting 1 thread
    Jobs: 1 (f=1): [R(1)][100.0%][r=641MiB/s][r=164k IOPS][eta 00m:00s]
    BS 4KB read test: (groupid=0, jobs=1): err= 0: pid=16047: Sun Jun 28 21:30:38 2020
      read: IOPS=153k, BW=598MiB/s (627MB/s)(15.0GiB/25707msec)
        slat (nsec): min=1626, max=220546k, avg=2096.61, stdev=209721.20
        clat (usec): min=2, max=220664, avg=99.45, stdev=1256.62
         lat (usec): min=5, max=220667, avg=102.32, stdev=1282.00
        clat percentiles (usec):
         |  1.00th=[   83],  5.00th=[   83], 10.00th=[   84], 20.00th=[   84],
         | 30.00th=[   84], 40.00th=[   84], 50.00th=[   85], 60.00th=[   88],
         | 70.00th=[   92], 80.00th=[  100], 90.00th=[  109], 95.00th=[  114],
         | 99.00th=[  133], 99.50th=[  147], 99.90th=[  217], 99.95th=[  293],
         | 99.99th=[  881]
       bw (  KiB/s): min=377434, max=710932, per=100.00%, avg=612985.96, stdev=106735.99, samples=50
       iops        : min=94358, max=177733, avg=153246.10, stdev=26683.99, samples=50
      lat (usec)   : 4=0.01%, 10=0.01%, 20=0.01%, 50=0.01%, 100=80.59%
      lat (usec)   : 250=19.35%, 500=0.05%, 750=0.01%, 1000=0.01%
      lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01%, 20=0.01%, 250=0.01%
      cpu          : usr=46.33%, sys=51.84%, ctx=10439, majf=1, minf=26
      IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=100.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.1%, 32=0.0%, 64=0.0%, >=64=0.0%
         issued rwts: total=3932160,0,0,0 short=0,0,0,0 dropped=0,0,0,0
         latency   : target=0, window=0, percentile=100.00%, depth=16
    
    Run status group 0 (all jobs):
       READ: bw=598MiB/s (627MB/s), 598MiB/s-598MiB/s (627MB/s-627MB/s), io=15.0GiB (16.1GB), run=25707-25707msec

    结果说明

    io=执行了多少M的IO
    
    bw=平均IO带宽
    iops=IOPS
    runt=线程运行时间
    slat=提交延迟,提交该IO请求到kernel所花的时间(不包括kernel处理的时间)
    clat=完成延迟, 提交该IO请求到kernel后,处理所花的时间
    lat=响应时间
    bw=带宽
    cpu=利用率
    IO depths=io队列
    IO submit=单个IO提交要提交的IO数
    IO complete=Like the above submit number, but for completions instead.
    IO issued=The number of read/write requests issued, and how many of them were short.
    IO latencies=IO完延迟的分布
    
    io=总共执行了多少size的IO
    aggrb=group总带宽
    minb=最小.平均带宽.
    maxb=最大平均带宽.
    mint=group中线程的最短运行时间.
    maxt=group中线程的最长运行时间.
    
    ios=所有group总共执行的IO数.
    merge=总共发生的IO合并数.
    ticks=Number of ticks we kept the disk busy.
    io_queue=花费在队列上的总共时间.

    参数说明

    参数说明:
    filename=/dev/sdb1 测试文件名称,通常选择需要测试的盘的data目录。
    direct=1 是否使用directIO,测试过程绕过OS自带的buffer,使测试磁盘的结果更真实。Linux读写的时候,内核维护了缓存,数据先写到缓存,后面再后台写到SSD。读的时候也优先读缓存里的数据。这样速度可以加快,但是一旦掉电缓存里的数据就没了。所以有一种模式叫做DirectIO,跳过缓存,直接读写SSD。 
    rw=randwrite 测试随机写的I/O
    rw=randrw 测试随机写和读的I/O
    bs=16k 单次io的块文件大小为16k
    bsrange=512-2048 同上,提定数据块的大小范围
    size=5G 每个线程读写的数据量是5GB。
    numjobs=1 每个job(任务)开1个线程,这里用了几,后面每个用-name指定的任务就开几个线程测试。所以最终线程数=任务数(几个name=jobx)* numjobs。 
    name=job1:一个任务的名字,重复了也没关系。如果fio -name=job1 -name=job2,建立了两个任务,共享-name=job1之前的参数。-name之后的就是job2任务独有的参数。 
    thread  使用pthread_create创建线程,另一种是fork创建进程。进程的开销比线程要大,一般都采用thread测试。 
    runtime=1000 测试时间为1000秒,如果不写则一直将5g文件分4k每次写完为止。
    ioengine=libaio 指定io引擎使用libaio方式。libaio:Linux本地异步I/O。请注意,Linux可能只支持具有非缓冲I/O的排队行为(设置为“direct=1”或“buffered=0”);rbd:通过librbd直接访问CEPH Rados 
    iodepth=16 队列的深度为16.在异步模式下,CPU不能一直无限的发命令到SSD。比如SSD执行读写如果发生了卡顿,那有可能系统会一直不停的发命令,几千个,甚至几万个,这样一方面SSD扛不住,另一方面这么多命令会很占内存,系统也要挂掉了。这样,就带来一个参数叫做队列深度。
    Block Devices(RBD),无需使用内核RBD驱动程序(rbd.ko)。该参数包含很多ioengine,如:libhdfs/rdma等
    rwmixwrite=30 在混合读写的模式下,写占30%
    group_reporting 关于显示结果的,汇总每个进程的信息。
    此外
    lockmem=1g 只使用1g内存进行测试。
    zero_buffers 用0初始化系统buffer。
    nrfiles=8 每个进程生成文件的数量。
    磁盘读写常用测试点:
    1. Read=100% Ramdon=100% rw=randread (100%随机读)
    2. Read=100% Sequence=100% rw=read (100%顺序读)
    3. Write=100% Sequence=100% rw=write (100%顺序写)
    4. Write=100% Ramdon=100% rw=randwrite (100%随机写)
    5. Read=70% Sequence=100% rw=rw, rwmixread=70, rwmixwrite=3070%顺序读,30%顺序写)
    6. Read=70% Ramdon=100% rw=randrw, rwmixread=70, rwmixwrite=30
    (70%随机读,30%随机写)
    
    原文链接:https://blog.csdn.net/don_chiang709/java/article/details/92628623
  • 相关阅读:
    MVC 数据库增删改查(2) 视图
    MVC 数据库增删改查(1)
    委托的4种写法
    wpf 多线程操作(2)
    wpf 多线程操作例(1)
    网络抓取邮箱
    wpf 点击新建弹出新的窗口
    wpf 数据绑定 联系
    wpf 在listview里添加数据
    面向对象:抽象基类,接口
  • 原文地址:https://www.cnblogs.com/zh-dream/p/13205172.html
Copyright © 2011-2022 走看看