History log of /external/fio/flow.c
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
cb44aa1f72811770d50e1ba5da3d96f2beb51025 17-May-2013 Jens Axboe <axboe@kernel.dk> flow: quiesce pending IO before sleep

Similar potential latency problem as was fixed for thinktime
in commit 002e7183 and for rated IO in commit c3a1b740.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/flow.c
fba5c5ff89163062922c3e560e871c087f2177c3 29-Jan-2013 Jens Axboe <axboe@kernel.dk> smalloc: alloc failure cleanups

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/flow.c
521da527743088a9bd2ab882f8b64799d49d5848 02-Aug-2012 Jens Axboe <axboe@kernel.dk> mutex: make 0/1 FIO_MUTEX_LOCKED and FIO_MUTEX_UNLOCKED

Makes the API look cleaner.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/flow.c
8e8b225d177c8e824785a87a1116309049a27a7c 22-Feb-2012 Daniel Ehrenberg <dehrenberg@google.com> flow: Fixing uninitialized variable

In the flow initialization code path, there was an uninitialized
variable that led to memory corruption in certain cases. This
patch should initialize the variable properly.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/flow.c
9e684a4976b7934f5ce011ea281dfef3352e5738 20-Feb-2012 Dan Ehrenberg <dehrenberg@google.com> Token-based flow control

This patch allows two fio jobs to be kept to a certain
proportion of each other using token-based flow control.
There are three new parameters: flow, flow_watermark, and
flow_sleep, documented in the fio options. An example of an fio
job using these parameters is below:

[global]
norandommap
thread
time_based
runtime=30
direct=1
ioengine=libaio
iodepth=256
size=100g
bs=8k
filename=/tmp/testfile
flow_watermark=100
flow_sleep=1000

[job2]
numjobs=1
rw=write
flow=-8

[job1]
numjobs=1
rw=randread
flow=1

The motivating application of this patch was to allow random reads
and sequential writes at a particular given proportion.

This initial version is only correct when run with 'thread', as shared
state is represented with a global variable. It also only allows two
jobs to be synchronized properly. A future version might do more, but
no more functionality was needed for my application.

Tested: Ran a few fio jobs with this flow control, observing
the proportion of IOPS to match what was intended by the job file.
Varied the flow_watermark and flow_sleep parameters and observed
the effect on throughput.

Signed-off-by: Dan Ehrenberg <dehrenberg@google.com>

Modified by me to support flow_id, so an arbitrary number of flows can
be used. This means it no longer relies on global context, so it can be
used from a thread or process alike. Also added man page documentation.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
/external/fio/flow.c