Re: generating unique offsets

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

 



Hi,

On 31 August 2017 at 10:13, Elhamer Oussama AbdelKHalek
<abdelkhalekdev@xxxxxxxxx> wrote:
>
> On Wed, Aug 30, 2017 at 8:21 PM, Sitsofe Wheeler <sitsofe@xxxxxxxxx> wrote:
>>
>> On 30 August 2017 at 14:16, Elhamer Oussama AbdelKHalek
>> <abdelkhalekdev@xxxxxxxxx> wrote:
>>
> I got the same result at my end. The thing is that at first i didn't
> know you could dump the generated offsets using  --debug=io , so i've
> printed the values of '*b' for 8 different seeds (--size=2m --bs=128k
> --rw=randwrite --ioengine=libaio) explicitly ( printf the values in
> the source code / recompile fio), the result contains  collisions!
>
> If i am understanding correctly, when a generated random value is
> already in the axmap table, another one will be generated!
> Here a dump fo both  b* and  off values (16 offsets)
> https://gist.github.com/SamTheDev/29ede9f3ef2466c5b5d2e026f4bd2aec
>
> Where exactly the *b offset is updated (according to axmap table) in
> the code? and does that mean that changing only the *b value for a
> custom random generator won't do the trick?

See https://github.com/axboe/fio/blob/fio-3.0/io_u.c#L129 where b can
be "corrected" by axmap_next_free().

>> I should have asked - what performance were you expecting to see?
>>
> Sorry, i forgot to mention that the drive was fully written and
> partially trimmed before running the randwrite job.
> On a full nvme drive, i ran a randtrim job, after a reasonable delay i
> ran the randwrite job using the same rand-seed. My drive bandwidth can
> go up to 1.4 Gb/s, when using the default TAUSWORTHE random generator
> the bw was around 150 Mb/s, which sounds reasonable, but when using
> the Fisher-yates generator  i was getting top performance (around 1.3
> Gb/s!)
> the job files look something like that:
> [global]
> ioengine=libaio
> iodepth=256
> size=1117G
> direct=1
> do_verify=0
> continue_on_error=all
> filename=/dev/nvme0n1
> randseed=23534
> sync=1
> [write-job]
> rw=randwrite / randtrim
> bs=128k

I don't have a good explanation for this other than to check that the
contents of the blocks being written looks suitably random and to plot
the sequence numbers your Fisher/Yate algorithm generates. Another
thing to try is using fio's record/replay facilities
(http://fio.readthedocs.io/en/latest/fio_doc.html#i-o-replay  ) to
recheck the order but with different data.

-- 
Sitsofe | http://sucs.org/~sits/
--
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