fio安裝使用


# wget http://brick.kernel.dk/snaps/fio-2.2.5.tar.gz
# tar xvf fio-2.2.5.tar.gz
# cd fio-2.2.5
# ./configure
# make && make install

FIO的用法:
FIO分順序讀,隨機讀,順序寫,隨機寫,混合隨機讀寫模式。
這是一個順序讀的模式:
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=read -ioengine=psync -bs=16k -size=5G -numjobs=30 -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/sda -direct=1 -iodepth 1 -thread -rw=randread -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
順序寫:
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=write -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
隨機寫:
fio -filename=/dev/sda -direct=1 -iodepth 1 -thread -rw=randwrite -ioengine=psync -bs=16k -size=200G -numjobs=30 -runtime=1000 -group_reporting -name=mytest
混合隨機讀寫:
fio -filename=/dev/sda -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
上面的測試是磁盤還沒有分區格式化

實際測試范例,針對已分區格式化形式
測試混合隨機讀寫:
# fio -filename=/app/mysqldata1 -direct=1 -iodepth 1 -thread -rw=randrw -rwmixread=70 -ioengine=psync -bs=16k -size=10G -numjobs=30 -runtime=100 -group_reporting -name=mytest1
roup_reporting -name=mytest1
mytest1: (g=0): rw=randrw, bs=16K-16K/16K-16K/16K-16K, ioengine=psync, iodepth=1
...
fio-2.2.5
Starting 30 threads
Jobs: 1 (f=1): [_(29),m(1)] [4.6% done] [60579KB/26277KB/0KB /s] [3786/1642/0 iops] [eta 35m:10s]
mytest1: (groupid=0, jobs=30): err= 0: pid=17802: Tue Mar 12 15:46:49 2019
  read : io=9635.3MB, bw=98656KB/s, iops=6165, runt=100009msec
    clat (usec): min=242, max=234613, avg=3549.81, stdev=4541.78
     lat (usec): min=242, max=234613, avg=3550.11, stdev=4541.84
    clat percentiles (usec):
     |  1.00th=[ 1048],  5.00th=[ 1336], 10.00th=[ 1512], 20.00th=[ 1784],
     | 30.00th=[ 2064], 40.00th=[ 2416], 50.00th=[ 2832], 60.00th=[ 3280],
     | 70.00th=[ 3760], 80.00th=[ 4384], 90.00th=[ 5600], 95.00th=[ 7328],
     | 99.00th=[18816], 99.50th=[20608], 99.90th=[38144], 99.95th=[104960],
     | 99.99th=[211968]
    bw (KB  /s): min=  510, max= 4448, per=3.34%, avg=3292.70, stdev=493.14
  write: io=4144.6MB, bw=42437KB/s, iops=2652, runt=100009msec
    clat (usec): min=142, max=55798, avg=3045.06, stdev=1843.06
     lat (usec): min=142, max=55799, avg=3046.51, stdev=1844.03
    clat percentiles (usec):
     |  1.00th=[  290],  5.00th=[ 1012], 10.00th=[ 1368], 20.00th=[ 1720],
     | 30.00th=[ 1992], 40.00th=[ 2288], 50.00th=[ 2704], 60.00th=[ 3120],
     | 70.00th=[ 3600], 80.00th=[ 4192], 90.00th=[ 5088], 95.00th=[ 5984],
     | 99.00th=[ 8384], 99.50th=[10432], 99.90th=[19328], 99.95th=[21888],
     | 99.99th=[35584]
    bw (KB  /s): min=  128, max= 2226, per=3.34%, avg=1415.95, stdev=261.99
    lat (usec) : 250=0.21%, 500=0.41%, 750=0.44%, 1000=0.94%
    lat (msec) : 2=26.65%, 4=46.33%, 10=23.32%, 20=1.23%, 50=0.42%
    lat (msec) : 100=0.01%, 250=0.05%
  cpu          : usr=0.09%, sys=2.90%, ctx=880888, majf=0, minf=7
  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    : total=r=616655/w=265252/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
     latency   : target=0, window=0, percentile=100.00%, depth=1
Run status group 0 (all jobs):
   READ: io=9635.3MB, aggrb=98655KB/s, minb=98655KB/s, maxb=98655KB/s, mint=100009msec, maxt=100009msec
  WRITE: io=4144.6MB, aggrb=42436KB/s, minb=42436KB/s, maxb=42436KB/s, mint=100009msec, maxt=100009msec
Disk stats (read/write):
    dm-0: ios=616673/265257, merge=0/0, ticks=584135/79775, in_queue=663909, util=99.98%, aggrios=616677/265258, aggrmerge=0/0, aggrticks=583355/79389, aggrin_queue=662276, aggrutil=99.96%
  sda: ios=616677/265258, merge=0/0, ticks=583355/79389, in_queue=662276, util=99.96%
 
 
# fio --help
fio-2.1.10
fio [options] [job options] <job file(s)>
  --debug=options Enable debug logging. May be one/more of:
   process,file,io,mem,blktrace,verify,random,parse,
   diskutil,job,mutex,profile,time,net,rate
  --parse-only  Parse options only, don't start any IO
  --output  Write output to file
  --runtime  Runtime in seconds
  --latency-log  Generate per-job latency logs
  --bandwidth-log Generate per-job bandwidth logs
  --minimal  Minimal (terse) output
  --output-format=x Output format (terse,json,normal)
  --terse-version=x Set terse version output format to 'x'
  --version  Print version info and exit
  --help  Print this page
  --cpuclock-test Perform test/validation of CPU clock
  --crctest  Test speed of checksum functions
  --cmdhelp=cmd  Print command help, "all" for all of them
  --enghelp=engine Print ioengine help, or list available ioengines
  --enghelp=engine,cmd Print help for an ioengine cmd
  --showcmd  Turn a job file into command line options
  --eta=when  When ETA estimate should be printed
              May be "always", "never" or "auto"
  --eta-newline=time Force a new line for every 'time' period passed
  --status-interval=t Force full status dump every 't' period passed
  --readonly  Turn on safety read-only checks, preventing writes
  --section=name Only run specified section in job file
  --alloc-size=kb Set smalloc pool to this size in kb (def 1024)
  --warnings-fatal Fio parser warnings are fatal
  --max-jobs=nr  Maximum number of threads/processes to support
  --server=args  Start a backend fio server
  --daemonize=pidfile Background fio server, write pid to file
  --client=hostname Talk to remote backend fio server at hostname
  --idle-prof=option Report cpu idleness on a system or percpu basis
   (option=system,percpu) or run unit work
   calibration only (option=calibrate)
Fio was written by Jens Axboe <jens.axboe@oracle.com>
                   Jens Axboe <jaxboe@fusionio.com>
                   Jens Axboe <axboe@fb.com>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM