fio

fio

简介

FIO(Flexible I/O Tester) 是一款由 Jens Axboe 开发的用于测评和压力/硬件验证的自由开源的软件,支持 19 种不同类型的 I/O 引擎 (sync、mmap、libaio、posixaio、SG v3、splice、null、network、 syslet、guasi、solarisaio,以及更多), I/O 优先级(针对较新的 Linux 内核),I/O 速度,fork 的任务或线程任务等等。它能够在块设备和文件上工作。是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证。磁盘IO是检查磁盘性能的重要指标,可以按照负载情况分成照顺序读写,随机读写两大类。

测试场景

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# 100%随机,100%读, 4K
$ fio -filename=/dev/emcpowerb \
        -direct=1 \
        -iodepth 1 \
        -thread \
        -rw=randread \
        -ioengine=psync \
        -bs=4k \
        -size=1000G \
        -numjobs=50 \
        -runtime=180 \
        -group_reporting \
        -name=rand_100read_4k

# 100%随机,100%写, 4K
$ fio -filename=/dev/emcpowerb \
        -direct=1 \
        -iodepth 1 \
        -thread \
        -rw=randwrite \
        -ioengine=psync \
        -bs=4k \
        -size=1000G \
        -numjobs=50 \
        -runtime=180 \
        -group_reporting \
        -name=rand_100write_4k
#100%顺序,100%读 ,4K
$ fio \
    -filename=/dev/emcpowerb \
    -direct=1 \
    -iodepth 1 \
    -thread \
    -rw=read \
    -ioengine=psync \
    -bs=4k \
    -size=1000G \
    -numjobs=50 \
    -runtime=180 \
    -group_reporting \
    -name=sqe_100read_4k

# 100%顺序,100%写 ,4K
$ fio \
    -filename=/dev/emcpowerb \
    -direct=1 \
    -iodepth 1 \
    -thread \
    -rw=write \
    -ioengine=psync \
    -bs=4k \
    -size=1000G \
    -numjobs=50 \
    -runtime=180 \
    -group_reporting \
    -name=sqe_100write_4k

# 100%随机,70%读,30%写 4K
$ fio \
    -filename=/dev/emcpowerb \
    -direct=1 \
    -iodepth 1 \
    -thread \
    -rw=randrw \
    -rwmixread=70 \
    -ioengine=psync \
    -bs=4k \
    -size=1000G \
    -numjobs=50 \
    -runtime=180 \
    -group_reporting \
    -name=randrw_70read_4k \
    -write_bw_log=fio-test \
    -write_iops_log=fio-test \
    -write_lat_log=fio-test 

# 
$ fio \
    -ioengine=psync \
      -filename=${TestFile} \
      -bs=$bs \
      -fdatasync=0 \
      -rw=write \
      -size=1g \
      -runtime=60 \
      -name="$TEST_FILE-write-$bs"
updatedupdated2024-05-152024-05-15