Coder Social home page Coder Social logo

drtm's Introduction

About DrTM

This is the repository of our prototype database system of the paper Fast In-memory Transaction Processing Using RDMA and RTM. DrTM exploits advanced hardeare features such as HTM (Hardware Transactional Memory) and RDMA (Remote Directly Memory Access) to execute distributed transactions.DrTM achieves high performance by offloading the transaction's execution to a local processor using HTM, and uses RDMA to support distributed transactions.

If you use DrTM in your work or research, please kindly let us know about it. We also encourage you to reference our paper:)

Here is the bibtex:

@inproceedings{Wei:2015:FIT:2815400.2815419,
 author = {Wei, Xingda and Shi, Jiaxin and Chen, Yanzhe and Chen, Rong and Chen, Haibo},
 title = {Fast In-memory Transaction Processing Using RDMA and HTM},
 booktitle = {Proceedings of the 25th Symposium on Operating Systems Principles},
 series = {SOSP '15},
 year = {2015},
 location = {Monterey, California},
 pages = {87--104},
 publisher = {ACM},
} 

For more information,please visit: http://ipads.se.sjtu.edu.cn/drtm.html

Dependencies

  • zeromq 4.0.5 or higher
  • Intel processors with RTM enabled
  • Mellanox OFED v3.0-2.0.1 stack or higher
  • ptpd
  • SSMalloc

Build

To install ptpd, just use

 apt-get install ptpd;
 service start ptp

SSMalloc can be found at https://github.com/SJTU-IPADS/SSMalloc.

Compiling

At main directory, use

make clean;make C=3 dbtest -j

We recommend using make’s parallel build feature to accelerate the compilation process.

After the compilation,you will get an execuatable file named dbtest.

How to use

You can write a configure file for the ease of evaluation. The format of the file is very simple. Each line in the file will be parsed to an IP address or host name. The line numbers will corresponding to machine ids. For example, the following file will corresponding to a cluster which the machine 0's ip is 10.0.0.1,machine 1's ip is 10.0.0.2 .

####
10.0.0.1
10.0.0.2
####

By default, the machine with id 0 (the fist ip in the configuration file) will serve as the master. It will collect the evaluation results from other machines.

Use the following comands to start DrTM instances at server(s) other than master. ./run.py i (config_filename) (thread_num) The default execuation directory is the home directory , but you can change it at run.py script. Then you can start master for the benchmark's execution.

Here is an example of starting an TPCC test on master.

./dbtest --bench tpcc --db-type ndb-proto2 --num-threads 8 --scale-factor 8 --txn-flags 1 --ops-per-worker 500000 --bench-opts "--w 45,43,4,4,4 -r 1" --verbose --retry-aborted-transactions --total-partition 4 --current-partition 0 --config   config_file

In this command,it assumes there are 4 machines configured in config_file.

Note that the thread number and the configure will be exact to the on in the run.py. The number of total partition must match the number of lines in the configure file. Now it's all set.

Acknowledgments

Some part of DrTM's codebase follows from Silo and leveldb.

drtm's People

Contributors

phoeagon avatar realstolz avatar styxyang avatar wxdwfc avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  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.