Re: [PATCH 2/3] locking/qspinlock: Introduce CNA into the slow path of qspinlock
From: Waiman Long <longman@redhat.com>
Date: 2019-01-31 17:39:02
Also in:
linux-arch, lkml
On 01/30/2019 10:01 PM, Alex Kogan wrote:
In CNA, spinning threads are organized in two queues, a main queue for threads running on the same socket as the current lock holder, and a secondary queue for threads running on other sockets. For details, see https://arxiv.org/abs/1810.05600. Note that this variant of CNA may introduce starvation by continuously passing the lock to threads running on the same socket. This issue will be addressed later in the series. Signed-off-by: Alex Kogan <redacted> Reviewed-by: Steve Sistare <redacted>
Just wondering if you have tried include PARVIRT_SPINLOCKS option to see if that patch may screw up the PV qspinlock code. Anyway, I do believe your claim that NUMA-aware qspinlock is good for large systems with many nodes. However, all these extra code are overhead for small systems that have a single node/socket, for instance. I will support doing something similar to what had been done to support PV qspinlock. IOW, a separate slowpath function that can be patched to become the default depending on the system being run on or a kernel boot option setting. I would like to keep the core slowpath function simple and easy to understand. So most of the CNA code should be encapsulated into some helper functions and put into a separated file. Thanks, Longman _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel