On 10/12/19 3:06 AM, Scott Wood wrote: > On Fri, 2019-10-11 at 10:09 -0400, Waiman Long wrote: >> At each invocation of rt_spin_unlock(), cpumask_weight() is called >> via migrate_enable_update_cpus_allowed() to recompute the weight of >> cpus_mask which doesn't change that often. >> >> The following is a sample output of perf-record running the testpmd >> microbenchmark on an RT kernel: >> >> 34.77% 1.65% testpmd [kernel.kallsyms] [k] rt_spin_unlock >> 34.32% 2.52% testpmd [kernel.kallsyms] [k] migrate_enable >> 21.76% 21.76% testpmd [kernel.kallsyms] [k] __bitmap_weight >> >> By adding an extra variable to keep track of the weight of cpus_mask, >> we could eliminate the frequent call to cpumask_weight() and replace >> it with simple assignment. > Can you try this with my migrate disable patchset (which makes > amigrate_enable_update_cpus_allowed() be called much less often) and see if > caching nr_cpus_allowed still makes a difference? > > -Scott With lazy migrate_disable, I do think my patch will no longer be necessary. Thanks, Longman