Re: apparmor: global buffers spin lock may get contended

From: Sergey Senozhatsky
Date: Sun Oct 30 2022 - 23:54:33 EST


On (22/10/28 02:34), John Johansen wrote:
> From d026988196fdbda7234fb87bc3e4aea22edcbaf9 Mon Sep 17 00:00:00 2001
> From: John Johansen <john.johansen@xxxxxxxxxxxxx>
> Date: Tue, 25 Oct 2022 01:18:41 -0700
> Subject: [PATCH] apparmor: cache buffers on percpu list if there is lock
> contention
>
> On a heavily loaded machine there can be lock contention on the
> global buffers lock. Add a percpu list to cache buffers on when
> lock contention is encountered.
>
> When allocating buffers attempt to use cached buffers first,
> before taking the global buffers lock. When freeing buffers
> try to put them back to the global list but if contention is
> encountered, put the buffer on the percpu list.
>
> The length of time a buffer is held on the percpu list is dynamically
> adjusted based on lock contention. The amount of hold time is rapidly
> increased and slow ramped down.
>
> Signed-off-by: John Johansen <john.johansen@xxxxxxxxxxxxx>

Reported-by: Sergey Senozhatsky <senozhatsky@xxxxxxxxxxxx>