000222954 001__ 222954
000222954 005__ 20190317000556.0
000222954 0247_ $$2doi$$a10.1145/2988336.2988357
000222954 037__ $$aCONF
000222954 245__ $$aLocking Made Easy
000222954 269__ $$a2016
000222954 260__ $$bACM Press$$c2016$$aNew York, NY, USA
000222954 336__ $$aConference Papers
000222954 490__ $$aMiddleware
000222954 520__ $$aA priori, locking seems easy: To protect shared data from concurrent accesses, it is sufficient to lock before accessing the data and unlock after. Nevertheless, making locking efficient requires fine-tuning (a) the granularity of locks and (b) the locking strategy for each lock and possibly each workload. As a result, locking can become very complicated to design and debug. We present GLS, a middleware that makes lock-based programming simple and effective. GLS offers the classic lock-unlock interface of locks. However, in contrast to classic lock libraries, GLS does not require any effort from the programmer for allocating and initializing locks, nor for selecting the appropriate locking strategy. With GLS, all these intricacies of locking are hidden from the programmer. GLS is based on GLK, a generic lock algorithm that dynamically adapts to the contention level on the lock object. GLK is able to deliver the best performance among simple spinlocks, scalable queue-based locks, and blocking locks. Furthermore, GLS offers several debugging options for easily detecting various lock-related issues, such as deadlocks. We evaluate GLS and GLK on two modern hardware platforms, using several software systems (i.e., HamsterDB, Kyoto Cabinet, Memcached, MySQL, SQLite) and show how GLK improves their performance by 23% on average, compared to their default locking strategies. We illustrate the simplicity of using GLS and its debugging facilities by rewriting the synchronization code for Memcached and detecting two potential correctness issues.
000222954 6531_ $$aLocking
000222954 6531_ $$aAdaptive Locking
000222954 6531_ $$aLocking Middleware
000222954 6531_ $$aLocking Runtime
000222954 6531_ $$aSynchronization
000222954 6531_ $$aMulti-cores
000222954 6531_ $$aPerformance
000222954 700__ $$aAntić, Jelena
000222954 700__ $$0248248$$g237019$$aChatzopoulos, Georgios
000222954 700__ $$0240335$$g105326$$aGuerraoui, Rachid
000222954 700__ $$0245903$$g210576$$aTrigonakis, Vasileios
000222954 7112_ $$dDecember 12-16, 2016$$cTrento, Italy$$a17th ACM/IFIP/USENIX International Middleware Conference (Middleware '16)
000222954 773__ $$tProceedings of the 17th International Middleware Conference - Middleware '16$$q1-14
000222954 8564_ $$uhttps://infoscience.epfl.ch/record/222954/files/Locking_Made_Easy_Middleware16.pdf$$zPublisher's version$$s431716$$yPublisher's version
000222954 909C0 $$xU10407$$0252114$$pDCL
000222954 909CO $$ooai:infoscience.tind.io:222954$$qGLOBAL_SET$$pconf$$pIC
000222954 917Z8 $$x237019
000222954 917Z8 $$x237019
000222954 917Z8 $$x237019
000222954 917Z8 $$x237019
000222954 937__ $$aEPFL-CONF-222954
000222954 973__ $$rREVIEWED$$sPUBLISHED$$aEPFL
000222954 980__ $$aCONF