+A large class of distributed applications (e.g. the irregular applications) requires the use of distributed data structures. A subset of these applications (e.g. the distributed actor model, the fan-out/fan-in pattern) specifically requires distributed multi-producer single-consumer (MPSC) queues. For a distributed MPSC queue to be useful, it must provide high performance and fault tolerance (the notion of fault tolerance is closely linked to the notion of non-blocking). To date, there has been little effort into designing a performant and fault tolerant MPSC queue. In this thesis, we address this question, aiming to provide the programmers with a general-purpose, highly performant and fault tolerant MPSC queue. The key observation that guides us is that there are a lot non-blocking shared-memory MPSC queues in the literature. Therefore, our methodology is to use a bridging model, i.e. BCL CoreX, to adapt these into the distributed domain. We additionally make some optimizations to the resulting queues that take into account the constraint of distributed environments. As a result, we have obtained two fault tolerant (wait-free) MPSC queues that have good theoretical performance characteristics: dLTQueueV2 and Slotqueue. Based on our empirical evaluation against another blocking distributed MPSC queue (AMQueue), our queues perform better in terms of enqueue throughput and a little worse in terms of dequeue throughput. We believe that Slotqueue and dLTQueueV2 offer the right balance of fault tolerance and performance and can aid the programmer in implementing certain programming patterns.
0 commit comments