Thread (4 messages) 4 messages, 3 authors, 2016-10-17

Re: [PATCH v2] mm: vmalloc: Replace purge_lock spinlock with atomic refcount

From: Joel Fernandes <hidden>
Date: 2016-10-17 17:35:02
Also in: linux-mm, lkml

Hi Nick,

On Sun, Oct 16, 2016 at 9:00 PM, Nicholas Piggin [off-list ref] wrote:
On Sat, 15 Oct 2016 03:42:42 -0700
Joel Fernandes [off-list ref] wrote:
quoted
The purge_lock spinlock causes high latencies with non RT kernel. This has been
reported multiple times on lkml [1] [2] and affects applications like audio.

In this patch, I replace the spinlock with an atomic refcount so that
preemption is kept turned on during purge. This Ok to do since [3] builds the
lazy free list in advance and atomically retrieves the list so any instance of
purge will have its own list it is purging. Since the individual vmap area
frees are themselves protected by a lock, this is Ok.
This is a good idea, and good results, but that's not what the spinlock was
for -- it was for enforcing the sync semantics.

Going this route, you'll have to audit callers to expect changed behavior
and change documentation of sync parameter.

I suspect a better approach would be to instead use a mutex for this, and
require that all sync=1 callers be able to sleep. I would say that most
probably already can.
Thanks, I agree mutex is the right way to fix this.

Regards,
Joel

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help