A tool that run your java program through multiple versions of JVMs and optimisation options to recommand the most energry efficiant configuration.
- 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
-
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
Due to security reasons, you need sudo access in order to measure the energy
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.sh
-
Run the script bulk.sh giving him as entry the path of your bulks_file
- Example
./src/bulk.sh example_bulks.sh
- 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
options
TAGvisible tag
-
Example:
-XX:+UnlockExperimentalVMOptions -XX:+UseEpsilonGC -XX:+AlwaysPreTouch TAG EpsilonGC
The tests with this options will take the name of EpsilonGC in the graphs
- For both
jreferral.sh
andbulk.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 |
-d | print the DRAM energy and CPU energy seperately | False |
-p | generate a pdf that containes all the measures in format of boxplot | False |
This is an example to test the energy consumption of zip4j
and for the detailed version (aka -d)
Energy consumption of CPU
Energy consumption of DRAM
Execution of Time