Git Product home page Git Product logo

fastmap's Introduction

FastMap

This library provides an optimized memory-mapped I/O path inside the Linux kernel. It is implemented as a kernel module and supported by user-space libraries for management purposes.

Prerequisites

FastMap runs on a modified version of Linux 4.14. To build and run this version of FastMap you can clone this kernel with:

git clone https://github.com/tpapagian/linux-4.14.72-spf.git -b fastmap

The modifications are minimal as they contain only some exported symbols and the addition of 2 fields in a single struct. The specific modification can be found at this commit.

After that, you should configure, build, and install this kernel using specific instructions based on your setup.

Building FastMap

In order to build FastMap simply run make on the top-level directory. This will build the driver (located in the driver directory) and the associated userspace tools (located in the ioctl directory). After that, it will also install the FastMap module and run depmod.

Running FastMap

The only required parameter is the number of 4KB DRAM pages that it will use as a cache. You can define this in the driver/main.c file in the perma_mmap_buf_size variable. Alternatively, you can use this as a command-line argument (i.e. modprobe dmap perma_mmap_buf_size=1024 and in this case it will allocate 1024 4KB pages totaling 4GB of DRAM cache).

In scripts directory you can find several scripts (with the appropriate comments) on how to load and unload FastMap. These include:

Script Description
scripts/load-it-blkdev.sh Load FastMap for a block device.
scripts/unload-it-blkdev.sh Unload FastMap for a block device.
scripts/load-it-fs.sh Load FastMap for a file system.
scripts/unload-it-fs.sh Unload FastMap for a file system.

Design and Evaluation

The following paper presents the design and experimental analysis of FastMap.

Anastasios Papagiannis, Giorgos Xanthakis, Giorgos Saloustros, Manolis Marazakis, and Angelos Bilas. Optimizing Memory-mapped I/O for Fast Storage Devices. In proceedings of the 2020 USENIX Annual Technical Conference (USENIX ATC 20). July 2020.

The pdf, slides, and presentation can be found here.

Please cite this publication if you use/modify/evaluate FastMap.

fastmap's People

Watchers

 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.