Skip to content

matthelb/gryff

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
This branch is 4 commits ahead of efficient:master.

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Gryff

What is Gryff?

Gryff is a replicated storage system that provides the shared object programming interface. Objects of arbitrary size are accessed with read, write, and read-modify-write operations. Read and write operations correspond to the simplified get/put interface of key-value stores and they comprise the bulk of many application workloads. Read-modify-write operations allow clients to atomically read and modify the value of an object, which enables strong synchronization such as compare-and-swaps or conditional writes.

What makes Gryff novel?

Gryff provides its interface with low read tail latency relative to state-of-the-art linearizable replication protocols. It does so by unifying two existing techniques for replicated storage: state machine replication and shared registers. State machine replication is necessary to implement strong synchronization primitives, but it has fundamental limitations that inhibit practical systems from achieving low read tail latency. Shared register protocols, on the other hand, provide a read/write interface with low read tail latency, but are fundamentally too weak to implement strong synchronization. Gryff safely and efficiently unifies these two techniques to achieve the best of both.

How does Gryff work?

Our NSDI 2020 paper describes the motivation, design, implementation, and evaluation of Gryff.

What is in this repository?

This repository contains the Go implementations of:

  • Gryff
  • ABD
  • EPaxos
  • (classic) MultiPaxos
  • Mencius
  • Generalized Paxos

The implementations of EPaxos, MultiPaxos, Mencius, and Generalized Paxos were created by Iulian Moraru, David G. Andersen, and Michael Kaminsky as part of the EPaxos project.

This repository also contains the experimental scripts and configuration used in our NSDI 2020 paper. The experiments may be run on CloudLab using these scripts. A more detailed explanation of how to run these experiments is coming soon!

AUTHORS:

Matthew Burke -- Cornell University

Audrey Cheng, Wyatt Lloyd -- Princeton University

Releases

No releases published

Packages

No packages published

Languages

  • Go 77.3%
  • Python 17.2%
  • TLA 4.7%
  • Shell 0.5%
  • Roff 0.3%
  • Makefile 0.0%