All of lore.kernel.org
 help / color / mirror / Atom feed
* IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
@ 2016-03-22 19:17 Thierry BERTAUD
       [not found] ` <CANvN+enipwNVDS4QSsgh67FkpL-EoBsW0j0XRj5F2qSc7w+83A@mail.gmail.com>
  0 siblings, 1 reply; 7+ messages in thread
From: Thierry BERTAUD @ 2016-03-22 19:17 UTC (permalink / raw)
  To: fio@vger.kernel.org

Hello fio team, 

Does it possible with fio to simulate a job with IO mixed  for simulating a typical workload of an Oracle database.

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.

I know our to test every  step alone but i want to test step 1,2 and 3 in the same time.


Regards,
Thierry







  

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
       [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>
  1 sibling, 0 replies; 7+ messages in thread
From: Thierry BERTAUD @ 2016-03-23  7:41 UTC (permalink / raw)
  To: Andrey Kuzmin; +Cc: fio@vger.kernel.org

Hi Andrey,


>Covered in the FIO HOWTO under rw and percentage_random options.
I tried this configuration but when i run, it doesn't do that�expected.


[global]
ioengine=posixaio
invalidate=0
norandommap
ramp_time=5
iodepth=8
runtime=60
time_based
direct=1
numjobs=1
group_reporting
filesize=100M
blocksize=8k
percentage_random=12,8 � � <= 12% seqread, 8%�seqwrite
rw=randrw
rwmixread=70 � �<= 70% randread and 30% randwrite for others


[hdisk10]
stonewall
filename=/dev/rhdisk10


Regards,
Thierry



       

^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
       [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
  0 siblings, 1 reply; 7+ messages in thread
From: Thierry BERTAUD @ 2016-03-23 11:34 UTC (permalink / raw)
  To: Andrey Kuzmin; +Cc: fio@vger.kernel.org


You tell:

> You should define the mix first, under rw, using total percentage for reads and writes, and then specify the random/sequential break in each direction under pct_random.

I understand that but it's not correct.
-------
[global]
rw=randrw
rwmixread=70 � �<= 70% randread and 30% randwrite for others
percentage_random=12,8 � � <= 12% seqread, 8%�seqwrite
 -------

Could you provide an example, please?
 
 Regards,
Thierry 






          

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
  2016-03-23 11:34       ` Thierry BERTAUD
@ 2016-03-25  4:14         ` Jens Axboe
  2016-03-25  6:33           ` Thierry BERTAUD
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Axboe @ 2016-03-25  4:14 UTC (permalink / raw)
  To: Thierry BERTAUD, Andrey Kuzmin; +Cc: fio@vger.kernel.org

On 03/23/2016 05:34 AM, Thierry BERTAUD wrote:
>
> You tell:
>
>> You should define the mix first, under rw, using total percentage for reads and writes, and then specify the random/sequential break in each direction under pct_random.
>
> I understand that but it's not correct.

You have to be a bit more specific. What isn't correct? In general bug 
reporting, it's paramount to specify both what was used, what happened, 
and why that differed from the expectation that the user has.

-- 
Jens Axboe



^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
  2016-03-25  4:14         ` Jens Axboe
@ 2016-03-25  6:33           ` Thierry BERTAUD
  2016-03-25 15:07             ` Jens Axboe
  0 siblings, 1 reply; 7+ messages in thread
From: Thierry BERTAUD @ 2016-03-25  6:33 UTC (permalink / raw)
  To: Jens Axboe, Andrey Kuzmin; +Cc: fio@vger.kernel.org

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
#

Regards,
Thierry

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
  2016-03-25  6:33           ` Thierry BERTAUD
@ 2016-03-25 15:07             ` Jens Axboe
  2016-03-25 20:20               ` Thierry BERTAUD
  0 siblings, 1 reply; 7+ messages in thread
From: Jens Axboe @ 2016-03-25 15:07 UTC (permalink / raw)
  To: Thierry BERTAUD, Andrey Kuzmin; +Cc: fio@vger.kernel.org

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



^ permalink raw reply	[flat|nested] 7+ messages in thread

* RE: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)
  2016-03-25 15:07             ` Jens Axboe
@ 2016-03-25 20:20               ` Thierry BERTAUD
  0 siblings, 0 replies; 7+ messages in thread
