jreferral
An open-source tool that recommends the most energy efficient JVM configuration for java software
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
Repository
An open-source tool that recommends the most energy efficient JVM configuration for java software
Basic Info
Statistics
- Stars: 8
- Watchers: 3
- Forks: 0
- Open Issues: 0
- Releases: 0
Topics
Metadata Files
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
Choose The configurations to be tested in th file jvms.sh
- Uncomment what should be included during the tests
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*
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 ...
- Example
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
Put your benchmarks in a file as an exmple
example_bulks.shRun the script bulk.sh giving him as entry the path of your bulks_file
- Example
./src/bulk.sh example_bulks.sh## Plotting the results
- Example
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
optionsTAGvisible tagExample:
-XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+AlwaysPreTouch TAG EpsilonGCThe tests with this options will take the name of EpsilonGC in the graphsFlags and options
For both
jreferral.shandbulk.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

and for the detailed version (aka -d)

Plots
Energy consumption of CPU

Energy consumption of DRAM

Execution of Time

Owner
- Name: belgaid mohammed chakib
- Login: chakib-belgaid
- Kind: user
- Location: lille france
- Company: inria-lille
- Twitter: chakibmed
- Repositories: 69
- Profile: https://github.com/chakib-belgaid
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
Top Committers
| Name | Commits | |
|---|---|---|
| chakib-belgaid | c****d@g****m | 23 |
| Naif Mehanna | n****a@i****r | 4 |
| belgaid mohammed chakib | b****d@e****z | 2 |
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
Pull Request Labels
Dependencies
- pandas *
- tabulate *