Code Monkey home page Code Monkey logo

damoos's Introduction

DAMOOS (DAMON-based Optimal Operation Schemes)

DAMON allows users to do data access monitoring-based memory-management optimizations with no code but simple scheme.

This project aims to automate the process of choosing right schemes for a workload-system pair.

Overview

DAMOOS stands for DAMon-based Optimal Operation Schemes and it is built to help the users to find the best DAMON scheme automatically. As the scheme depends both on the workload and the system characteristics, finding a good scheme manually is difficult. DAMOOS currently supports simple scheme adapter, simple RL Adapter, Polynomial Fit Adapter, Multi Dimension Polynomial Fit Adapter and Particle Swarm Optimization based adapter and in the future would also support more scheme adapters that the users can try out.

Prerequisites

To understand DAMOOS and the need for it, having a basic understanding of DAMON and DAMON-based Operation Schemes (DAMOS) is required. Please read the documentation about them here: https://damonitor.github.io/doc/html/next/admin-guide/mm/damon/index.html

Quick Start

If you are only a user of DAMOOS, then the interactive damoos.sh script is all that you need to know about. If you are interested in writing your own scheme adapters or tweaking some of the code, please read the details of DAMOOS in the different subdirectories.

You need a DAMON-enabled kernel to try out DAMOOS. You also need to register your workload in the frontend/workload_directory.txt in the following format:

ShortName@@@NameforPID@@@Command

Here, ShortName is the name of the workload that you will be using with DAMOOS. NameforPID is the name of the process using which DAMOOS can get the process's PID (Just use the top command to find the name under the command column). Command is used to run the workload, it should ideally use an absolute path and put the process in background so that DAMOOS can apply the different schemes to it.

Below is a small example of using the simple_adapter for a parsec3 workload named “dedup” and record the log in damoos_log file.

$ sudo bash damoos.sh simple_adapter damoos_log
Please enter Workload_Name(E.g:dedup,canneal,etc.)
dedup
Please enter Runtime_Importance_Score(E.g:"0.3")
0.4
Please enter Lazybox_Path(E.g:"/home/user/laxybox")
/home/dev4/lazybox
Script started, file is dedup_best_scheme.txt
 Optimizing dedup workload..

damoos.sh receives name of the adapter to use and name of a file to record the log as command line arguments. Then, it will ask you to enter the inputs required by the chosen scheme adapter.

Here is another example for polyfit_adapter:

$ sudo bash damoos.sh polyfit_adapter damoos_log
Please enter 1.Lazybox_Path(-lb)
/home/dev4/lazybox
Please enter 2.DAMOS_Path(-dm)
/home/dev4/linux/tools/damon/damo
Please enter 3.JSON_Path(-jp)
splash2x.barnes.json
Please enter 4.Pickle_File_Path(-pfn)

Script started, file is splash2x.barnes_best_scheme.txt
Optimizing splash2x.barnes...

DAMOOS Components

For more information about the implementation details of DAMOOS, read the following README files:

  1. Front-end

  2. Metric Collectors

  3. Scheme Adapters

    a) Simple Adapter

    b) Simple RL Adapter

    c) PolyFit Adapter

    d) PSO Adapter

    e) Multi Dimension Polyfit Adapter

Contact Details

Madhuparna Bhowmik ([email protected])

SeongJae Park ([email protected])

damoos's People

Contributors

amazon-auto avatar madhuparna04 avatar madhupb04 avatar sj-aws avatar sjp38 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.