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>