1,721,100 research outputs found

    Removing GC Synchronisation

    Get PDF
    Garbage collection (GC) is a technique for automatically reclaiming unused blocks of application memory, thereby relieving the application programmer of this often error-prone task. GC has long been effectively employed in functional and object-oriented languages like ML, Smalltalk and SELF, but it is with the wide-spread adoptance of Java as a platform for large server applications that the performance of GC has become increasingly critical

    Brief Announcement: Concurrent Aggregate Queries

    Get PDF
    Concurrent data structures serve as fundamental building blocks for concurrent computing. Many concurrent counterparts have been designed for basic sequential algorithms; however, one notable omission is a concurrent tree that supports aggregate queries. Aggregate queries essentially compile succinct information about a range of data items. Such queries play an essential role in various applications and are commonly taught in undergraduate data structures courses. In this paper, we formalize a type of aggregate queries that can be efficiently supported by concurrent trees and present a design for implementing these queries on concurrent lock-based trees. We present two algorithms implementing this design, where one optimizes for tree update time, while the other optimizes for aggregate query time

    Session details: Keynote address

    No full text

    Session details: Keynote #2

    No full text

    The hardness of approximation: Gap location

    No full text

    Session details: Memory and errors

    No full text

    EEMARQ: Efficient Lock-Free Range Queries with Memory Reclamation

    Get PDF
    Multi-Version Concurrency Control (MVCC) is a common mechanism for achieving linearizable range queries in database systems and concurrent data-structures. The core idea is to keep previous versions of nodes to serve range queries, while still providing atomic reads and updates. Existing concurrent data-structure implementations, that support linearizable range queries, are either slow, use locks, or rely on blocking reclamation schemes. We present EEMARQ, the first scheme that uses MVCC with lock-free memory reclamation to obtain a fully lock-free data-structure supporting linearizable inserts, deletes, contains, and range queries. Evaluation shows that EEMARQ outperforms existing solutions across most workloads, with lower space overhead and while providing full lock freedom

    VBR: Version Based Reclamation

    Get PDF
    Safe lock-free memory reclamation is a difficult problem. Existing solutions follow three basic methods (or their combinations): epoch based reclamation, hazard pointers, and optimistic reclamation. Epoch-based methods are fast, but do not guarantee lock-freedom. Hazard pointer solutions are lock-free but typically do not provide high performance. Optimistic methods are lock-free and fast, but previous optimistic methods did not go all the way. While reads were executed optimistically, writes were protected by hazard pointers. In this work we present a new reclamation scheme called version based reclamation (VBR), which provides a full optimistic solution to lock-free memory reclamation, obtaining lock-freedom and high efficiency. Speculative execution is known as a fundamental tool for improving performance in various areas of computer science, and indeed evaluation with a lock-free linked-list, hash-table and skip-list shows that VBR outperforms state-of-the-art existing solutions

    Functional Faults

    No full text
    corecore