Coder Social home page Coder Social logo

hhu-bsinfo / dxmem Goto Github PK

View Code? Open in Web Editor NEW
3.0 2.0 4.0 2.54 MB

Memory allocator and management for billions of very small objects

Home Page: https://dxram.io

License: GNU General Public License v3.0

Shell 0.07% Java 99.93%
memory-management memory-allocator big-data graph-processing key-value-database key-value-store in-memory-storage

dxmem's Introduction

DXMem: Memory allocator and management for billions of very small objects

Build Status Build Status

DXMem implements a custom memory allocator and stores allocated data outside of the Java heap using Unsafe. The allocator is optimized for very small objects (< 64 byte) with low per object metadata overhead. Objects stored are referred to as "chunks". Chunks are identified using a unique chunk ID which is translated by the memory management to a corresponding address when getting/putting data.

DXMem was developed for the distributed key-value storage DXRAM but can also be used as a library by other projects.

How to Build and Run

Requirements

DXMem requires Java 1.8 to run on a Linux distribution of your choice (MacOSX might work as well but is not supported, officially).

Building

The script build.sh bootstraps our build system which is using gradle to build DXMem. The build output is located in build/dist either as directory (dxmem) or zip-package (dxmem.zip).

DXMemMain: Benchmark, Development and Debugging Tool

The dxmem jar-file contains a built in benchmark similar to the Yahoo! Cloud Service Benchmark (YCSB) to evaluate the performance of DXMem. Furthermore it includes tools for development and debugging.

Deploy the build output to your machine/cluster and run DXMem by executing the script dxmem in the bin subfolder:

./bin/dxmem

Benchmark

To run the benchmark tool, simply run dxmem with:

./bin/dxmem benchmark

The benchmark tool includes a set of predefined benchmarks which test typical data access patterns, e.g. the YCSB workload A with 50% get and 50% put operations:

/bin/dxmem benchmark 128-mb ycsb-a false false 1 1000 1 10000

Further parameters determine the heap size used, check data integrity (expensive operation!), the number of threads to use or objects to load. Please refer to the help yielded by the tools when omitting the required parameters.

Analyzer

Development tool to analyze a heap dumped to a file for errors. This is used for development when allocator errors occur and need to be analyzed.

Debugger

The debugger tool is an interactive shell which allows you to test or debug DXMem. All operations available by DXMem are available as terminal commands. Please refer to the instructions given by the debugger tool.

Sandbox example: Create a new heap with 128 MB size:

> new 0 128-mb

Create a 64 byte chunk:

> create 64

Write data to the chunk created (CID 0):

> put 0 0 str test

Get the data from the chunk:

> get 0 str

Delete the chunk:

remove 0

License

Copyright (C) 2018 Heinrich-Heine-Universitaet Duesseldorf, Institute of Computer Science, Department Operating Systems. Licensed under the GNU General Public License.

dxmem's People

Contributors

kai-nyy avatar kevinbeineke avatar krakowski avatar

Stargazers

 avatar  avatar  avatar

Watchers

 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.