If you're building an always on system which is doing any kind of video transcoding then you'll want to investigate Intel Quick Sync Video (QSV). Many common video applications can take advantage of this hardware transcoding technology such as Jellyfin, Plex, Frigate, Blue Iris, and many more.

Quick Sync Video is the hardware video transcoding circuitry built into most Intel CPUs for the last few years.

However, we don't really have any standardised testing to allow us to benchmark iGPUs for transcoding performance. There are plenty of benchmarks out there for gaming performance but nothing for those us running these types of always-on server workloads where energy usage matters just as much, if not more, than ultimate performance.

GitHub - ironicbadger/quicksync_calc
Contribute to ironicbadger/quicksync_calc development by creating an account on GitHub.

Therefore I'm pleased to announce the first release of a Quick Sync benchmarking script allowing us to do just that.

A big thank you to my buddy Morgan Peterman (aka cptmorgan-rh) who wrote the majority of this script.

The Test Video

To ensure we had a standardised, copyright free video for everyone to use I edited some old drone footage of mine that has never seen the light of day before. The stunning and bleak Ribblehead viaduct is the subject.

The file was rendered out from Final Cut Pro in 4 formats. H264 at 1080p and 4k plus HEVC 8 bit at 1080p and the final boss level encoding test, HEVC 10 bit at 4k.

How to run the benchmark

This script requires you have an Intel CPU with Quick Sync. It also requires a Linux host with docker installed and root access for simplicities sake.

During the creation of this benchmarking script I took the decision to use the Jellyfin ffmpeg fork and run the tests from within a Jellyfin container. This removes a bunch of maintenance burden and allows a standardised test environment across multiple users.

In order to make this test as fair as possible, please stop any running containers or other VMs for the approx 5 min duration of the test. Thank you.

To run the benchmark, do as follows:

# connect to the system you want the benchmark on (likely via ssh)
ssh user@hostname

# install a couple of dependencies (script tested on proxmox 8 + ubuntu 22.04)
apt install docker jq bc intel-gpu-tools

# clone the git repo with the script
git clone https://github.com/ironicbadger/quicksync_calc.git

# change directory into the cloned repo
cd quicksync_calc

# download the test videos
./video-download.sh

# run the benchmark
./quicksync-benchmark.sh

# copy your results into the following github gist as a comment
https://gist.github.com/ironicbadger/5da9b321acbe6b6b53070437023b844d

If you'd like there's also a tmux.sh script which will show you htop and intel_gpu_top  if you're into watching bars fill up as your system goes to work (hint: I am!).

Results

Once complete you should have generated a small table of results which looks something like this.

Please copy and paste those results into this Github Gist. I hope to make a more interactive results browser available on perfectmediaserver.com in time but for now this will have to do!

results
results. GitHub Gist: instantly share code, notes, and snippets.