Giter VIP home page Giter VIP logo

reducing_waf_flash's Introduction

Flash-based solid state drives lack support for in-place updates, and hence deploy a flash translation layer to absorb the writes. For this purpose, SSDs implement a log-structured storage system introducing garbage collection and write amplification overheads. In this paper, we present a machine learning based approach for reducing write amplification in log structured file systems via death-time prediction of logical block addresses. We define death-time of a data element as the number of I/O writes before which the data element is overwritten. We leverage the sequential nature of I/O accesses to train lightweight, yet powerful, temporal convolutional network (TCN) based models to predict death times of logical blocks in SSDs. We leverage the predicted death-times in designing ML-DT, a near-optimal data placement technique that minimizes write amplification (WA) in log structured storage systems. We compare our approach with three state-of-the-art data placement schemes and show that ML-DT achieves the lowest WA by utilizing the learnt I/O death-time patterns from real-world storage workloads. Our proposed approach results in up to 14% reduction in write amplification compared to the best baseline technique. Additionally, we present a mapping learning technique to test the applicability of our approach to new or unseen workloads and present a hyper-parameter sensitive study.

Required Libraries: (Please see a setup tutorial below)

  1. Jupyter
  2. Keras
  3. Keras-tcn
  4. Tensor flow-gpu
  5. Pandas
  6. Ipykernel

How to run:

  1. Download the traces (See source links from paper)
  2. Parse the traces to a data frame
  3. Data prepare and pre-process the traces to add death time information
  4. Use the data to train the model using the traces and generate predictions in a CSV file
  5. Use the predictions to run the scripts (FTL_Greedy_v1, FTL_deathtime_v2, FTL_deathtime_v3, )
  6. Baselines used: AutoStream, WARCIP, DAC

Setup:

Install conda for Ubuntu: (If needed) https://docs.conda.io/projects/conda/en/latest/user-guide/install/linux.html

conda create -n “instance_name” python=3.7 (Replace “instance_name” with your desired name) conda install tensorflow-gpu

pip install ipykernel python -m ipykernel install --user --name gpu --display-name gpu (Replace “gpu” with your desired name)

conda install jupyter pip install keras conda install pandas pip install sklearn pip install matplotlib pip install keras-tcn jupyter notebook --generate-config

Add the following lines at the beginning of the config file: c = get_config() c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False c.NotebookApp.port = 8888

Start Jupyter instance : jupyter-notebook --no-browser --port=8888

reducing_waf_flash's People

Contributors

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