Skip to main content

Raspberry Pi Benchmarking & Diagnostics

Guidelines and tools for monitoring Raspberry Pi health, investigating performance throttling, and performing stress tests.

System Diagnostics with vcgencmd​

The vcgencmd utility allows you to query various pieces of information from the Raspberry Pi's GPU firmware.

Investigating Throttling​

If your Pi feels slow, it might be due to thermal or voltage issues.

vcgencmd get_throttled

Status Code Breakdown (Hex Bitmask):

  • 0x1: Under-voltage detected (at the moment).
  • 0x2: ARM frequency capped (at the moment).
  • 0x4: Currently throttled.
  • 0x10000: Under-voltage has occurred since last boot.
  • 0x20000: ARM frequency capped has occurred since last boot.
  • 0x40000: Throttling has occurred since last boot.

Example: 0x50005 means under-voltage and throttling are active now and have occurred previously.

CPU Stress Testing​

1. cpuburn-arm​

Designed to generate maximum heat by intensively utilizing ARM instructions.

    • ssvb/cpuburn-arm
      • Assembly, MIT
      • Optimized CPU stress testing for various ARM architectures (A53, A8, etc.).
# Example for RPi 3/4 (Cortex-A53/A72)
wget https://raw.githubusercontent.com/ssvb/cpuburn-arm/master/cpuburn-a53.S
gcc -o cpuburn-a53 cpuburn-a53.S
./cpuburn-a53

2. stress-ng​

A comprehensive tool to stress various system components.

# Install tools
sudo apt-get install -y stress-ng htop

# Run a heavy stress test for 60 seconds
stress-ng --cpu $(nproc) --vm $(nproc) --vm-bytes 500M --io $(nproc) --timeout 60

GPU Stress Testing​

gpu-burn (CUDA only)​

Note: This is specifically for CUDA-enabled devices; standard Raspberry Pi GPUs (VideoCore) require different tools like GLMark2.

Real-time Monitoring Script​

Run this loop while stress testing to monitor clock speeds and temperatures:

while true; do
for v in "measure_clock arm" "measure_clock gpu" measure_temp get_throttled; do
/opt/vc/bin/vcgencmd $v
done
sleep 2
done

Resources​