Git Product home page Git Product logo

vtess / ioda-sosp21-ae Goto Github PK

View Code? Open in Web Editor NEW
10.0 1.0 4.0 219.88 MB

IODA: A Host/Device Co-Design for Strong Predictability Contract on Modern Flash Storage (SOSP'21)

Shell 0.16% Gnuplot 0.01% Awk 0.01% Makefile 0.26% C 97.62% C++ 0.10% Python 0.23% Haxe 0.03% Assembly 1.40% NSIS 0.01% Perl 0.14% SmPL 0.01% GDB 0.01% Objective-C 0.01% GLSL 0.01% sed 0.01% Yacc 0.02% Lex 0.01% UnrealScript 0.01% Gherkin 0.01%

ioda-sosp21-ae's Introduction

IODA Artifact Evaluation - SOSP'21

Overview of the Artifact

IODA artifact includes the following components:

  • iodaFEMU: IODA-enhanced SSD controller
  • iodaLinux: IODA-enahnced Linux kernel (based on Linux v4.15)
  • iodaVM: a QEMU VM image hosting utilities to run IODA experiments

All the experiments will run inside iodaVM, where it uses iodaLinux as the guest OS and manages a NVMe SSD exposed by iodaFEMU.

Foreword

  • This artifact is mainly setup for reproducing Figure 5 (and correspondingly Figure 6) in our submission, which contains IODA results of 9 trace workloads, each under 6 IODA modes (Base, IOD_1, IOD_2, IOD_3, IODA, and Ideal)

  • To simplify the evaluation process, we encourage you to use our pre-compiled Linux kernel bzImage of iodaLinux (already shipped withiodaVM) to save time.

  • All the experiments are done on Emulab D430 nodes, tested under Ubuntu 16.04.1 LTS, GCC: 5.4.0 and Ubuntu 20.04 LTS, GCC: 9.3.0 (recommended).

    • If you choose to use other types of servers, please make sure it has at least 32 cores, 64GB DRAM, and 80GB disk space, and better stick to a similar host OS environment as mentioned above.
  • Estimated time to finish all these experiments: 10-20 hours

To showcase the steps to setup and run IODA experiments, please refer to our screencast at https://asciinema.org/a/431726. We encourage you to watch the video first before following the detailed instructions below.

Detailed Steps

Prepare the physical server

Setup an Emulab D430 server, ssh into it. If you don't have Emulab/CloudLab access, please let us know on hotcrp and we can help spin up a server under our account and provide you the access.

Prepare the IODA environment

Clone the repo and download IODA VM image file:

mkdir -p ~/git
cd ~/git
git clone https://github.com/huaicheng/IODA-SOSP21-AE.git
ln -s IODA-SOSP21-AE ae
cd ae
export IODA_AE_TOPDIR=$(pwd)
cd images
./download-ioda-vm-image.sh
cd ${IODA_AE_TOPDIR}

At this point directory hierarchy should be like this:


├── build.sh                        # Script to build IODA
├── images
│   ├── download-ioda-vm-image.sh
│   └── ioda.qcow2                  # IODA VM image
├── README.md                       # README with detailed instructions
├── rtk                             # Plotting toolkit
│   ├── all.sh
│   ├── clear.sh
│   ├── dat
│   ├── eps
│   ├── plot
│   ├── script
│   └── w.txt
├── run-vm.sh                       # Script to run IODA VM
├── src
│   ├── iodaFEMU                    # IODA-enhanced FEMU SSD controller
│   └── iodaLinux                   # IODA-enhanced Linux kernel (v4.15)
└── utils
    ├── iodaExp                     # Utilities to run IODA experiments in IODA VM (the VM already has it setup)
    └── ioda-pkgdep.sh              # Script to install IODA dependencies

Build IODA

$ sudo ./build.sh

This script will install IODA dependencies, and build iodaFEMU and iodaLinux. The compiled binaries are:

  • iodaFEMU: src/iodaFEMU/build-femu/x86_64-softmmu/qemu-system-x86_64
  • iodaLinux: src/iodaLinux/arch/x86/boot/bzImage

Run the Experiments

First, start IODA VM and enter the guest OS:

cd ${IODA_AE_TOPDIR}
./run-vm.sh

FEMU will start booting and keep printing output for about 30-60 seconds. Once the guest OS is up, ssh into it using the following account

username: huaicheng
password: ii

Specifically, do the following

$ ssh -p10101 huaicheng@localhost
# then input the password

Note: From now on, all the operations are done in the VM.

We provide some automation scripts in the VM to simplify the process to run the experiments:

$ cd iodaExp
$ source ioda-env.sh # setup IODA env variables
$ cd traceExp
$ ss # this will create an RAID-5 array and age the FEMU SSDs

$ source r.sh # r.sh defines several functions to run experiments in batch, check it out

# A test run, let's run a "test" workload under all IODA modes, after it finishes, the latency log files are under "sosp21-ae-rst/"
$ run_sgl_all test

# Now, to run all experiments in batch: (this will take >10hours to finish, please wait patiently)
$ run_bat_all 

# After it finishes, similarly check all the raw latency logs under "sosp21-ae-rst" and use them for plotting

Plotting

The rtk contains scripts to plot the latency CDFs using gnuplot. If the server you use for running IODA experiments doesn't have GUI, you could consider copying the rtk folder to a desktop Linux machine with gnuplot installed.

The rtk folder contains the latency percentile data used in the paper. To replot the graph, simply run cd rtk; gnuplot plot/all.plt. The output figure is eps/all.eps.

After you have finished all the experiments, first copy out the corresponding read latency log files to rtk/raw/xxx. For example, copy tpcc-{base,iod1,iod2,iod3,ioda,ideal}-rd_lat.log from the IODA VM to rtk/raw/tpcc/tpcc-{base,iod1,iod2,iod3,ioda,ideal}.log. Then, run cd rtk; ./all.sh tpcc to refresh the percentile data. Repeat this step for all the workloads. Then, gnuplot plot/all.plt again to generate the final figure.

Check eps/all.eps for the new results.

ioda-sosp21-ae's People

Contributors

huaicheng avatar martinluttap avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

ioda-sosp21-ae's Issues

How to generate a trace in the specified format?

I noticed that trace needs to follow a specific format, as follows:

 Input trace file format:
   - 1: timestamp in ms
   - 2: disk ID (not used)
   - 3: offset in bytes
   - 4: I/O size in bytes
   - 5: r/w type, 1 for read and 0 for write

SO,how is trace in this format generated?

Downloading the VM images

I've tried the command ./download-ioda-vm-image.sh for the files download-ioda-vm-image.sh and ioda.qcow2 are met with a forbidden error. Would you please check? Thank you!

low bandwidth with fio test in IODA project

Hello, when I used FIO to test IODA performance, I found that the read and write bandwidth can only be 200-300M, and the bandwidth performance of 3+1RAID array is not yet the performance of a single disk. Did you have this problem during your experiment, and I want to know what caused this problem?

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.