On 2022-01-05 22:28:10 [-0500], Waiman Long wrote: > Thanks for the extensive testing. I usually perform my performance test on > Intel hardware. I don't realize that Zen2 and arm64 perform better with irq > on/off. Maybe you have access to more recent µArch from Intel which could behave different. > My own testing when tracking the number of times in_task() is true or false > indicated most of the kmalloc() call is done by tasks. Only a few percents > of the time is in_task() false. That is the reason why I optimize the case > that in_task() is true. Right. This relies on the fact that changing preemption is cheaper which is not always true. The ultimate benefit is of course when the preemption changes can be removed/ optimized away. > > Based on that, I don't see any added value by the optimisation once > > PREEMPT_DYNAMIC is enabled. > > The PREEMPT_DYNAMIC result is a bit surprising to me. Given the data points, > I am not going to object to this patch then. I will try to look further into > why this is the case when I have time. Okay, thank you. In the SERVER case we keep the preemption counter so this has obviously an impact. I am a little surprised that the DYN-FULL and DYN-NONE differ a little since the code runs with disabled interrupts. But then this might be the extra jump to preempt_schedule() which is patched-out in the SERVER case. > Cheers, > Longman Sebastian