Giter Club home page Giter Club logo

sphinx's Introduction

Sphinx

What is Sphinx?

Sphinx is a fast in-memory key-value store that is compatible with the Memcached wire protocol.

Sphinx partitions data between logical cores, similar to MICA (Lim et al., 2014), so that a specific core manages each key. Sphinx also partitions connection sockets between cores. If a remote core manages a request key, Sphinx uses message passing to execute the request on that core. To manage key-value pairs, Sphinx uses an in-memory, log-structured memory allocator, similar to RAMCloud (Rumble et al., 2014).

Requirements

To build Sphinx, you need:

Build

To build Sphinx, run the following commands:

mkdir build
cd build
cmake ..
make

Usage

To start Sphinx, run the following command in the build directory:

sphinxd/sphinxd

References

Hyeontaek Lim, Dongsu Han, David G. Andersen, and Michael Kaminsky. 2014. MICA: a holistic approach to fast in-memory key-value storage. In Proceedings of the 11th USENIX Conference on Networked Systems Design and Implementation (NSDI'14). USENIX Association, Berkeley, CA, USA, 429-444.

Stephen M. Rumble, Ankita Kejriwal, and John Ousterhout. 2014. Log-structured memory for DRAM-based storage. In Proceedings of the 12th USENIX conference on File and Storage Technologies (FAST'14). USENIX Association, Berkeley, CA, USA, 1-16.

sphinx's People

Contributors

penberg avatar

Stargazers

Opadc avatar Benoit  avatar  avatar  avatar Ping'an Tian avatar Martin Ivanov avatar Prakash R avatar Nevermore avatar ypcpy avatar Chunchi Che avatar Camilo Aguilar avatar Piotr Rżysko avatar Ioan Rîpan avatar  avatar Mikhail Mitkevich avatar Toby DiPasquale avatar Devspace avatar  avatar ZhangCY avatar Ashwin Rao avatar JunghanKim avatar Caio Cozza avatar TD Mackey avatar Omachonu Ogali avatar Jussi Virtanen avatar  avatar Gustavo Pantuza avatar

Watchers

 avatar Jussi Virtanen avatar James Cloos avatar Ashwin Rao avatar  avatar

Forkers

zyh329 beratkirik

sphinx's Issues

How to reproduce

Hi, I found this this publish on Glommio docs.

To better understand the impact of thread-per-core I'd like to reproduce the experiment in the paper. Could you provide some information about how to reproduce?

Expiration support

Sphinx needs to support explicit timestamp-based object expiration and LRU policy, similar to Memcached. However, since we use a log-structured memory allocator, it might be difficult to provide LRU. Instead, we can see if we can approximate LRU with the approach MICA is taking, for example:

https://www.usenix.org/node/179748

UDP support

Memcached has UDP protocol support, which is missing from Sphinx.

Parser does not accept messages that terminate with just linefeed character

Memcached parser accepts messages that terminate with just a linefeed character (default for nc):

$ nc 127.0.0.1 11211
get foo
END

Sphinx, however, replies with an error result:

$ nc 127.0.0.1 11211
get foo
ERROR

Everything works as expected if I pass the -C command line option to nc to make it terminate lines with CR/LF characters.

Memcached:

$ nc -C 127.0.0.1 11211
get foo
END

Sphinx:

$ nc -C 127.0.0.1 11211
get foo
END

Although Sphinx is implemented as per the Memcached protocol specification, it's worth fixing this (minor) compatibility issue.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.