Re: [PATCH v5 00/16] md/raid5: set STRIPE_SIZE as a configurable value

Song Liu
2020-07-08T23:55:17Z

On Wed, Jul 8, 2020 at 6:15 AM Yufen Yu <yuyufen@huawei.com> wrote:
>
>
>
> On 2020/7/3 7:00, Song Liu wrote:
> > On Thu, Jul 2, 2020 at 5:05 AM Yufen Yu <yuyufen@huawei.com> wrote:
> >>
> >> Hi, all
> >>
> >> For now, STRIPE_SIZE is equal to the value of PAGE_SIZE. That means, RAID5
> >> will issue each bio to disk at least 64KB when PAGE_SIZE is 64KB in arm64.
> >> However, filesystem usually issue bio in the unit of 4KB. Then, RAID5 may
> >> waste resource of disk bandwidth.
> >>
> >> To solve the problem, this patchset try to set stripe_size as a configuare
> >> value. The default value is 4096. We will add a new sysfs entry and set it
> >> by writing a new value, likely:
> >>
> >> echo 16384 > /sys/block/md1/md/stripe_size
> >
> > Higher level question: do we need to support page size that is NOT 4kB
> > times power
> > of 2? Meaning, do we need to support 12kB, 20kB, 24kB, etc. If we only
> > supports, 4kB,
> > 8kB, 16kB, 32kB, etc. some of the logic can be simpler.
>
> Yeah, I think we just support 4kb, 8kb, 16kb, 32kb... is enough.
> But Sorry that I don't know what logic can be simpler in current implementation.
> I mean it also need to allocate page, and record page offset.

I was thinking about replacing multiplication/division with bit
operations (shift left/right).
But I am not very sure how much that matters in modern ARM CPUs. Would you mind
running some benchmarks with this?

Thanks,
Song