search for: qnodes

Displaying 20 results from an estimated 45 matches for "qnodes".

Did you mean: nodes
2014 May 07
0
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
...uct mcs_spinlock mcs; +}; + +/* * Per-CPU queue node structures; we can never have more than 4 nested * contexts: task, softirq, hardirq, nmi. * * Exactly fits one cacheline. */ -static DEFINE_PER_CPU_ALIGNED(struct mcs_spinlock, mcs_nodes[4]); +static DEFINE_PER_CPU_ALIGNED(struct qnode, qnodes[4]); /* * We must be able to distinguish between no-tail and the tail at 0:0, @@ -79,12 +88,12 @@ static inline u32 encode_tail(int cpu, int idx) return tail; } -static inline struct mcs_spinlock *decode_tail(u32 tail) +static inline struct qnode *decode_tail(u32 tail) { int cpu = (tai...
2014 May 07
0
[PATCH v10 12/19] unfair qspinlock: Variable frequency lock stealing mechanism
In order to fully resolve the lock waiter preemption problem in virtual guests, it is necessary to enable lock stealing in the lock waiters. A simple test-and-set lock, however, has 2 main problems: 1) The constant spinning on the lock word put a lot of cacheline contention traffic on the affected cacheline, thus slowing tasks that need to access the cacheline. 2) Lock starvation is a
2014 Feb 26
1
[PATCH v5 1/8] qspinlock: Introducing a 4-byte queue spinlock implementation
On Wed, Feb 26, 2014 at 10:14:21AM -0500, Waiman Long wrote: > +struct qnode { > + u32 wait; /* Waiting flag */ > + struct qnode *next; /* Next queue node addr */ > +}; > + > +struct qnode_set { > + struct qnode nodes[MAX_QNODES]; > + int node_idx; /* Current node to use */ > +}; > + > +/* > + * Per-CPU queue node structures > + */ > +static DEFINE_PER_CPU_ALIGNED(struct qnode_set, qnset) = { {{0}}, 0 }; So I've not yet wrapped my head around any of this; and I see a later patch adds some paravir...
2014 May 08
2
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
On Wed, May 07, 2014 at 11:01:36AM -0400, Waiman Long wrote: > /* > + * To have additional features for better virtualization support, it is > + * necessary to store additional data in the queue node structure. So > + * a new queue node structure will have to be defined and used here. > + */ > +struct qnode { > + struct mcs_spinlock mcs; > +}; You can ditch this entire
2014 Feb 26
1
[PATCH v5 1/8] qspinlock: Introducing a 4-byte queue spinlock implementation
On Wed, Feb 26, 2014 at 10:14:21AM -0500, Waiman Long wrote: > +struct qnode { > + u32 wait; /* Waiting flag */ > + struct qnode *next; /* Next queue node addr */ > +}; > + > +struct qnode_set { > + struct qnode nodes[MAX_QNODES]; > + int node_idx; /* Current node to use */ > +}; > + > +/* > + * Per-CPU queue node structures > + */ > +static DEFINE_PER_CPU_ALIGNED(struct qnode_set, qnset) = { {{0}}, 0 }; So I've not yet wrapped my head around any of this; and I see a later patch adds some paravir...
2014 May 08
2
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
On Wed, May 07, 2014 at 11:01:36AM -0400, Waiman Long wrote: > /* > + * To have additional features for better virtualization support, it is > + * necessary to store additional data in the queue node structure. So > + * a new queue node structure will have to be defined and used here. > + */ > +struct qnode { > + struct mcs_spinlock mcs; > +}; You can ditch this entire
2014 May 10
1
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
On Fri, May 09, 2014 at 09:08:56PM -0400, Waiman Long wrote: > On 05/08/2014 03:04 PM, Peter Zijlstra wrote: > >On Wed, May 07, 2014 at 11:01:36AM -0400, Waiman Long wrote: > >> /* > >>+ * To have additional features for better virtualization support, it is > >>+ * necessary to store additional data in the queue node structure. So > >>+ * a new queue
2014 May 10
1
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
On Fri, May 09, 2014 at 09:08:56PM -0400, Waiman Long wrote: > On 05/08/2014 03:04 PM, Peter Zijlstra wrote: > >On Wed, May 07, 2014 at 11:01:36AM -0400, Waiman Long wrote: > >> /* > >>+ * To have additional features for better virtualization support, it is > >>+ * necessary to store additional data in the queue node structure. So > >>+ * a new queue
2014 May 10
0
[PATCH v10 08/19] qspinlock: Make a new qnode structure to support virtualization
On 05/08/2014 03:04 PM, Peter Zijlstra wrote: > On Wed, May 07, 2014 at 11:01:36AM -0400, Waiman Long wrote: >> /* >> + * To have additional features for better virtualization support, it is >> + * necessary to store additional data in the queue node structure. So >> + * a new queue node structure will have to be defined and used here. >> + */ >> +struct
2014 Mar 12
0
[PATCH RFC v6 09/11] pvqspinlock, x86: Add qspinlock para-virtualization support
This patch adds para-virtualization support to the queue spinlock in the same way as was done in the PV ticket lock code. In essence, the lock waiters will spin for a specified number of times (QSPIN_THRESHOLD = 2^14) and then halted itself. The queue head waiter will spins 2*QSPIN_THRESHOLD times before halting itself. When it has spinned QSPIN_THRESHOLD times, the queue head will assume that the
2014 Apr 17
33
[PATCH v9 00/19] qspinlock: a 4-byte queue spinlock with PV support
v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex patches into smaller ones to ease review effort. - Fix a racing condition in the PV qspinlock code. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving
2014 Apr 17
33
[PATCH v9 00/19] qspinlock: a 4-byte queue spinlock with PV support
v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex patches into smaller ones to ease review effort. - Fix a racing condition in the PV qspinlock code. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving
2014 Feb 26
0
[PATCH RFC v5 7/8] pvqspinlock, x86: Add qspinlock para-virtualization support
...extension - * where new fields may be added. */ struct qnode { u32 wait; /* Waiting flag */ + struct pv_qvars pv; /* Para-virtualization */ struct qnode *next; /* Next queue node addr */ }; +#define PV_OFFSET offsetof(struct qnode, pv) struct qnode_set { struct qnode nodes[MAX_QNODES]; @@ -441,6 +459,7 @@ void queue_spin_lock_slowpath(struct qspinlock *lock, int qsval) unsigned int cpu_nr, qn_idx; struct qnode *node, *next; u32 prev_qcode, my_qcode; + PV_SET_VAR(int, hcnt, 0); /* * Try the quick spinning code path @@ -468,6 +487,7 @@ void queue_spin_lock_slowpath(s...
2014 May 07
32
[PATCH v10 00/19] qspinlock: a 4-byte queue spinlock with PV support
v9->v10: - Make some minor changes to qspinlock.c to accommodate review feedback. - Change author to PeterZ for 2 of the patches. - Include Raghavendra KT's test results in patch 18. v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex
2014 May 07
32
[PATCH v10 00/19] qspinlock: a 4-byte queue spinlock with PV support
v9->v10: - Make some minor changes to qspinlock.c to accommodate review feedback. - Change author to PeterZ for 2 of the patches. - Include Raghavendra KT's test results in patch 18. v8->v9: - Integrate PeterZ's version of the queue spinlock patch with some modification: http://lkml.kernel.org/r/20140310154236.038181843 at infradead.org - Break the more complex
2014 Apr 01
10
[PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving performance. - Simplify some of the codes and add more comments. - Test for X86_FEATURE_HYPERVISOR CPU feature bit to enable/disable unfair lock. - Reduce unfair lock slowpath lock stealing frequency depending on its distance from the queue head. - Add performance data for IvyBridge-EX CPU.
2014 Apr 01
10
[PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving performance. - Simplify some of the codes and add more comments. - Test for X86_FEATURE_HYPERVISOR CPU feature bit to enable/disable unfair lock. - Reduce unfair lock slowpath lock stealing frequency depending on its distance from the queue head. - Add performance data for IvyBridge-EX CPU.
2014 Apr 02
17
[PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
N.B. Sorry for the duplicate. This patch series were resent as the original one was rejected by the vger.kernel.org list server due to long header. There is no change in content. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving performance. - Simplify some of the codes and add more comments. - Test for X86_FEATURE_HYPERVISOR CPU feature bit
2014 Apr 02
17
[PATCH v8 00/10] qspinlock: a 4-byte queue spinlock with PV support
N.B. Sorry for the duplicate. This patch series were resent as the original one was rejected by the vger.kernel.org list server due to long header. There is no change in content. v7->v8: - Remove one unneeded atomic operation from the slowpath, thus improving performance. - Simplify some of the codes and add more comments. - Test for X86_FEATURE_HYPERVISOR CPU feature bit
2014 Mar 19
15
[PATCH v7 00/11] qspinlock: a 4-byte queue spinlock with PV support
v6->v7: - Remove an atomic operation from the 2-task contending code - Shorten the names of some macros - Make the queue waiter to attempt to steal lock when unfair lock is enabled. - Remove lock holder kick from the PV code and fix a race condition - Run the unfair lock & PV code on overcommitted KVM guests to collect performance data. v5->v6: - Change the optimized