Hi Prarit, On Mon, Apr 10, 2017 at 07:26:31AM -0400, Prarit Bhargava wrote: > > > On 04/09/2017 09:53 AM, Chen Yu wrote: > > This is an optimization to bypass the free vector checking if the current > > CPU has no irq to migrate. This can especially speed up the CPU offline > > process when there are many CPUs in the system. > > Chen, OOC how much time does this save? > Previously I was doing some debugging on irq related issue when check_irq_vectors_for_cpu_disable() printed a warning on that platform, thus I incidentally look at this code and did not measure it : )
I've just done a comparison of the function duration of check_irq_vectors_for_cpu_disable() with/without the patch (32 online CPUs) before patch: [001] d..1 264.017803: check_irq_vectors_for_cpu_disable <-native_cpu_disable [001] d..1 264.017886: clear_local_APIC <-native_cpu_disable after patch: [001] d..1 862.011847: check_irq_vectors_for_cpu_disable <-native_cpu_disable [001] d..1 862.011850: clear_local_APIC <-native_cpu_disable About (83 - 17) = 66 microsecond. thanks, Yu > P. > > > > > Cc: Thomas Gleixner <[email protected]> > > Cc: Ingo Molnar <[email protected]> > > Cc: "H. Peter Anvin" <[email protected]> > > Cc: Prarit Bhargava <[email protected]> > > Cc: "Rafael J. Wysocki" <[email protected]> > > Cc: Len Brown <[email protected]> > > Cc: [email protected] > > Cc: [email protected] > > Signed-off-by: Chen Yu <[email protected]> > > --- > > arch/x86/kernel/irq.c | 3 +++ > > 1 file changed, 3 insertions(+) > > > > diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c > > index 4d8183b..b9bdc1e 100644 > > --- a/arch/x86/kernel/irq.c > > +++ b/arch/x86/kernel/irq.c > > @@ -394,6 +394,9 @@ int check_irq_vectors_for_cpu_disable(void) > > !cpumask_subset(&affinity_new, &online_new)) > > this_count++; > > } > > + /* No need to check any further. */ > > + if (!this_count) > > + return 0; > > > > count = 0; > > for_each_online_cpu(cpu) { > >

