Merge branch 'master' of axboe@router:/data/git/disktools
[disktools.git] / README.fio
CommitLineData
e709787c
JA
1fio
2---
3
4fio is a tool that will spawn a number of thread doing a particular
5type of io action as specified by the user. fio takes a number of
6global parameters, each inherited by the thread unless otherwise
7parameters given to them overriding that setting is given.
8
9Options
10-------
11
12$ fio
13 -s IO is sequential
86184d14 14 -b block size in KiB for each io
e709787c 15 -t <sec> Runtime in seconds
e709787c 16 -r For random io, sequence must be repeatable
02bdd9ba 17 -R <on> If one thread fails to meet rate, quit all
e709787c 18 -o <on> Use direct IO is 1, buffered if 0
a0a9b35b
JA
19 -l Generate per-job latency logs
20 -w Generate per-job bandwidth logs
7dd1389e 21 -f <file> Read <file> for job descriptions
e709787c
JA
22
23 <jobs>
24
25The <jobs> format is as follows:
26
27 rw=0/1 0 is read, 1 is write
28 prio=x Run io at prio X, 0-7 is the kernel allowed range
29 prioclass=x Run io at prio class X
30 file=foo Do the io to file foo
86184d14 31 bs=x Thread blocksize is x KiB
e709787c
JA
32 direct=x 1 for direct IO, 0 for buffered IO
33 delay=x Delay x useconds before each io
34 random IO is randomized
35 sequential IO is sequential
86184d14 36 rate=x Throttle rate to x KiB/sec
4240cfa1
JA
37 ratemin=x Quit if rate of x KiB/sec can't be met
38 ratecycle=x ratemin averaged over x msecs
18e0b78c 39 cpumask=x Allow job to run on CPUs defined by mask
4240cfa1 40 fsync=x If writing, fsync after every x blocks have been written
fc24389f 41 startdelay=x Start this thread x seconds after startup
67903a2e 42 timeout=x Terminate x seconds after startup
43000118
JA
43 aio Use Linux async io
44 aio_depth=x Allow x iocbs in flight
02983297
JA
45 size=x Set file size to x bytes (x string can include k/m/g)
46 offset=x Start io at offset x (x string can include k/m/g)
b95799ca 47 invalidate=x Invalidate page cache for file prior to doing io
74b4b5fb 48 sync=x Use sync writes if x and writing
99c6704f
JA
49 mem=x If x == malloc, use malloc for buffers. If x == shm,
50 use shm for buffers.
e709787c
JA
51
52
7dd1389e
JA
53Examples using cmd line jobs
54----------------------------
e709787c
JA
55
56Spawn 2 threads, one read and one writer. Both threads want direct and
57sequential io, set these as global options. The reader wants a 4kb block
58size and the writer a 16kb block size, set those as thread options.
59
60$ fio -o1 -s "{rw=0,file=read_file,bs=4096}" "{rw=1,file=write_file,bs=16384}"
61
62Spawn 3 reader threads doing io at priorities 0, 3, and 6. The highest
63prio thread wants direct io, the others buffered. All want a 4kb block
64size.
65
66$ fio -o0 -s -b4096 "{rw=0,file=rf1,prio=6}" "{rw=0,file=rf2,prio=3}" "{rw=0,file=rf3,prio=0,direct=1}"
67
7dd1389e
JA
68Examples using a job file
69-------------------------
70
71A sample job file doing the same as above would look like this:
72
73[read_file]
74rw=0
75bs=4096
76
77[write_file]
78rw=1
79bs=16384
80
81And fio would be invoked as:
82
83$ fio -o1 -s -f file_with_above
84
85The second example would look like this:
86
87[rf1]
88rw=0
89prio=6
90
91[rf2]
92rw=0
93prio=3
94
95[rf3]
96rw=0
97prio=0
98direct=1
99
100And fio would be invoked as:
101
102$ fio -o0 -s -b4096 -f file_with_above
103
47d45203
JA
104'global' is a reserved keyword. When used as the filename, it sets the
105default options for the threads following that section. It is possible
106to have more than one global section in the file, as it only affects
107subsequent jobs.
ed864e24
JA
108
109Also see the examples/ dir for sample job files.
47d45203 110