Giter VIP home page Giter VIP logo

dssd's Introduction

DSSD Linux Developer Pro C Toolkit

Overview

The DSSD Linux Pro C Toolkit is a set of C programming libraries and utilities that were developed in the course of building the DSSD NVMe storage array datapath, and were essential in achieving the speed and flexibility of our implementation (>10M IOPS, <100us avg latency, and a full-featured object store supporting file, block and key-value interfaces in only 100K lines of code).

During the course of building DSSD, we felt that some of our low-level C programming primitives were so generally useful for C coding on Linux that they merited being designed as standalone, separate libraries and tools. We share those components here as open-source in the hope that other projects may benefit from their design ideas and/or implementation.

Components

The components currently provided by the toolkit are:

  • libbson - bson and json encoder and decoder
  • libhrtime - userland timestamp counter access
  • libtree - LLRB tree data structure library
  • libucore - userland core dump facility for long-running daemon processes
  • libunuma - userland programming API for NUMA and hugetlbfs
  • libustat - userland statistics library for publication and subscription
  • libutrace - userland sub-microsecond tracing and instrumentation engine
  • libvmem - userland virtual memory allocator
  • libvmem_malloc - libvmem interposition library for malloc and free
  • qat - regression test execution engine, compatible with Jenkins
  • ustat - userland statistics live and post-mortem query utility

Interfaces

The public interfaces for each library are found in libname/name.h (for example, libvmem/vmem.h). The interfaces should be relatively self- explanatory once you are familiar with the code. Where applicable, large block comments are found at the top of the source files with design and interface documentation. If you begin using one of the provided libraries extensively, feel free to contribute Doxygen support to this project.

Makefiles

The Makefiles provided for this project are a very simple skeleton just to show how the source is meant to be built. They do not constitute a full implementation of configuring and building a set of shipping libraries. These components are meant to integrated directly with your build system, which we assume is using its own set of Makefiles and Make conventions.

Authors

The components in this toolkit were written and designed by Mike Shapiro (libhrtime, libucore, libustat, libutrace, qat, ustat), Jeff Bonwick (libbson, libtree, libvmem, libvmem_malloc), and Simon Barrett (libunuma, libhrtime, libustat).

License

The DSSD Pro C Toolkit project is licensed to you under the Apache License, Version 2.0. Please refer to the LICENSE file for additional information.

dssd's People

Contributors

mwshapiro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

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.