1 research outputs found
Executing requests concurrently in state machine replication
State machine replication is one of the most popular ways to achieve fault tolerance. In
a nutshell, the state machine replication approach maintains multiple replicas that both
store a copy of the system’s data and execute operations on that data. When requests
to execute operations arrive, an “agree-execute” protocol keeps replicas synchronized:
they first agree on an order to execute the incoming operations, and then execute the
operations one at a time in the agreed upon order, so that every replica reaches the same
final state.
Multi-core processors are the norm, but taking advantage of the available processor
cores to execute operations simultaneously is at odds with the “agree-execute” protocol:
simultaneous execution is inherently unpredictable, so in the end replicas may arrive
at different final states and the system becomes inconsistent. On one hand, we want to
take advantage of the available processor cores to execute operations simultaneously and
improve performance. But on the other hand, replicas must abide by the operation order
that they agreed upon for the system to remain consistent. This dissertation proposes
a solution to this dilemma. At a high level, we propose to use speculative execution
techniques to execute operations simultaneously while nonetheless ensuring that their
execution is equivalent to having executed the operations sequentially in the order the
replicas agreed upon. To achieve this, we: (1) propose to execute operations as serializable
transactions, and (2) develop a new concurrency control protocol that ensures that the
concurrent execution of a set of transactions respects the serialization order the replicas
agreed upon. Since speculation is only effective if it is successful, we also (3) propose
a modification to the typical API to declare transactions, which allows transactions to
execute their logic over an abstract replica state, resulting in fewer conflicts between
transactions and thus improving the effectiveness of the speculative executions.
An experimental evaluation shows that the contributions in this dissertation can
improve the performance of a state-machine-replicated server up to 4 , reaching up to
75% the performance of a concurrent fault-prone server