Commit | Line | Data |
---|---|---|
e709787c JA |
1 | fio |
2 | --- | |
3 | ||
4 | fio is a tool that will spawn a number of thread doing a particular | |
5 | type of io action as specified by the user. fio takes a number of | |
6 | global parameters, each inherited by the thread unless otherwise | |
7 | parameters given to them overriding that setting is given. | |
8 | ||
9 | Options | |
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 | 22 | |
e709787c JA |
23 | The <jobs> format is as follows: |
24 | ||
25 | rw=0/1 0 is read, 1 is write | |
26 | prio=x Run io at prio X, 0-7 is the kernel allowed range | |
27 | prioclass=x Run io at prio class X | |
28 | file=foo Do the io to file foo | |
8c033f93 | 29 | bs=x Thread blocksize is x bytes |
7889f07b | 30 | bsrange=x-y Mix thread block sizes randomly between x and y |
e709787c | 31 | direct=x 1 for direct IO, 0 for buffered IO |
e97712ed | 32 | thinktime=x "Think" x usec after each io |
e709787c JA |
33 | random IO is randomized |
34 | sequential IO is sequential | |
86184d14 | 35 | rate=x Throttle rate to x KiB/sec |
4240cfa1 JA |
36 | ratemin=x Quit if rate of x KiB/sec can't be met |
37 | ratecycle=x ratemin averaged over x msecs | |
18e0b78c | 38 | cpumask=x Allow job to run on CPUs defined by mask |
4240cfa1 | 39 | fsync=x If writing, fsync after every x blocks have been written |
fc24389f | 40 | startdelay=x Start this thread x seconds after startup |
67903a2e | 41 | timeout=x Terminate x seconds after startup |
43000118 JA |
42 | aio Use Linux async io |
43 | aio_depth=x Allow x iocbs in flight | |
02983297 JA |
44 | size=x Set file size to x bytes (x string can include k/m/g) |
45 | offset=x Start io at offset x (x string can include k/m/g) | |
b95799ca | 46 | invalidate=x Invalidate page cache for file prior to doing io |
74b4b5fb | 47 | sync=x Use sync writes if x and writing |
99c6704f JA |
48 | mem=x If x == malloc, use malloc for buffers. If x == shm, |
49 | use shm for buffers. | |
98dd52d6 | 50 | exitall When one thread quits, terminate the others |
1d035750 | 51 | bwavgtime=x Average bandwidth stats over x msec |
b6794fbf JA |
52 | create_serialize=x If 'x', serialize file creation. |
53 | create_fsync=x If 'x', run fsync() after file creation. | |
54 | loops=x Run the job 'x' number of times. | |
cfc702bd | 55 | verify=x If 'x' and writing, verify data written. |
e709787c JA |
56 | |
57 | ||
7dd1389e JA |
58 | Examples using a job file |
59 | ------------------------- | |
60 | ||
61 | A sample job file doing the same as above would look like this: | |
62 | ||
63 | [read_file] | |
64 | rw=0 | |
65 | bs=4096 | |
66 | ||
67 | [write_file] | |
68 | rw=1 | |
69 | bs=16384 | |
70 | ||
71 | And fio would be invoked as: | |
72 | ||
73 | $ fio -o1 -s -f file_with_above | |
74 | ||
75 | The second example would look like this: | |
76 | ||
77 | [rf1] | |
78 | rw=0 | |
79 | prio=6 | |
80 | ||
81 | [rf2] | |
82 | rw=0 | |
83 | prio=3 | |
84 | ||
85 | [rf3] | |
86 | rw=0 | |
87 | prio=0 | |
88 | direct=1 | |
89 | ||
90 | And fio would be invoked as: | |
91 | ||
92 | $ fio -o0 -s -b4096 -f file_with_above | |
93 | ||
47d45203 JA |
94 | 'global' is a reserved keyword. When used as the filename, it sets the |
95 | default options for the threads following that section. It is possible | |
96 | to have more than one global section in the file, as it only affects | |
97 | subsequent jobs. | |
ed864e24 JA |
98 | |
99 | Also see the examples/ dir for sample job files. | |
47d45203 | 100 |