|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH 2/2] x86/numa: introduce per-NUMA node flush locks
On Wed, Jun 04, 2025 at 02:42:45PM +0200, Jan Beulich wrote:
> On 22.05.2025 10:48, Roger Pau Monne wrote:
> > +bool flush_numa_node(const cpumask_t *mask, const void *va, unsigned int
> > flags)
> > +{
> > + nodeid_t node = num_online_nodes() > 1 ? cpumask_to_node(mask)
> > + : NUMA_NO_NODE;
> > + struct arch_numa_node *info;
> > +
> > + if ( node == NUMA_NO_NODE )
> > + return false;
>
> One further question: Here you limit NUMA flushing to a single node, using
> global flushes in all other cases. Did you consider extending this?
I did consider it, my first through was that such approach would
require taking multiple per-node locks at the same time, and so was
not worth pursuing.
I now realize however that we can decompose multi-node flushes into
per-node actions, and execute them sequentially, taking just one
per-node lock for each action. I can see into doing this. I'm unsure
whether such decomposing into sequential per-node flushes won't add
more latency (even if reducing contention).
As you say below, that way we would avoid having to allocate an extra
vector.
Thanks, Roger.
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |