Skip to content

Repository files navigation

Video Transcoding Sustainability Study

What does a JVM warm-up setting cost, in watts, at the scale of a video platform?

An energy and carbon study of GPU video transcoding across JVM JIT compilation profiles, measured under sustained load against a Spring Boot transcoding server and extrapolated to the daily footprint of a commercial video service. Group 7, Designing Sustainable ICT Systems, TU Delft.

Green software Controlled energy measurement MIT License

Final report · Plots · Experiment harness

Java Spring Boot FFmpeg NVENC Locust Python


Experiment Files

We here document our repository structure and main files used for the experiment.

The following diagram is a summary of the experiment workflow and used scripts, together with their role in the run. Experiment Workflow

As other important code files we consider:

  • Server Side:

  • Tools and scripts:

  • Results:

    • Main experimental results are stored in /results, which contains:
      • h264-gpu/ → 7 JIT compiler profiles (baseline, c1-only, c2-only, interpret, heap, low-threshold, double-thread);
      • hevc-gpu/ → baseline profile;
      • av1-gpu/ → baseline profile.
    • Retrieved Carbon Intensity Factors can be found in /emission-data

How to run

Before running, make sure to have executed a sudo command in the launching terminal to insert the password, beacause it is then used authomatically by the monitoring scripts.

To recreate the experiment, you have to run the run_profile.sh script specifying the necessary parameters. To run what we did use the following command:

./run_profiles.sh -- --monitor-sudo --runSec 180 --timeout 90 --numberOfRepetitions 30 --warmupSec 90  --codec h264 --resolution 1080 --use-gpu true

Make sure to have the python dependencies installed on your local machine or on a virtual enviroment with:

pip install requirements.txt

FFmpeg must be installed and accessible from the command line.

ffmpeg --version

In order to reproduce our experiment the video we used can be found at: https://www.youtube.com/watch?v=iHdviZkM7S4

GPU-accelerated transcoding (--use-gpu true) is only supported on NVIDIA GPUs with NVENC hardware encoder support.

About

Energy and carbon study of GPU video transcoding across JVM JIT profiles, measured under load against a Spring Boot transcoding server.

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages