-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtranscoding-gpu-benchmark.xml
More file actions
37 lines (37 loc) · 8.71 KB
/
Copy pathtranscoding-gpu-benchmark.xml
File metadata and controls
37 lines (37 loc) · 8.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0"?>
<Container version="2">
<Name>Transcoding-GPU-Benchmark</Name>
<Repository>spaceinvaderone/transcoding-gpu-benchmark:latest</Repository>
<Registry>https://hub.docker.com/r/spaceinvaderone/transcoding-gpu-benchmark</Registry>
<Network>bridge</Network>
<MyIP/>
<Shell>sh</Shell>
<Privileged>false</Privileged>
<Support>https://github.com/SpaceinvaderOne/transcoding-gpu-benchmark/issues</Support>
<Project>https://github.com/SpaceinvaderOne/transcoding-gpu-benchmark</Project>
<Overview>Measures the maximum SUSTAINED number of simultaneous 4K HEVC -> 1080p H.264 (8 Mbit, strict >= 1.0x realtime) transcodes a GPU can do, shown live on a web scoreboard you can watch in a browser. Supports Intel (VAAPI), AMD (VAAPI), NVIDIA (NVENC/NVDEC) and CPU software transcoding - you pick which device to test from the web UI. GPU SETUP: INTEL and AMD work OUT OF THE BOX via the /dev/dri device below. FOR NVIDIA make ONE change - add --runtime=nvidia to Extra Parameters (the NVIDIA variables are already set; the NVIDIA driver plugin must be installed; on an NVIDIA-only host you can also remove the /dev/dri device). Everything else is identical for all vendors. It ramps the stream count one at a time and reports the highest count where EVERY stream still runs at or above real-time (same pinned test clips across vendors, so the numbers are comparable - and you can submit yours to the community leaderboard). Built on the Jellyfin image only to reuse the jellyfin-ffmpeg binary and its validated driver stack - the Jellyfin server itself is NOT run (the entrypoint is overridden). This is a run-and-watch benchmark, not an always-on service: pick a GPU, start it, watch the scoreboard reach the limit, then stop it. Nothing else should be using the GPU while it runs, or the result will be skewed.</Overview>
<Category>Tools:</Category>
<WebUI>http://[IP]:[PORT:8088]</WebUI>
<TemplateURL>https://raw.githubusercontent.com/SpaceinvaderOne/transcoding-gpu-benchmark/main/transcoding-gpu-benchmark.xml</TemplateURL>
<Icon>https://raw.githubusercontent.com/SpaceinvaderOne/transcoding-gpu-benchmark/main/icon.png</Icon>
<ExtraParams>--cap-add PERFMON</ExtraParams>
<PostArgs/>
<CPUset/>
<DateInstalled/>
<DonateText/>
<DonateLink/>
<Requires>A GPU with hardware transcoding. INTEL / AMD: works out of the box — just keep the /dev/dri device (VAAPI). NVIDIA: you MUST add --runtime=nvidia to Extra Parameters (it is NOT included by default; the NVIDIA driver plugin is required); the /dev/dri device can stay if you also have an Intel/AMD GPU, or be removed on NVIDIA-only hosts. --cap-add PERFMON (in Extra Parameters by default) lets intel_gpu_top read the Intel iGPU live telemetry (engine %, clock). OPTIONAL: add --pid=host to Extra Parameters to NAME which apps are using a GPU in the pre-test busy check (read-only host process visibility) - without it the check still warns when a GPU is busy, it just can't name the app. The RAM-speed readout (Intel iGPU) needs the read-only DMI mount below. The benchmark runs fine without these extras.</Requires>
<Config Name="WebUI" Target="8088" Default="8088" Mode="tcp" Description="Scoreboard web UI - open in a browser to pick a GPU and watch the benchmark live." Type="Port" Display="always" Required="true" Mask="false">8088</Config>
<Config Name="GPU device (Intel / AMD)" Target="/dev/dri/" Default="/dev/dri/" Mode="" Description="Intel/AMD GPU passthrough (VAAPI) - required to test an Intel or AMD GPU. Leave it for any host that has an Intel or AMD GPU. On an NVIDIA-only host with no /dev/dri you can remove this and instead add --runtime=nvidia to Extra Parameters." Type="Device" Display="always" Required="false" Mask="false">/dev/dri/</Config>
<Config Name="RAM disk (source clip)" Target="/ramdisk" Default="/tmp/transcode-test" Mode="rw" Description="MUST be a RAM-backed path. The benchmark hot-loads its source clip here at run start; keeping it in RAM ensures we measure the GPU, not disk I/O. /tmp is RAM-backed on Unraid - do NOT point this at an array or cache disk, or the stream count will be limited by storage speed instead of the GPU." Type="Path" Display="always" Required="true" Mask="false">/tmp/transcode-test</Config>
<Config Name="App data (clips + history)" Target="/config" Default="/mnt/user/appdata/Transcoding-GPU-Benchmark" Mode="rw" Description="Persistent app-data folder (standard Unraid appdata). REQUIRED for the one-time download of the pinned benchmark clips (kept here forever - container updates never re-download them), and stores your run history, CPU efficiency baseline and leaderboard identity. Safe to leave as-is." Type="Path" Display="always" Required="true" Mask="false">/mnt/user/appdata/Transcoding-GPU-Benchmark</Config>
<Config Name="Cache (unused, keeps Docker tidy)" Target="/cache" Default="/mnt/user/appdata/Transcoding-GPU-Benchmark/cache" Mode="rw" Description="The Jellyfin base image declares a /cache volume the benchmark never uses. Mapping it here stops Docker from creating a new anonymous volume on every container update. Safe to leave as-is." Type="Path" Display="advanced" Required="false" Mask="false">/mnt/user/appdata/Transcoding-GPU-Benchmark/cache</Config>
<Config Name="CPU power readout (optional)" Target="/powercap" Default="/sys/devices/virtual/powercap" Mode="ro" Description="Optional, read-only. Exposes the kernel's RAPL energy counters (the same source as the Unraid dashboard's CPU power) so CPU and iGPU tests can show real package watts - works on Intel AND modern AMD (Zen 2+) CPUs, no extra capabilities needed. Safe to leave as-is; remove it and CPU power falls back to intel_gpu_top (Intel GPU + PERFMON only)." Type="Path" Display="advanced" Required="false" Mask="false">/sys/devices/virtual/powercap</Config>
<Config Name="RAM speed readout (Intel iGPU, optional)" Target="/dmi" Default="/sys/firmware/dmi/tables" Mode="ro" Description="Optional, read-only. Lets the scoreboard show the system RAM type/speed for Intel iGPU runs (useful for explaining different results - e.g. XMP/EXPO off). Safe to leave as-is; remove it if you prefer not to expose the DMI tables." Type="Path" Display="advanced" Required="false" Mask="false">/sys/firmware/dmi/tables</Config>
<Config Name="Unraid version (optional)" Target="/unraid-version" Default="/etc/unraid-version" Mode="ro" Description="Optional, read-only. Lets the result include your Unraid OS version (handy for the shared results database). Safe to leave as-is." Type="Path" Display="advanced" Required="false" Mask="false">/etc/unraid-version</Config>
<Config Name="Temperature unit (optional)" Target="/dynamix.cfg" Default="/boot/config/plugins/dynamix/dynamix.cfg" Mode="ro" Description="Optional, read-only. Lets the scoreboard show temperatures in Fahrenheit or Celsius to match your Unraid display setting (Settings - Display Settings). Safe to leave as-is; remove it and temperatures default to Celsius (you can still click the Temp readout to switch)." Type="Path" Display="advanced" Required="false" Mask="false">/boot/config/plugins/dynamix/dynamix.cfg</Config>
<Config Name="Your test clips folder" Target="/input" Default="/mnt/user/appdata/Transcoding-GPU-Benchmark/input" Mode="ro" Description="Read-only drop folder for benchmarking YOUR OWN videos: copy one or a few files in and they appear in the 'Or test your own file' picker (codec and resolution auto-detected). The benchmark samples 60 seconds from the MIDDLE of the chosen file (openings are easy-to-decode logos/credits) and loads it into RAM. You can point this at any folder - but NOT your whole media library (too many files and it refuses). Custom-file runs are local-only and never submitted to the shared database." Type="Path" Display="always" Required="false" Mask="false">/mnt/user/appdata/Transcoding-GPU-Benchmark/input</Config>
<Config Name="MAX_STREAMS" Target="MAX_STREAMS" Default="128" Mode="" Description="Safety cap on the ramp. Fast GPUs (e.g. high-end NVIDIA) can sustain many streams; raise only if a run ends with 'MAX >= 128'." Type="Variable" Display="advanced" Required="false" Mask="false">128</Config>
<Config Name="NVIDIA_VISIBLE_DEVICES" Target="NVIDIA_VISIBLE_DEVICES" Default="all" Mode="" Description="NVIDIA only. Which NVIDIA GPUs the container can see. 'all' exposes every NVIDIA GPU. Requires --runtime=nvidia in Extra Parameters. Ignored by Intel/AMD." Type="Variable" Display="always" Required="false" Mask="false">all</Config>
<Config Name="NVIDIA_DRIVER_CAPABILITIES" Target="NVIDIA_DRIVER_CAPABILITIES" Default="all" Mode="" Description="NVIDIA only. Driver capabilities exposed to the container. 'all' includes video (NVENC/NVDEC) + compute. Requires --runtime=nvidia in Extra Parameters. Ignored by Intel/AMD." Type="Variable" Display="always" Required="false" Mask="false">all</Config>
</Container>