[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <353f13b0dcc6c7ea1b44012d9632a0cc@kernel.org>
Date: Mon, 19 Oct 2020 14:04:19 +0100
From: Marc Zyngier <maz@...nel.org>
To: Vincent Guittot <vincent.guittot@...aro.org>
Cc: LAK <linux-arm-kernel@...ts.infradead.org>,
linux-kernel <linux-kernel@...r.kernel.org>,
Will Deacon <will@...nel.org>,
Catalin Marinas <catalin.marinas@....com>,
Russell King <linux@....linux.org.uk>,
Thomas Gleixner <tglx@...utronix.de>,
Jason Cooper <jason@...edaemon.net>,
Sumit Garg <sumit.garg@...aro.org>,
Valentin Schneider <Valentin.Schneider@....com>,
Florian Fainelli <f.fainelli@...il.com>,
Gregory Clement <gregory.clement@...tlin.com>,
Andrew Lunn <andrew@...n.ch>,
Saravana Kannan <saravanak@...gle.com>,
Android Kernel Team <kernel-team@...roid.com>
Subject: Re: [PATCH v3 03/16] arm64: Allow IPIs to be handled as normal
interrupts
Hi Vincent,
On 2020-10-19 13:42, Vincent Guittot wrote:
> Hi Marc,
>
> On Tue, 1 Sep 2020 at 16:44, Marc Zyngier <maz@...nel.org> wrote:
>>
>> In order to deal with IPIs as normal interrupts, let's add
>> a new way to register them with the architecture code.
>>
>> set_smp_ipi_range() takes a range of interrupts, and allows
>> the arch code to request them as if the were normal interrupts.
>> A standard handler is then called by the core IRQ code to deal
>> with the IPI.
>>
>> This means that we don't need to call irq_enter/irq_exit, and
>> that we don't need to deal with set_irq_regs either. So let's
>> move the dispatcher into its own function, and leave handle_IPI()
>> as a compatibility function.
>>
>> On the sending side, let's make use of ipi_send_mask, which
>> already exists for this purpose.
>>
>> One of the major difference is that we end up, in some cases
>> (such as when performing IRQ time accounting on the scheduler
>> IPI), end up with nested irq_enter()/irq_exit() pairs.
>> Other than the (relatively small) overhead, there should be
>> no consequences to it (these pairs are designed to nest
>> correctly, and the accounting shouldn't be off).
>
> While rebasing on mainline, I have faced a performance regression for
> the benchmark:
> perf bench sched pipe
> on my arm64 dual quad core (hikey) and my 2 nodes x 112 CPUS (thx2)
>
> The regression comes from:
> commit: d3afc7f12987 ("arm64: Allow IPIs to be handled as normal
> interrupts")
That's interesting, as this patch doesn't really change anything (most
of the potential overhead comes in later). The only potential overhead
I can see is that the scheduler_ipi() call is now wrapped around
irq_enter()/irq_exit().
>
> v5.9 + this patch
> hikey : 48818(+/- 0.31) 37503(+/- 0.15%) -23.2%
> thx2 : 132410(+/- 1.72) 122646(+/- 1.92%) -7.4%
>
> By + this patch, I mean merging branch from this patch. Whereas
> merging the previous:
> commit: 83cfac95c018 ("genirq: Allow interrupts to be excluded from
> /proc/interrupts")
> It doesn't show any regression
Since you are running perf, can you spot where the overhead occurs?
Thanks,
M.
--
Jazz is not dead. It just smells funny...
Powered by blists - more mailing lists