On 02/17/2012 02:27 AM, Dan Ehrenberg wrote: > 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. I like this, it's definitely a useful feature. Any chance I could talk you into finishing the patch? You could have a flow_id= option, and then move the flow storage to being smalloc() backed. -- Jens Axboe -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html