A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization

The multicore revolution of the early 21st century has introduced a multitude of multiprocessor synchronization techniques for designing concurrent data structures. This thesis explores the concept of “unrolling”, or storing multiple data items per node, in order to increase the concurrent throughpu...

Full description

Bibliographic Details
Main Author: Farhadi, Adam
Format: Others
Language:English
Published: KTH, Skolan för elektroteknik och datavetenskap (EECS) 2021
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-305923
id ndltd-UPSALLA1-oai-DiVA.org-kth-305923
record_format oai_dc
spelling ndltd-UPSALLA1-oai-DiVA.org-kth-3059232021-12-11T05:47:53ZA JVM-Managed Concurrent Unrolled List-Based Set Using Lazy SynchronizationengSamverkande utrullade listbaserade set som använder lat synkronisering i JVMFarhadi, AdamKTH, Skolan för elektroteknik och datavetenskap (EECS)2021Concurrent Data StructuresLinked-ListsList-Based SetsSamverkande datastrukturerlänkade listorlistbaserade setComputer SciencesDatavetenskap (datalogi)The multicore revolution of the early 21st century has introduced a multitude of multiprocessor synchronization techniques for designing concurrent data structures. This thesis explores the concept of “unrolling”, or storing multiple data items per node, in order to increase the concurrent throughput of linked-lists, or more specifically list-based sets of linked nodes. Our contribution is a concurrent unrolled list-based set implemented in the Java programming language which uses lock-based lazy synchronization with memory management handled by the Java Virtual Machine (JVM). Our unrolled list implementation provides decreased traversal overhead over the state-of-the-art concurrent linked lists under limited contention, along with improved spatial locality due to unrolled node data items being stored in sequential memory locations. Our results show that in comparison to the state-of-the- art lock-based and lock-free concurrent list-based set implementations in Java, our concurrent unrolled list-based set provides between 1.7x to 12.2x increased concurrent throughput under medium contention, and 25.7x to 196.5x increased concurrent throughput under low contention, depending on the ratio of write to read operations. Furthermore, we show that unrolling a concurrent linked-list can provide at least 60% of the performance of the Java concurrency package’s native lock-free skiplist, namely ConcurrentSkipListSet.  Den revolutionerande utvecklingen av flerkärniga processorer under början av 2000-talet har medfört många nya designprinciper för samverkande datastrukturer. Den här avhandlingen behandlar utrullings-konceptet eller hur man lagrar multipla dataenheter per nod för att kunna öka genomströmningen av länkade listor, eller mer specifikt listor bestående av länkade noder. Vårt bidrag består av samverkande list-baserade set implementerade i programmeringsspråket Java som använder låsbaserad lat synkronisering där JVM (Java Virtual Machine) hanterar minnet. Vår implementering av utrullade listor ger minskad tvärgående overhead över toppmoderna samverkande länkade listor med reducerad kapacitetsbegränsning, och med förbättrad plats eftersom utrullade datanoder sparas på sekventiella minnesplatser. Våra resultat visar att, i jämförelse med andra toppmoderna låsta och låsfria samverkande listbaserade set i Java, ger vår implementation mellan 1.7 till 12.2 gånger mer genomströmning under normal kapacitetsbegränsning och med 25.7 till 196.5 under låg kapacitetsbegränsning, beroende på graden av skriv- och läsprocesser. Vidare visar vi att en utrullad samverkande länkad lista kan ge minst 60% bättre prestanda i Javas paket för låsfria samverkande listor kallad ConcurrentSkipListSet. Student thesisinfo:eu-repo/semantics/bachelorThesistexthttp://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-305923TRITA-EECS-EX ; 2021:796application/pdfinfo:eu-repo/semantics/openAccess
collection NDLTD
language English
format Others
sources NDLTD
topic Concurrent Data Structures
Linked-Lists
List-Based Sets
Samverkande datastrukturer
länkade listor
listbaserade set
Computer Sciences
Datavetenskap (datalogi)
spellingShingle Concurrent Data Structures
Linked-Lists
List-Based Sets
Samverkande datastrukturer
länkade listor
listbaserade set
Computer Sciences
Datavetenskap (datalogi)
Farhadi, Adam
A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
description The multicore revolution of the early 21st century has introduced a multitude of multiprocessor synchronization techniques for designing concurrent data structures. This thesis explores the concept of “unrolling”, or storing multiple data items per node, in order to increase the concurrent throughput of linked-lists, or more specifically list-based sets of linked nodes. Our contribution is a concurrent unrolled list-based set implemented in the Java programming language which uses lock-based lazy synchronization with memory management handled by the Java Virtual Machine (JVM). Our unrolled list implementation provides decreased traversal overhead over the state-of-the-art concurrent linked lists under limited contention, along with improved spatial locality due to unrolled node data items being stored in sequential memory locations. Our results show that in comparison to the state-of-the- art lock-based and lock-free concurrent list-based set implementations in Java, our concurrent unrolled list-based set provides between 1.7x to 12.2x increased concurrent throughput under medium contention, and 25.7x to 196.5x increased concurrent throughput under low contention, depending on the ratio of write to read operations. Furthermore, we show that unrolling a concurrent linked-list can provide at least 60% of the performance of the Java concurrency package’s native lock-free skiplist, namely ConcurrentSkipListSet.  === Den revolutionerande utvecklingen av flerkärniga processorer under början av 2000-talet har medfört många nya designprinciper för samverkande datastrukturer. Den här avhandlingen behandlar utrullings-konceptet eller hur man lagrar multipla dataenheter per nod för att kunna öka genomströmningen av länkade listor, eller mer specifikt listor bestående av länkade noder. Vårt bidrag består av samverkande list-baserade set implementerade i programmeringsspråket Java som använder låsbaserad lat synkronisering där JVM (Java Virtual Machine) hanterar minnet. Vår implementering av utrullade listor ger minskad tvärgående overhead över toppmoderna samverkande länkade listor med reducerad kapacitetsbegränsning, och med förbättrad plats eftersom utrullade datanoder sparas på sekventiella minnesplatser. Våra resultat visar att, i jämförelse med andra toppmoderna låsta och låsfria samverkande listbaserade set i Java, ger vår implementation mellan 1.7 till 12.2 gånger mer genomströmning under normal kapacitetsbegränsning och med 25.7 till 196.5 under låg kapacitetsbegränsning, beroende på graden av skriv- och läsprocesser. Vidare visar vi att en utrullad samverkande länkad lista kan ge minst 60% bättre prestanda i Javas paket för låsfria samverkande listor kallad ConcurrentSkipListSet.
author Farhadi, Adam
author_facet Farhadi, Adam
author_sort Farhadi, Adam
title A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
title_short A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
title_full A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
title_fullStr A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
title_full_unstemmed A JVM-Managed Concurrent Unrolled List-Based Set Using Lazy Synchronization
title_sort jvm-managed concurrent unrolled list-based set using lazy synchronization
publisher KTH, Skolan för elektroteknik och datavetenskap (EECS)
publishDate 2021
url http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-305923
work_keys_str_mv AT farhadiadam ajvmmanagedconcurrentunrolledlistbasedsetusinglazysynchronization
AT farhadiadam samverkandeutrulladelistbaseradesetsomanvanderlatsynkroniseringijvm
AT farhadiadam jvmmanagedconcurrentunrolledlistbasedsetusinglazysynchronization
_version_ 1723964174561705984