Coder Social home page Coder Social logo

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.

ShflLock for the kernel(klocks) is provided under the terms of GNU General Public License v2, and the user library(ulocks) is released under the terms of MIT license. Please see the LICENSE files in each directory.

ShflLocks in kerenelspace

To test locks in the kernelspace, use a patch in the klocks folder. The patch is written on top of linux v4.19

  • Please checkout the Linux v4.19-rc4 version of the Linux kernel
  $ git clone --branch v4.19-rc4 https://github.com/torvalds/linux
  $ cd linux
  • Use monkey patching to apply these patches for running Linux with different versions.
  $ patch -p1 < <path-to-path>

ShflLocks in userspace

We extend the Litl framework (ulocks) and use the LD_PRELOAD for usersapce benchmarks.

Supported algorithms

Name Ref Waiting Policy Supported Name in the Paper [LOC] Notes and acknowledgments
AQS [NUMA-MCS] original (spin) non-block shfllock ShflLock paper
AQS-WO-NODE [NUMA-MCS] spin non-block shfllock wo node ShflLock paper
AQM [NUMA-MUT] spin_then_park blocking shfllock ShflLock paper
AQM-WO-NODE [NUMA-MUT] spin_then_park blocking shfllock wo node ShflLock paper

How to run

Compile the Litl framework as follows:

make -C ulocks

If you want to use non-blocking ShflLock, do the following:

./libaqs_spinlock.sh my_program

You can find more details in ulocks/README.md.

Contact

shfllock's People

Contributors

manycoreos avatar persona0220 avatar sanidhya 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

Watchers

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