On Wed, Dec 4, 2019 at 7:13 PM Zhengyuan Liu <liuzhengyuan@xxxxxxxxxx> wrote: > > There are several algorithms available for raid6 to generate xor and syndrome > parity, including basic int1, int2 ... int32 and SIMD optimized implementation > like sse and neon. To test and choose the best algorithms at the initial > stage, we need provide enough disk data to feed the algorithms. However, the > disk number we provided depends on page size and gfmul table, seeing bellow: > > int __init raid6_select_algo(void) > { > const int disks = (65536/PAGE_SIZE) + 2; > ... > } > > So when come to 64K PAGE_SIZE, there is only one data disk plus 2 parity disk, > as a result the chosed algorithm is not reliable. For example, on my arm64 > machine with 64K page enabled, it will choose intx32 as the best one, although > the NEON implementation is better. I think we can fix this by simply change raid6_select_algo()? We still have #define STRIPE_SIZE PAGE_SIZE So testing with PAGE_SIZE represents real performance. Thanks, Song