From: Thierry BERTAUD @ 2016-03-25 20:20 UTC (permalink / raw)
  To: Jens Axboe, Andrey Kuzmin; +Cc: fio@vger.kernel.org

Hi Jens,

Thanks for update.

>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.

I tried to use choice 2.
------------------------------
[global]
ioengine=posixaio
invalidate=0
norandommap
ramp_time=5
iodepth=8
runtime=10
time_based
direct=1
#numjobs=1
group_reporting
filesize=10M
blocksize=8k

[hdisk2]
stonewall
filename=/dev/rhdisk2
rw=readwrite
rwmixread=60
flow=2

[hdisk2a]
stonewall
filename=/dev/rhdisk2
rw=randrw
rwmixread=70
flow=8
------------------------------
# ./fio inftest.conf
hdisk2: (g=0): rw=rw, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=8
hdisk2a: (g=1): rw=randrw, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=8
fio-2.3
Starting 2 processes
Jobs: 1 (f=0): [/(1),P(1)] [-.-% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:30s]
..

The fio process eat a lot of cpu but no disk activity. Some output from topas. So i think i don't use correctly the flow parmeter and perhaps do some loops somewhere into fio.
------------------
CPU  User%  Kern%  Wait%  Idle%                 
ALL   46.9   53.1    0.0    0.0 

Disk    Busy%     KBPS     TPS KB-Read KB-Writ
hdisk2    0.0     0.0      0.0    0.0     0.0

Name            PID  CPU%  PgSp Owner
fio          504000  46.8   0.3 root
sshd         549094  28.6   1.0 root
fio          393304  24.0   0.2 root
topas        462868   0.1   1.9 root
--------------------------------------


If i do a ctrl+c, i have the following:

# ./fio inftest.conf
hdisk2: (g=0): rw=rw, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=8
hdisk2a: (g=1): rw=randrw, bs=8K-8K/8K-8K/8K-8K, ioengine=posixaio, iodepth=8
fio-2.3
Starting 2 processes
Jobs: 1 (f=0): [/(1),P(1)] [-.-% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:30s]
fio: terminating on signal 2

fio: terminating on signal 2
Jobs: 0 (f=0): [/(1),P(1)] [-.-% done] [0KB/0KB/0KB /s] [0/0/0 iops] [eta 00m:30s]
hdisk2: (groupid=0, jobs=1): err= 0: pid=504000: Fri Mar 25 21:19:52 2016
  read : io=32768B, bw=32000KB/s, iops=0, runt=     1msec
    slat (usec): min=16, max=194, avg=25.25, stdev=15.63
    clat percentiles (usec):
     |  1.00th=[    0],  5.00th=[    0], 10.00th=[    0], 20.00th=[    0],
     | 30.00th=[    0], 40.00th=[    0], 50.00th=[    0], 60.00th=[    0],
     | 70.00th=[    0], 80.00th=[    0], 90.00th=[    0], 95.00th=[    0],
     | 99.00th=[    0], 99.50th=[    0], 99.90th=[    0], 99.95th=[    0],
     | 99.99th=[    0]
  write: io=16384B, bw=16000KB/s, iops=0, runt=     1msec
    slat (usec): min=16, max=105, avg=26.12, stdev=13.44
    clat percentiles (usec):
     |  1.00th=[    0],  5.00th=[    0], 10.00th=[    0], 20.00th=[    0],
     | 30.00th=[    0], 40.00th=[    0], 50.00th=[    0], 60.00th=[    0],
     | 70.00th=[    0], 80.00th=[    0], 90.00th=[    0], 95.00th=[    0],
     | 99.00th=[    0], 99.50th=[    0], 99.90th=[    0], 99.95th=[    0],
     | 99.99th=[    0]
  cpu          : usr=0.00%, sys=0.00%, ctx=0, majf=0, minf=0
  IO depths    : 1=0.0%, 2=0.0%, 4=0.0%, 8=0.0%, 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=98.0%, 8=2.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued    : total=r=0/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=32KB, aggrb=32000KB/s, minb=32000KB/s, maxb=32000KB/s, mint=1msec, maxt=1msec
  WRITE: io=16KB, aggrb=16000KB/s, minb=16000KB/s, maxb=16000KB/s, mint=1msec, maxt=1msec

Run status group 1 (all jobs):
#

Regards,
Thierry




^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-03-25 20:20 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
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
2016-03-25 20:20               ` Thierry BERTAUD

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.