On Thu, Dec 16, 2021 at 1:27 AM Yajun Deng [off-list ref] wrote:
We found an abnormally high latency when executing modprobe raid6_pq, the
latency is greater than 1.2s when CONFIG_PREEMPT_VOLUNTARY=y, greater than
67ms when CONFIG_PREEMPT=y, and greater than 16ms when CONFIG_PREEMPT_RT=y.
This is caused by ksoftirqd fail to scheduled due to disable preemption,
this time is too long and unreasonable.
Reduce high latency by using migrate_disabl()/emigrate_enable() instead of
preempt_disable()/preempt_enable().
How to reproduce:
- Install cyclictest
sudo apt install rt-tests
- Run cyclictest example in one terminal
sudo cyclictest -S -p 95 -d 0 -i 1000 -D 24h -m
- Modprobe raid6_pq in another terminal
sudo modprobe raid6_pq
This patch beneficial for CONFIG_PREEMPT=y and CONFIG_PREEMPT_RT=y, but
no effect for CONFIG_PREEMPT_VOLUNTARY=y.
Fixes: fe5cbc6e06c7 ("md/raid6 algorithms: delta syndrome functions")
Fixes: cc4589ebfae6 ("Rename raid6 files now they're in a 'raid6' directory.")
Link: https://lore.kernel.org/linux-raid/b06c5e3ef3413f12a2c2b2a241005af9@linux.dev/T/#t (local)
Signed-off-by: Yajun Deng <redacted>
Updated the patch and CC'ed stable. It should make to LTS kernels.
Thanks,
Song