Thread (30 messages) 30 messages, 6 authors, 2020-06-04

Re: [PATCH v3 00/11] md/raid5: set STRIPE_SIZE as a configurable value

From: Guoqing Jiang <hidden>
Date: 2020-06-01 14:02:20

On 5/30/20 4:15 AM, Yufen Yu wrote:

On 2020/5/29 20:22, Guoqing Jiang wrote:
quoted
On 5/29/20 1:49 PM, Yufen Yu wrote:
quoted
quoted
The 4k rand write performance drops from 100MB/S to 15MB/S?! How 
about other
io sizes? Say 16k, 64K and 256K etc, it would be more convincing if 
64KB stripe
has better performance than 4KB stripe overall.
Maybe I have not explain clearly. Here, the fio test result shows 
that 4KB
STRIPE_SIZE is not always have better performance. If applications 
request
IO size mostly are bigger than 4KB, likely 1MB in test, set 
STRIPE_SIZE with
a bigger value can get better performance.

So, we try to provide a configurable STRIPE_SIZE, rather than fix 
STRIPE_SIZE as 4096. 
Which means if you set stripe size to 64KB then you should guarantee 
the io size should
always bigger then 1MB, right? Given that, I don't think it makes 
lots of sense.
No, I think you misunderstood. This patchset just want to optimize 
RAID5 performance
for systems whose PAGE_SIZE is bigger than 4KB, likely 64KB on ARM64. 
Without this
patchset, STRIPE_SIZE is equal to 64KB, means each IO size issued to 
array disk at
least 64KB each time, Right? But filesystems usually issue bio in the 
unit of 4KB,
means sometimes required 4KB but read or write 64KB on disk actually. 
That would
waste resources.
Yes,, it is hard for me to understand your way is better than just make 
stripe size equals to
4KB.
After this patchset, we set STRIPE_SIZE as default 4KB. For systems 
like X86, which
just support 4KB PAGE_SIZE, it will not have any effect. But for 64KB 
arm64 system,
it **normally** can get better performance on filesystems base on 
raid5, like dbench test.

fio test just want to say that, we can also configure STRIPE_SIZE with 
a bigger value
than default 4KB on 64KB ARM64 system when applications mostly issue 
big IO. It can
get better performance for reducing IO split in RAID5.
I do think the flexibility is not enough, if someone set stripe size to 
64KB by any chance,
people could complain the performance of raid5 really sucks if the io is 
not big. And it is
not realistic to let people rebuild the module in case the io size is 
changed, so it would be
more helpful if the stripe size can be changed dynamically without 
recompile code.

Thanks,
Guoqing
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help