All of lore.kernel.org
 help / color / mirror / Atom feed
* bssplit functionality seems broken in 2.13
@ 2016-09-15 17:01 Ryan Stiles
  2016-09-16 15:14 ` Jens Axboe
  0 siblings, 1 reply; 3+ messages in thread
From: Ryan Stiles @ 2016-09-15 17:01 UTC (permalink / raw)
  To: fio

Good day,

We have automation that uses the "bssplit" function to get a wide
variety of IO patterns, I have noticed that in 2.13 (compiled with
no-shared-mem).  The bsssplit only takes the first variable, meaning:

bssplit=1k/50:128k/50

will yield a 100% 1k workload.

This is the workload:
[global]
random_generator=tausworthe64
direct=1
loops=1
ioengine=libaio
iodepth=16
group_reporting
filename=/dev/disk/by-uuid/27602b49-4a18-4dca-a896-e2fc86746015

[workload]
rw=randread
bssplit=1k/50:128k/50

I tried to work around this using block range but when using a large
number of targets, ~150, the memory consumption is around 150GB.

Thank you for your help!
Ryan

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

* Re: bssplit functionality seems broken in 2.13
  2016-09-15 17:01 bssplit functionality seems broken in 2.13 Ryan Stiles
@ 2016-09-16 15:14 ` Jens Axboe
  2016-09-16 23:34   ` Ryan Stiles
  0 siblings, 1 reply; 3+ messages in thread
From: Jens Axboe @ 2016-09-16 15:14 UTC (permalink / raw)
  To: Ryan Stiles, fio

On 09/15/2016 11:01 AM, Ryan Stiles wrote:
> Good day,
>
> We have automation that uses the "bssplit" function to get a wide
> variety of IO patterns, I have noticed that in 2.13 (compiled with
> no-shared-mem).  The bsssplit only takes the first variable, meaning:
>
> bssplit=1k/50:128k/50
>
> will yield a 100% 1k workload.
>
> This is the workload:
> [global]
> random_generator=tausworthe64
> direct=1
> loops=1
> ioengine=libaio
> iodepth=16
> group_reporting
> filename=/dev/disk/by-uuid/27602b49-4a18-4dca-a896-e2fc86746015
>
> [workload]
> rw=randread
> bssplit=1k/50:128k/50

What's causing this issue is the use of the 64-bit random generator.
There's a bug in the bssplit calculation code that overflows for that
case. I've pushed a fix out for it:

http://git.kernel.dk/cgit/fio/commit/?id=3dd29f7c21538c164fcbd078c3f2e532a9193a04

With that fix, you should see better behavior. Note that to truly have a
50/50 split for this, you'd want to set 'norandommap' as well. Otherwise
fio will fit the block size to avoid overlapped IO. When that happens,
you'll have 50% 1k random reads, but the other 50% will be between 1k
and 128k. If a 128k random read would overlap at the generated offset,
fio would adjust it down.

-- 
Jens Axboe



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

* Re: bssplit functionality seems broken in 2.13
  2016-09-16 15:14 ` Jens Axboe
@ 2016-09-16 23:34   ` Ryan Stiles
  0 siblings, 0 replies; 3+ messages in thread
From: Ryan Stiles @ 2016-09-16 23:34 UTC (permalink / raw)
  To: Jens Axboe; +Cc: fio

Thanks for the patch Jens,

without the patch:
[0.0% done] [399.2MB/933.2MB/0KB /s] [102K/239K/0 iops]

with the patch:
[0.0% done] [2629MB/6158MB/0KB /s] [30.3K/70.7K/0 iops]


This looks like it corrected the issue.

Thank you for your time and support, have a great weekend!
Ryan


On Fri, Sep 16, 2016 at 8:14 AM, Jens Axboe <axboe@kernel.dk> wrote:
> On 09/15/2016 11:01 AM, Ryan Stiles wrote:
>>
>> Good day,
>>
>> We have automation that uses the "bssplit" function to get a wide
>> variety of IO patterns, I have noticed that in 2.13 (compiled with
>> no-shared-mem).  The bsssplit only takes the first variable, meaning:
>>
>> bssplit=1k/50:128k/50
>>
>> will yield a 100% 1k workload.
>>
>> This is the workload:
>> [global]
>> random_generator=tausworthe64
>> direct=1
>> loops=1
>> ioengine=libaio
>> iodepth=16
>> group_reporting
>> filename=/dev/disk/by-uuid/27602b49-4a18-4dca-a896-e2fc86746015
>>
>> [workload]
>> rw=randread
>> bssplit=1k/50:128k/50
>
>
> What's causing this issue is the use of the 64-bit random generator.
> There's a bug in the bssplit calculation code that overflows for that
> case. I've pushed a fix out for it:
>
> http://git.kernel.dk/cgit/fio/commit/?id=3dd29f7c21538c164fcbd078c3f2e532a9193a04
>
> With that fix, you should see better behavior. Note that to truly have a
> 50/50 split for this, you'd want to set 'norandommap' as well. Otherwise
> fio will fit the block size to avoid overlapped IO. When that happens,
> you'll have 50% 1k random reads, but the other 50% will be between 1k
> and 128k. If a 128k random read would overlap at the generated offset,
> fio would adjust it down.
>
> --
> Jens Axboe
>


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

end of thread, other threads:[~2016-09-16 23:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-15 17:01 bssplit functionality seems broken in 2.13 Ryan Stiles
2016-09-16 15:14 ` Jens Axboe
2016-09-16 23:34   ` Ryan Stiles

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.