Re: [PATCH] percpu/module resevation: change resevation size iff X86_VSMP is set

From: Barret Rhoden
Date: Wed Mar 13 2019 - 15:40:10 EST


Hi -

On 03/01/2019 04:54 PM, Christopher Lameter wrote:
On Fri, 1 Mar 2019, Barret Rhoden wrote:

I'm not familiar with VSMP - how bad is it to use L1 cache alignment instead
of 4K page alignment? Maybe some structures can use the smaller alignment?
Or maybe have VSMP require SRCU-using modules to be built-in?

It is very expensive. VMSP exchanges 4K segments via RDMA between servers
to build a large address space and run a kernel in the large address
space. Using smaller segments can cause a lot of
"cacheline" bouncing (meaning transfers of 4K segments back and forth
between servers).


Given that these are large machines, would it be OK to statically reserve 64K on them for modules' percpu data?

The bug that led me to here was from someone running on a non-VSMP machine but had that config set. Perhaps we make it more clear in the Kconfig option to not set it on other machines. That might make it less likely anyone on a non-VSMP machine pays the 64K overhead.

Are there any other alternatives? Not using static SRCU in any code that could be built as a module seems a little harsh.

Thanks,

Barret