3 research outputs found
Formalization of Phase Ordering
Phasers pose an interesting synchronization mechanism that generalizes many
collective synchronization patterns seen in parallel programming languages,
including barriers, clocks, and point-to-point synchronization using latches or
semaphores. This work characterizes scheduling constraints on phaser
operations, by relating the execution state of two tasks that operate on the
same phaser. We propose a formalization of Habanero phasers,
May-Happen-In-Parallel, and Happens-Before relations for phaser operations, and
show that these relations conform with the semantics. Our formalization and
proofs are fully mechanized using the Coq proof assistant, and are available
online.Comment: In Proceedings PLACES 2016, arXiv:1606.0540
Reliable Actors with Retry Orchestration
Enterprise cloud developers have to build applications that are resilient to
failures and interruptions. We advocate for, formalize, implement, and evaluate
a simple, albeit effective, fault-tolerant programming model for the cloud
based on actors, reliable message delivery, and retry orchestration. Our model
guarantees that (1) failed actor invocations are retried until success, (2) in
a distributed chain of invocations only the last one may be retried, (3)
pending synchronous invocations with a failed caller are automatically
cancelled. These guarantees make it possible to productively develop
fault-tolerant distributed applications ranging from classic problems of
concurrency theory to complex enterprise applications. Built as a service mesh,
our runtime system can interface application components written in any
programming language and scale with the application. We measure overhead
relative to reliable message queues. Using an application inspired by a typical
enterprise scenario, we assess fault tolerance and the impact of fault recovery
on application performance.Comment: 14 pages, 6 figure
Semantics of (Resilient) X10
We present a formal small-step structural operational semantics for a large fragment of X10, unifying past work. The fragment covers multiple places, mutable objects on the heap, sequencing, try/catch, async, finish, and at constructs. This model accurately captures the behavior of a large class of concurrent, multi-place X10 programs. Further, we introduce a formal model of resilience in X10. During execution of an X10 program, a place may fail for many reasons. Resilient X10 permits the program to continue executing, losing the data at the failed place, and most of the control state, and repairing the global control state in such a way that key semantic principles hold, the Happens Before Invariance Principle, and the Exception Masking Principle. These principles permit anX10 programmer to write clean code that continues to work in the presence of place failure. The given semantics have additionally been mechanized in Coq