GithubHelp home page GithubHelp logo

shawnzhong / shfllock Goto Github PK

View Code? Open in Web Editor NEW

This project forked from sslab-gatech/shfllock

0.0 1.0 0.0 28.54 MB

Makefile 0.66% Shell 1.95% C 54.90% C++ 10.43% Python 0.20% HTML 7.59% Vim Script 0.01% Gnuplot 0.02% Roff 0.37% Assembly 17.22% JavaScript 0.35% Rich Text Format 0.01% TSQL 0.01% PLpgSQL 0.01% Ruby 0.01% CMake 0.99% CSS 0.36% Java 2.20% Objective-C 0.01% PHP 2.72%

shfllock's Introduction

Scalable and Practical Locking with Shuffling

Paper

Overview

ShflLocks are a family of locking protocols that implement use shuffling mechanism to implement several policies, such as NUMA-awareness, or blocking. We implement three locking protocols: NUMA-aware spinlock, NUMA-aware blocking mutex, and NUMA-aware blocking rwlock.

Tested Environment

  • We use Ubuntu 16.04 but with our versions of kernels for testing purposes.

Required programs

  • We use the following programs for evaluation
    • Fxmark: file system micro-benchmarking in the kernelspace
    • lock1: This benchmark stresses the kernel spinlock and is part of the will-it-scale benchmark suite
    • Exim: mail server to stress kernelspace locks
    • Metis: map-reduce library to stress readers-writer lock in the kernel
    • AFL: fuzzer to stress kernel locks
    • Dedup: Parsec benchmark that stresses lock allocation in the usersapce
    • Streamcluster: Parsec benchmark that has about 40% of trylock calls in the userspace
    • Leveldb: Database benchmark that stresses a single lock in the userspace
    • Extended version of RCU-table benchmark, used for nano-benchmarking locks.

Kernelspace Benchmark

  • To test locks in the kernelspace, patch the kernel in the patches folder
  • Clone the following benchmark suite:
  $ git clone https://github.com/sslab-gatech/vbench
  $ git clone https://github.com/sslab-gatech/fxmark

Fxmark

  • We use the following benchmarks for evaluating all types of locks

    • MWCM
    • MWRL
    • MWRM
    • MRDM
  • We use following settings for our evaluation, which can be modified in bin/run-fxmark.py:

    self.DIRECTIOS = ["nodirectio"]
    self.MEDIA_TYPES = ["mem"]
    self.FS_TYPES = ["tmpfs"]
  • One issue with Fxmark is that we need to specify which benchmarks to run on line 520 in run-fxmark.py. Please, modify the following line ("mem", "*", "MWCM", "80", "directio")), to ("mem", "tmpfs", "MWCM", "*", "nodirectio")), If we use * for each column in the tuple, then Fxmark will comprehensively run all benchmarks on specified mediums for varying core count. Columns in the tuple represent the following:
    • mem: storage medium
    • tmpfs: file system
    • DWOL: benchmark name
    • 80: thread count
    • nodirectio: This is specific for nodirectio
  • Note that NUM_TEST_CONF=0 may be encountered on not appropriately setting the thread count. For testing purpose, please use the online core count (excluding HT).

Vbench

  • We use the following benchmarks from Vbench:

    • Exim
    • Metis
  • Please follow the README.md in the Vbench repo on how to run the benchmark and generate graphs.

  • AFL: Please follow the README.md in the benchmarks/fuzzing directory

  • Nano-benchmark: Please refer to the benchmarks/kernel-syncstress.

Userspace Benchmark

  • We extend the Litl framework (ulocks/src/litl/) and use the LD_PRELOAD for usersapce benchmarks.

  • Compile the Litl framework as follows:

make -C ulocks/src/litl
  • For Leveldb, follow Benchmark.md in the benchmarks/leveldb-1.20 folder.

  • For Dedup and Streamcluster, follow the README.md in the benchmarks/parsec folder.

Contact

shfllock's People

Contributors

sanidhya avatar

Watchers

James Cloos 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.