Git Product home page Git Product logo

dvfs_research's Introduction

DVFS-Research

I - Goal

This framework addresses the problem of performance-energy trade-off in DVFS (Dynamic Voltage Frequency Scaling) systems. Today processor, Virtual Machine and Servers activity bring environmental question, more accurately some services doesn't need a high capacity of ressources. DVFS technique allows a system to remain switched ON while changing frequency to match the traffic. This avoids successive shutdown and restoration costs of big systems that can result in waste additional power and further latency to restore the same regime. The proposed DVFS model consideres a vector of thresholds that controls switch UP or DOWN of the frequency of the system. Thus, we seek to find the optimal vector of thresholds for performance and power consumption control. The system is modeled by a birth-death process that we propose, solved analytically and efficiently. Then we start a Multi-Objective Optimization to find the optimal thresholds. The optimization process considers a scalarization approach (WSM - Weighted Sum Method) and a non-dominated set approach (Pareto method). For more details, refer to the original paper [1].

II - Project architecture

Tree of the most important files and folder in the project's repository :

/
├─┬─resources/: To store all generated results.
│ ├──curves/: To store all curves.
│ ├──latex/: To store all latex content.
│ └──single/: To store all single results.
├───screenshots/: All screenshots used in README.md.
├─┬─src/: Source folder.
│ ├─┬─algorithms/: Algorithms folder.
│ │ ├─┬─wsm/: Weighted sum methods.
│ │ │ ├──exhaustive.py: Exhaustive search.
│ │ │ ├──greedy.py: Greedy proposed method.
│ │ │ ├──local.py: Local search.
│ │ │ └──tabu.py: Tabu search. 
│ │ └─┬─pareto/: Pareto methods.
│ │   ├──kung.py: Kung front method.
│ │   └──approx_kung.py: Approx greedy Pareto method.
│ ├─┬─others/: Other methods.
│ │ ├──save_data_in_file.py: To save results in resources file.
│ │ └──utils.py: Utils functions.
│ └─┬─tests/: Tests folder.
│   ├──curves.py: To generates curves.
│   ├──latex.py: To generates latex content.
│   └──single.py: Test of each componant of projet.
├───.gitignore: To avoid junk files on git repository. 
├───README.md: This file.
└───launcher.py: To run all content from src/.

III - Build and run

Before running code, you need to download all package needed :

pip install matplotlib==3.5.3
pip install pandas
pip install numpy

Uncomment and run function from launcher.py :

python launcher.py

IV - Usage

In this project, there are three type of tests you can run :

A) Test 1 : Curves

Allows to generate a graph to compare the efficiency of all weight sum and pareto methods. To use this test, you need to uncomment the function cu.launch() in launcher.py, after that, you can go to curves.py to uncomment the actual function to use, moreover you can add or remove your own test in this file.



There is only one test, but you can generate different types of graphs with different configurations. In particular, you can choose the number of wsm curves displayed, to start at the same point or not, to show all curves with the same scale and the position where the points should be selected.



Once your tests are finished, you can check in resources/curves/<test>/ to see the generated graphs and their data (respectively in pdf and csv files). For example, here is the result of the test 1 :



B) Test 2 : Single

Allows to show all algorithms already implemented in action. To use this test, you need to uncomment the function si.launch() in launcher.py, after that, you can go to single.py to uncomment the actual function to use, moreover you can add or remove your own test in this file.



Once your tests are finished, you can check in resources/single/<method>/ to see the generated graphs and their data (respectively in pdf and csv files). For example, here is the result of the exhaustive search :




C) Test 3 : Latex

Allows to generate a latex file to compare the efficiency of all wsm and pareto method. To use this test, you need to uncomment the function la.launch() in launcher.py, after that, you can go to latex.py to uncomment the actual function to use, moreover you can add or remove your own test in this file.



There is only one test, but you can generate different types of latex documents, about which weight sum methods are better than others, also you can count the exhaustive search or not. For the pareto methods there is the same option, but it’s to compare the efficiency of each solution set found.

Once your tests are finished, you can check in resources/latex/<test>/ to see the generated data
(in csv file). For example, here is the result of the test 1, you can open the file created and copy the content to paste it in your latex editor like overleaf :




This test may take a little longer as it compares all methods for all proposed instances.

V - Illustration

In this section all screenshots related to the test are displayed here.

A) Curves

B) Latex (example of a small instance)

Contributors & Copyright

[1] "STOCHASTIC MODELING AND OPTIMIZATION FOR POWER AND PERFORMANCE CONTROL IN DVFS SYSTEMS", Youssef AIT EL MAHJOUB, Leo LE CORRE and Hind CASTEL-TALEB". Accepted paper in "MaSPECS" track of 37th ECMS - International Conference on Modelling and Simulation, 2023.

dvfs_research's People

Contributors

karmaessence avatar ossef avatar

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.