jreferral

An open-source tool that recommends the most energy efficient JVM configuration for java software

https://github.com/chakib-belgaid/jreferral

Science Score: 54.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 3 committers (33.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (12.4%) to scientific vocabulary

Keywords

benchmark energy energy-consumption energy-efficiency java jvm optimization
Last synced: 4 months ago · JSON representation ·

Repository

An open-source tool that recommends the most energy efficient JVM configuration for java software

Basic Info
  • Host: GitHub
  • Owner: chakib-belgaid
  • Language: Jupyter Notebook
  • Default Branch: master
  • Homepage:
  • Size: 2.4 MB
Statistics
  • Stars: 8
  • Watchers: 3
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Topics
benchmark energy energy-consumption energy-efficiency java jvm optimization
Created over 4 years ago · Last pushed over 2 years ago
Metadata Files
Readme Citation

Readme.md

JReferral

A tool that run your java program through multiple versions of JVMs and optimisation options to recommand the most energry efficiant configuration.

Requirements

  • Docker : we use a docker image for testing and isolating the JVM
  • Linux : Our tool is based on RAPL sensors to measure energy
  • Python 3.5+ : for the reporting purpose

How to use

  1. Choose The configurations to be tested in th file jvms.sh

    • Uncomment what should be included during the tests
  2. Run build-images.sh that will build the docker images for respective jvms

    • You can add the option -u to setup the username for docker images
    • The images will have the format**username/jvm:version*
  3. Replace the word java with src/jrecommand.sh in your command

    • Example java -jar example.jar arg1 arg2 ... will be ./jreferral.sh -jar example.jar arg1 arg2 ...

You will find the results in data.csv and the execution log in exp.log

Note:

Due to security reasons, you need sudo access in order to measure the energy

Bulk Benchmarking

If you want to test multiple benchmarks you can use bulk.sh, to do So

  1. Put your benchmarks in a file as an exmple example_bulks.sh

  2. Run the script bulk.sh giving him as entry the path of your bulks_file

    • Example ./src/bulk.sh example_bulks.sh ## Plotting the results

With the option -p the program will generate a pdf file containaing all the measures aka execution time and energies for each benchmark.

  • In order to have more visible name for the different tunning options you can put them in the tagging file using the following format

    options TAG visible tag

  • Example: -XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+AlwaysPreTouch TAG EpsilonGC The tests with this options will take the name of EpsilonGC in the graphs

    Flags and options

  • For both jreferral.sh and bulk.sh

|Flag|Description|Default value| |--------|---------------|:---------------:| | -u name | The username of docker images | user | | -o filename | The filename where the all the measures should be put in | data.csv| | -l filename | Redirection of the output of the tests | exp.log | | -n Number | The number of iterations that should be run for each configuration | 1 | | -s Duration | Time to wait between two consecutive tests (in order to avoid the test impacting each others ) | 3s | sec| | -d | print the DRAM energy and CPU energy seperately | False | | -p | generate a pdf that containes all the measures in format of boxplot | False |

Example

Recap

This is an example to test the energy consumption of zip4j

zip4j

and for the detailed version (aka -d)

zip4j detailed

Plots

Energy consumption of CPU

zip4j

Energy consumption of DRAM

zip4j

Execution of Time

zip4j

Owner

  • Name: belgaid mohammed chakib
  • Login: chakib-belgaid
  • Kind: user
  • Location: lille france
  • Company: inria-lille

Green Coder, Gamer, and technology enthousiaste, I am a PhD in computer carbonfoot prints, energy measurement and Software optimization

Citation (CITATION.cff)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: Belgaid
    given-names: Mohammed chakib
  - family-names: Ournani
    given-names: Zakaria
  - family-names: Rouvoy
    given-names: Romain
  - family-names: Seinturier
    given-names: Lionel
title: "JRefferal: Which JVM suits your project ?"
version: 1.0.2
url: "https://github.com/chakib-belgaid/jreferral"
date-released: 2021-07-10

GitHub Events

Total
  • Watch event: 1
Last Year
  • Watch event: 1

Committers

Last synced: almost 2 years ago

All Time
  • Total Commits: 29
  • Total Committers: 3
  • Avg Commits per committer: 9.667
  • Development Distribution Score (DDS): 0.207
Past Year
  • Commits: 6
  • Committers: 2
  • Avg Commits per committer: 3.0
  • Development Distribution Score (DDS): 0.333
Top Committers
Name Email Commits
chakib-belgaid c****d@g****m 23
Naif Mehanna n****a@i****r 4
belgaid mohammed chakib b****d@e****z 2
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 7 months ago

All Time
  • Total issues: 1
  • Total pull requests: 0
  • Average time to close issues: almost 2 years
  • Average time to close pull requests: N/A
  • Total issue authors: 1
  • Total pull request authors: 0
  • Average comments per issue: 1.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 0
  • Pull requests: 0
  • Average time to close issues: N/A
  • Average time to close pull requests: N/A
  • Issue authors: 0
  • Pull request authors: 0
  • Average comments per issue: 0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • chakib-belgaid (1)
Pull Request Authors
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels

Dependencies

requirements.txt pypi
  • pandas *
  • tabulate *