6 research outputs found

    Scalable Synchronization with Mindicators

    Get PDF
    The Mindicator is a shared object that stores one value for each thread in a system, and can return the minimum of all thread’s values in constant time. In this paper, we explore applications of the Mindicator in synchronization algorithms. We introduce three new algorithms, designed for scalable Read-Copy-Update (RCU), fair Readers-Writer locking, and Group Mutual Exclusion. Experimental evaluation shows these algorithms to perform well while avoiding contention

    Critical Sections: Re-Emerging Scalability Concerns for Database Storage Engines

    Get PDF
    Critical sections in database storage engines impact performance and scalability more as the number of hardware contexts per chip continues to grow exponentially. With enough threads in the system, some critical section will eventually become a bottleneck. While algorithmic changes are the only long-term solution, they tend to be complex and costly to develop. Meanwhile, changes in enforcement of critical sections require much less effort. We observe that, in practice, many critical sections are so short that enforcing them contributes a significant or even dominating fraction of their total cost and tuning them directly improves database system performance. The contribution of this paper is two-fold: we (a) make a thorough performance comparison of the various synchronization primitives in the database system developer’s toolbox and highlight the best ones for practical use, and (b) show that properly enforcing critical sections can delay the need to make algorithmic changes for a target number of processors

    Iterative Computations with Ordered Read-Write Locks

    Get PDF
    International audienceWe introduce the framework of ordered read-write locks, ORWL, that are characterized by two main features: a strict FIFO policy for access and the attribution of access to lock-handles instead of processes or threads. These two properties allow applications to have a controlled pro-active access to resources and thereby to achieve a high degree of asynchronicity between different tasks of the same application. For the case of iterative computations with many parallel tasks which access their resources in a cyclic pattern we provide a generic technique to implement them by means of ORWL. We show that the possible execution patterns for such a system correspond to a combinatorial lattice structure and that this lattice is finite iff the configuration contains a potential deadlock. In addition, we provide efficient algorithms: one that allows for a deadlock-free initialization of such a system and another one for the detection of deadlocks in an already initialized system

    Constant RMR Solutions to Reader Writer Synchronization

    Get PDF
    We study Reader-Writer Exclusion, a well-known variant of the Mutual Exclusion problem where processes are divided into two classes--readers and writers--and multiple readers can be in the Critical Section (CS) at the same time, although no process may be in the CS at the same time as a writer. Since readers don\u27t conflict with each other, they should not obstruct each other. Specifically, the concurrent entering property must be satisfied: if all writers are in the remainder section, each reader should be able to enter the CS in a bounded number of its own steps. Three versions of the Reader-Writer Exclusion problem are commonly studied--one where writers have priority over readers, another where readers have priority, and the last where neither class has priority over the other and no process may starve. To ensure high performance on Cache-Coherent (CC) and Distributed Shared Memory (DSM) multiprocessors, algorithms should be designed to generate as few remote memory references (RMRs) as possible. The ideal would be to achieve constant RMR complexity, i.e., the worst case number of RMRs that a process generates in order to enter and exit the CS once is a constant, independent of the number of processes. Constant RMR complexity algorithms have existed for Mutual Exclusion for two decades, but none exists for Reader-Writer Exclusion. Danek and Hadzilacos\u27 lower bound proof implies that it is impossible to achieve sublinear RMR complexity for DSM machines. For CC machines, the best existing bound, also due to Danek and Hadzilacos , is O(log n), where n is the number of processes. In this work, we present the first constant RMR complexity algorithms for all three versions of the Reader-Writer Exclusion problem (for CC machines)

    Constant-RMR Abortable Reader-Priority Reader-Writer Algorithm

    Get PDF
    The concurrent reader-writer problem (Courtois, 1971) involves two classes of processes: readers and writers, both of which wish to access a shared resource. Many readers can access the shared resource at the same time. However, if a writer is accessing the resource, no readers or other writers can access the resource at the same time. In the reader-priority version of the problem, readers are prioritized over writers when processes from both classes are trying to access the shared resource. Previous research (Bhatt, 2010) showed a reader-priority constant-RMR multi-reader, multi-writer algorithm for Cache-Coherent (CC) systems. However, this algorithm does not allow for readers or writers to abort, which allows readers and writers waiting for the resource to stop trying to access the resource and to quickly return to the Remainder Section of the code, where the process performs tasks unrelated to the shared resource. This thesis presents an abortable constant-RMR reader-priority multi-reader single-writer algorithm for CC systems. Additionally, we show how to generalize the algorithm into a multi-reader multi-writer algorithm using any given abortable mutual exclusion algorithm. The algorithm is proven rigorously by invariants and tested using a system of mathematical specification and model-checking tools (PlusCal/TLA+/TLC)
    corecore