Re: IO mixed : 12% seqread, 8% seqwrite, 80% random (30% W, 70%R)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

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



[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux