Thread (6 messages) 6 messages, 4 authors, 2021-12-17

Re: [PATCH v3] lib/raid6: Reduce high latency by using migrate instead of preempt

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2021-12-17 13:42:23
Also in: linux-rt-users, lkml, stable

On 2021-12-17 10:16:10 [+0800], Yajun Deng 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.

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 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(), the latency won't greater than 100us.

This patch beneficial for CONFIG_PREEMPT=y or CONFIG_PREEMPT_RT=y, but no
effect for CONFIG_PREEMPT_VOLUNTARY=y.
Why does it matter? This is only during boot-up/ module loading or do I
miss something? 
The delay is a jiffy so it depends on CONFIG_HZ. You do benchmark for
the best algorithm and if you get preempted during that period then your
results may be wrong and you make a bad selection.

You can either enable one algorithm and or disable
CONFIG_RAID6_PQ_BENCHMARK. I don't see the need for this patch not to
mention the stable tree.

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