On Wed, Jul 8, 2020 at 6:15 AM Yufen Yu <yuyufen@xxxxxxxxxx> wrote: > > > > On 2020/7/3 7:00, Song Liu wrote: > > On Thu, Jul 2, 2020 at 5:05 AM Yufen Yu <yuyufen@xxxxxxxxxx> 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