[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <86ldqyfinq.wl-maz@kernel.org>
Date: Thu, 15 May 2025 08:16:25 +0100
From: Marc Zyngier <maz@...nel.org>
To: Nianyao Tang <tangnianyao@...wei.com>
Cc: <tglx@...utronix.de>,
<linux-arm-kernel@...ts.infradead.org>,
<linux-kernel@...r.kernel.org>,
<guoyang2@...wei.com>,
<wangwudi@...ilicon.com>,
<wangzhou1@...ilicon.com>
Subject: Re: [PATCH v3] irqchip/gic-v4.1: Use local 4_1 ITS to generate VSGI
On Thu, 15 May 2025 15:53:59 +0100,
Nianyao Tang <tangnianyao@...wei.com> wrote:
>
> On multi-node GICv4.1 system, VSGI senders always use one certain 4_1 ITS,
> because find_4_1_its return the first its_node in list, regardless of
> which node the VSGI sender is on. This brings guest vsgi performance drop
> when VM is not running on the same node as this returned ITS.
>
> On a 2-socket environment, each with one ITS and 32 cpu, GICv4.1 enabled,
> 4U8G guest, 4 vcpu is running on same socket.
> When VM on socket0, kvm-unit-tests ipi_hw result is 850ns.
> When VM on socket1, it is 750ns. The reason is VSGI sender always
> use the last reported ITS(that on socket1) to inject VSGI. The access
> from cpu to other-socket ITS will cost 100ns more compared to cpu to
> local ITS.
>
> By using a local ITS, we can get 12% reduction in IPI latency.
>
> Modify find_4_1_its to first return per-cpu local_4_1_its, which is
> init when inherit the VPE table from the ITS or from another CPU.
> If fail to find local 4_1 ITS, return any 4_1 ITS like before.
>
> Signed-off-by: Nianyao Tang <tangnianyao@...wei.com>
> Suggested-by: Marc Zyngier <maz@...nel.org>
Link: https://lore.kernel.org/all/87tthgrt7s.wl-maz@kernel.org
Reviewed-by: Marc Zyngier <maz@...nel.org>
M.
--
Without deviation from the norm, progress is not possible.
Powered by blists - more mailing lists