lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <53CEBCDB.8060106@hp.com> Date: Tue, 22 Jul 2014 15:34:51 -0400 From: Waiman Long <waiman.long@...com> To: Jason Low <jason.low2@...com> CC: Thomas Gleixner <tglx@...utronix.de>, Ingo Molnar <mingo@...nel.org>, Peter Zijlstra <peterz@...radead.org>, Darren Hart <dvhart@...ux.intel.com>, Davidlohr Bueso <davidlohr@...com>, Heiko Carstens <heiko.carstens@...ibm.com>, linux-kernel@...r.kernel.org, linux-api@...r.kernel.org, linux-doc@...r.kernel.org, Scott J Norton <scott.norton@...com> Subject: Re: [RFC PATCH 2/5] futex: add optimistic spinning to FUTEX_SPIN_LOCK On 07/21/2014 04:17 PM, Jason Low wrote: > On Mon, 2014-07-21 at 11:24 -0400, Waiman Long wrote: >> This patch adds code to do optimistic spinning for the FUTEX_SPIN_LOCK >> primitive on the futex value when the lock owner is running. It is >> the same optimistic spinning technique that is done in the mutex and >> rw semaphore code to improve their performance especially on large >> systems with large number of CPUs. When the lock owner is not running, >> the spinning tasks will go to sleep. > Perhaps we could introduce a "CONFIG_FUTEX_SPIN_ON_OWNER" that depends > on SMP and ARCH_SUPPORTS_ATOMIC_RMW? The new futex opcode depends on the ability to do cmpxchg() in the futex context. The code will be disabled if futex cmpxchg is not supported. I guess that should be enough to limit it to just a handful of architectures. >> There is 2 major advantages of doing optimistic spinning here: >> 1) It eliminates the context switching latency and overhead (at >> least a few us) associated with sleeping and wakeup. >> 2) It eliminates most of the need to call futex(2) with >> FUTEX_SPIN_UNLOCK as spinning is done without the need to set >> the FUTEX_WAITERS bit. >> struct futex_q_head { >> struct list_head hnode; >> struct list_head waitq; >> union futex_key key; >> + struct optimistic_spin_queue *osq; > And this would have to be updated to > > + struct optimistic_spin_queue osq; > > given the recent changes to the osq lock. Yes, I will make the change in the next iteration of the patch. -Longman -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists