From: Jens Axboe <axboe@kernel.dk>
To: Thierry BERTAUD <tbertaud@conforama.fr>,
Andrey Kuzmin <andrey.v.kuzmin@gmail.com>
Cc: "fio@vger.kernel.org" <fio@vger.kernel.org>
Subject: Re: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
Date: Fri, 25 Mar 2016 09:07:21 -0600 [thread overview]
Message-ID: <56F55429.1090506@kernel.dk> (raw)
In-Reply-To: <HE1PR05MB178780CACBC2631A841BB3FDB1830@HE1PR05MB1787.eurprd05.prod.outlook.com>
On 03/25/2016 12:33 AM, Thierry BERTAUD wrote:
> Hi Jens,
>
> Sorry my update lacked precision. I want to tell that the output of my command is not correct because the IO profile is the same at 70% randread and 30%randwrite (graph from SAN tools).
> I don't want to tell that the Andrey explanation is wrong.
>
> I tried this but it seems the problem is that i don't understand the documentation so it's why i don't have that i expect.
> # cat test.conf
> [global]
> ioengine=posixaio
> invalidate=0
> norandommap
> ramp_time=5
> iodepth=8
> runtime=60
> time_based
> direct=1
> numjobs=1
> group_reporting
> filesize=103M
> blocksize=8k
> #rw=randrw
> rwmixread=70
> percentage_random=12,8
>
> [hdisk2]
> stonewall
> filename=/dev/rhdisk2
> # ./fio test.conf
> hdisk2: (g=0): rw=read, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=8
> fio-2.3
> Starting 1 process
> Jobs: 1 (f=1): [R(1)] [100.0% done] [217.2MB/0KB/0KB /s] [27.8K/0/0 iops] [eta 00m:00s]
> hdisk2: (groupid=0, jobs=1): err= 0: pid=213240: Fri Mar 25 07:27:47 2016
> read : io=12872MB, bw=219671KB/s, iops=27458, runt= 60001msec
> slat (usec): min=14, max=9705, avg=28.74, stdev=34.99
> clat (usec): min=2, max=10363, avg=221.22, stdev=48.30
> lat (usec): min=144, max=10382, avg=249.52, stdev=50.07
> clat percentiles (usec):
> | 1.00th=[ 149], 5.00th=[ 165], 10.00th=[ 175], 20.00th=[ 189],
> | 30.00th=[ 201], 40.00th=[ 211], 50.00th=[ 221], 60.00th=[ 231],
> | 70.00th=[ 241], 80.00th=[ 251], 90.00th=[ 266], 95.00th=[ 282],
> | 99.00th=[ 310], 99.50th=[ 326], 99.90th=[ 362], 99.95th=[ 386],
> | 99.99th=[ 466]
> bw (KB /s): min= 4, max=225344, per=99.17%, avg=217851.37, stdev=20237.94
> lat (usec) : 4=0.01%, 10=0.01%, 50=0.01%, 100=0.01%, 250=78.56%
> lat (usec) : 500=21.42%, 750=0.01%, 1000=0.01%
> lat (msec) : 4=0.01%, 10=0.01%, 20=0.01%
> cpu : usr=8.22%, sys=28.38%, ctx=0, majf=0, minf=0
> IO depths : 1=0.1%, 2=0.2%, 4=68.4%, 8=37.6%, 16=0.0%, 32=0.0%, >=64=0.0%
> submit : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
> complete : 0=0.0%, 4=99.5%, 8=0.5%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
> issued : total=r=1647553/w=0/d=0, short=r=0/w=0/d=0, drop=r=0/w=0/d=0
> latency : target=0, window=0, percentile=100.00%, depth=8
>
> Run status group 0 (all jobs):
> READ: io=12872MB, aggrb=219671KB/s, minb=219671KB/s, maxb=219671KB/s, mint=60001msec, maxt=60001msec
I added a small hack to the null IO engine, to show randomness and
distribution. If I run your suggested job:
./fio --name=null --ioengine=null --rw=randrw --size=10g --bs=4k
--rwmixread=70 --percentage_random=12,8
I get:
READS: 69.96% (1834089)
Seq: 88.00% (1613999)
Rnd: 12.00% (220090)
WRITES: 30.04% (787351)
Seq: 91.98% (724171)
Rnd: 8.02% (63180)
which means that part is working as expected. But from your initial
description, that's not what you want:
1. 12% seqread
2. 8% seqwrite
3. The rest 80% are random of this 30% (24% from total) is write and 70%
(56% from total) reads.
which is 20% of the IO is sequential, and of that 20%, 40% are writes,
60% are reads. 80% of the total IO are random, and within that split,
you want a 70/30 read/write split.
Fio can't do a double split like that in a single job, but if you can
tolerate mixing the 60/40 and 70/30 read/write between sequential and
random, then you can make it work.
Or you can split it in two jobs, one doing the sequential part and the
other the random. The you can use the flow parameters to pace them at
20/80 ratios.
--
Jens Axboe
next prev parent reply other threads:[~2016-03-25 15:07 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-22 19:17 IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R) Thierry BERTAUD
[not found] ` <CANvN+enipwNVDS4QSsgh67FkpL-EoBsW0j0XRj5F2qSc7w+83A@mail.gmail.com>
[not found] ` <HE1PR05MB1787EB4BBDE5DE3867EE47D5B1810@HE1PR05MB1787.eurprd05.prod.outlook.com>
2016-03-23 7:41 ` Thierry BERTAUD
[not found] ` <CANvN+enHQqeXyimRCNnPS5Bp+hc+apVN5+-sKH8HLN=LhyeHHw@mail.gmail.com>
2016-03-23 11:34 ` Thierry BERTAUD
2016-03-25 4:14 ` Jens Axboe
2016-03-25 6:33 ` Thierry BERTAUD
2016-03-25 15:07 ` Jens Axboe [this message]
2016-03-25 20:20 ` Thierry BERTAUD
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=56F55429.1090506@kernel.dk \
--to=axboe@kernel.dk \
--cc=andrey.v.kuzmin@gmail.com \
--cc=fio@vger.kernel.org \
--cc=tbertaud@conforama.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.