On Tue, Dec 14, 2021 at 6:14 PM <yajun.deng@xxxxxxxxx> wrote: > > December 15, 2021 1:27 AM, "Song Liu" <song@xxxxxxxxxx> wrote: > > > On Mon, Dec 13, 2021 at 7:17 PM Yajun Deng <yajun.deng@xxxxxxxxx> 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 disable the preemption, this time is too long and > >> unreasonable. We just need to disable migration. so used migrate_disable()/ > >> migrate_enable() instead of preempt_disable()/preempt_enable(). This is > >> beneficial for CONFIG_PREEMPT=y or CONFIG_PREEMPT_RT=y, but no effect for > >> CONFIG_PREEMPT_VOLUNTARY=y. > >> > >> Fixes: fe5cbc6e06c7 ("md/raid6 algorithms: delta syndrome functions") > >> Signed-off-by: Yajun Deng <yajun.deng@xxxxxxxxx> > > > > We measure the speed of different RAID algorithms.If we don't disable > > preempt, the result may be inaccurate, right? IIUC, we only disable preempt > > for 16 jiffies. Why do we see 1.2 second delay? > > Here are the command of my test: > Execute "sudo cyclictest -S -p 95 -d 0 -i 1000 -D 24h -m" in one terminal and "sudo modprobe raid6_pq" in the other terminal. > > Here are the results of my test: > CONFIG_PREEMPT_VOLUNTARY=y,CONFIG_HZ_250=y > T: 0 ( 3092) P:95 I:1000 C: 8514 Min: 1 Act: 2 Avg: 1 Max: 6 > T: 1 ( 3093) P:95 I:1000 C: 8511 Min: 1 Act: 2 Avg: 1 Max: 14 I am not very familiar with the RT work, so please forgive me for some rookie questions. >From the result, I think the CONFIG_PREEMPT_VOLUNTARY=y and the CONFIG_PREEMPT=y cases failed to preempt during the preempt enabled period in raid6_choose_gen(). Is this expected? OTOH, the 16ms latency with CONFIG_PREEMPT_RT=y is more or less expected. Is this acceptable? If not, is 1ms latency acceptable? Thanks, Song [...]