P550 vs UR-DP1000: xz scaling benchmark

Table of Contents

A simple benchmark to test the scaling performance of xz on a UR-DP1000 machine vs a SiFive HiFive P550. The benchmarks covers: single thread (1 core) and multi-threading (4 and 8 cores). It uses the compression level preset of -6 — this is the tool's default and is supposed to provide the best trade-off between compression ratio and memory usage.

I used this ISO as the target (and renamed to Fedora-Workstation-43.iso): Fedora-Workstation-Live-43-1.6.x86_64.iso. The script used to do the benchmark is appended at the end.

Results

This is a crude summary from the numbers below.

Numbers

P550

--- Benchmarking xz Scaling on RISC-V ---
Target: Fedora-Workstation-43.iso (Level -6)
--------------------------------------------------------
Threads | Real Time | User Time | CPU % | RAM (est)
--------------------------------------------------------
   1    |   2426.15s   |   2394.97s   |  98%  | ~94MB
   4    |   641.35s   |   2505.66s   |  391%  | ~376MB
   8    |   690.66s   |   2698.18s   |  391%  | ~752MB
--------------------------------------------------------

UR-DP1000

--- Benchmarking xz Scaling on RISC-V ---
Target: Fedora-Workstation-43.iso (Level -6)
--------------------------------------------------------
Threads | Real Time   | User Time   | CPU %  | RAM (est)
--------------------------------------------------------
   1    |   1675.58s  |   1673.39s  |  99%   | ~94MB
   4    |   444.05s   |   1764.64s  |  397%  | ~376MB
   8    |   234.74s   |   1816.86s  |  774%  | ~752MB
--------------------------------------------------------

Script

#!/bin/bash

# Settings
ISO_FILE="Fedora-Workstation-43.iso"
LEVEL="-6"
THREADS=(1 4 8)

# Check for file
if [ ! -f "$ISO_FILE" ]; then
    echo "Error: $ISO_FILE not found."
    exit 1
fi

echo "--- Benchmarking xz Scaling on RISC-V ---"
echo "Target: $ISO_FILE (Level $LEVEL)"
echo "--------------------------------------------------------"
echo "Threads | Real Time | User Time | CPU % | RAM (est)"
echo "--------------------------------------------------------"

for T in "${THREADS[@]}"; do
    RAM_EST=$((T * 94))

    /usr/bin/time -f "   $T    |   %es   |   %Us   |  %P  | ~${RAM_EST}MB" \
        xz $LEVEL -T$T -c "$ISO_FILE" > /dev/null
done

echo "--------------------------------------------------------"
echo "Done. No files were written to disk."