Skip to content

Raspberry Pi 500+ #81

Open
Open

Description

@geerlingguy

Image

Basic information

Linux/system information

# output of `screenfetch`
         _,met$$$$$gg.           pi@raspberrypi
      ,g$$$$$$$$$$$$$$$P.        OS: Debian 12 bookworm
    ,g$$P""       """Y$$.".      Kernel: aarch64 Linux 6.12.20+rpt-rpi-2712
   ,$$P'              `$$$.      Uptime: 2m
  ',$$P       ,ggs.     `$$b:    Packages: 1951
  `d$$'     ,$P"'   .    $$$     Shell: dash
   $$P      d$'     ,    $$P     Disk: 13G / 243G (6%)
   $$:      $$.   -    ,d$$'     CPU: ARM Cortex-A76 @ 4x 2.4GHz
   $$\;      Y$b._   _,d$P'      GPU: 
   Y$$.    `.`"Y$$$$P"'          RAM: 785MiB / 16215MiB
   `$$b      "-.__              
    `Y$$                        
     `Y$$.                      
       `$$b.                    
         `Y$$b.                 
            `"Y$b._             
                `""""           

# output of `uname -a`
Linux raspberrypi 6.12.20+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.20-1+rpt1~bpo12+1 (2025-03-19) aarch64 GNU/Linux

Benchmark results

CPU

Power

  • Idle power draw (at wall): 2.9W
  • Idle power draw (at wall - LEDs on white at full brightness): 7W
  • Maximum simulated power draw (stress-ng --matrix 0): 9.4 W
  • During Geekbench multicore benchmark: 11.7 W
  • During top500 HPL benchmark: 12.9 W

Disk

Raspberry Pi 256 GB SSD (SAMSUNG MZ9LQ256HBJD-00BVL)

Benchmark Result
iozone 4K random read 49.38 MB/s
iozone 4K random write 189.98 MB/s
iozone 1M random read 742.21 MB/s
iozone 1M random write 749.75 MB/s
iozone 1M sequential read 797.70 MB/s
iozone 1M sequential write 750.91 MB/s

Raspberry Pi 32GB microSD

Benchmark Result
iozone 4K random read 18.08 MB/s
iozone 4K random write 6.59 MB/s
iozone 1M random read 89.05 MB/s
iozone 1M random write 30.19 MB/s
iozone 1M sequential read 89.64 MB/s
iozone 1M sequential write 30.29 MB/s

Network

iperf3 results:

Built-in Ethernet

  • iperf3 -c $SERVER_IP: 938 Mbps
  • iperf3 -c $SERVER_IP --reverse: 942 Mbps
  • iperf3 -c $SERVER_IP --bidir: 933 Mbps up, 936 Mbps down

Built-in WiFi

  • iperf3 -c $SERVER_IP: 258 Mbps
  • iperf3 -c $SERVER_IP --reverse: 228 Mbps
  • iperf3 -c $SERVER_IP --bidir: 85.4 Mbps up, 145 Mbps down

(Be sure to test all interfaces, noting any that are non-functional.)

GPU

glmark2

glmark2-es2-wayland results:

=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Broadcom
    GL_RENDERER:    V3D 7.1.10.2
    GL_VERSION:     OpenGL ES 3.1 Mesa 24.2.8-1~bpo12+rpt2
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 2291 FrameTime: 0.437 ms
[build] use-vbo=true: FPS: 2994 FrameTime: 0.334 ms
[texture] texture-filter=nearest: FPS: 2370 FrameTime: 0.422 ms
[texture] texture-filter=linear: FPS: 2353 FrameTime: 0.425 ms
[texture] texture-filter=mipmap: FPS: 2406 FrameTime: 0.416 ms
[shading] shading=gouraud: FPS: 2508 FrameTime: 0.399 ms
[shading] shading=blinn-phong-inf: FPS: 2135 FrameTime: 0.468 ms
[shading] shading=phong: FPS: 1767 FrameTime: 0.566 ms
[shading] shading=cel: FPS: 1719 FrameTime: 0.582 ms
[bump] bump-render=high-poly: FPS: 1294 FrameTime: 0.773 ms
[bump] bump-render=normals: FPS: 2608 FrameTime: 0.383 ms
[bump] bump-render=height: FPS: 2432 FrameTime: 0.411 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 958 FrameTime: 1.044 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 388 FrameTime: 2.583 ms
[pulsar] light=false:quads=5:texture=false: FPS: 2487 FrameTime: 0.402 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 239 FrameTime: 4.192 ms
[desktop] effect=shadow:windows=4: FPS: 883 FrameTime: 1.134 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 462 FrameTime: 2.165 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 446 FrameTime: 2.246 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 481 FrameTime: 2.083 ms
[ideas] speed=duration: FPS: 1848 FrameTime: 0.541 ms
[jellyfish] <default>: FPS: 989 FrameTime: 1.011 ms
[terrain] <default>: FPS: 69 FrameTime: 14.664 ms
[shadow] <default>: FPS: 312 FrameTime: 3.215 ms
[refract] <default>: FPS: 104 FrameTime: 9.659 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2746 FrameTime: 0.364 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1899 FrameTime: 0.527 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2690 FrameTime: 0.372 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 2269 FrameTime: 0.441 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1529 FrameTime: 0.654 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 2189 FrameTime: 0.457 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 2190 FrameTime: 0.457 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1452 FrameTime: 0.689 ms
=======================================================
                                  glmark2 Score: 1620 
=======================================================

vkmark

vkmark results:

=======================================================
    vkmark 2025.01
=======================================================
    Vendor ID:      0x14E4
    Device ID:      0x55701C33
    Device Name:    V3D 7.1.10.2
    Driver Version: 100671496
    Device UUID:    62ba0c091d6a41ea52f57d647c1d0ff0
=======================================================
[vertex] device-local=true: FPS: 2088 FrameTime: 0.479 ms
[vertex] device-local=false: FPS: 1777 FrameTime: 0.563 ms
[texture] anisotropy=0: FPS: 1654 FrameTime: 0.605 ms
[texture] anisotropy=16: FPS: 1592 FrameTime: 0.628 ms
[shading] shading=gouraud: FPS: 1485 FrameTime: 0.673 ms
[shading] shading=blinn-phong-inf: FPS: 1369 FrameTime: 0.730 ms
[shading] shading=phong: FPS: 1188 FrameTime: 0.842 ms
[shading] shading=cel: FPS: 1192 FrameTime: 0.839 ms
[effect2d] kernel=edge:gs FPS: 747 FrameTime: 1.339 ms
[effect2d] kernel=blur: FPS: 356 FrameTime: 2.809 ms
[desktop] <default>: FPS: 804 FrameTime: 1.244 ms
[cube] <default>: FPS: 2040 FrameTime: 0.490 ms
[clear] <default>: FPS: 2231 FrameTime: 0.448 ms
=======================================================
                                   vkmark Score: 1424
=======================================================

Note: vkmark needs to be compiled from source on Debian 12 and earlier.

GravityMark and other benchmarks with external AMD 7900 XT

I tested an AMD Radeon 7900 XT on the Pi 500 using an Oculink to M.2 adapter, and here are my test results for that:

Image

LLMs and AI

Testing on the Pi 500+: geerlingguy/ai-benchmarks#24 (Llama 3.2:3b - 5.55 tokens/s)

Testing with an eGPU: AMD RX 7900 XT 20GB.

Memory

tinymembench results:

Click to expand memory benchmark result
tinymembench v0.4.10 (simple benchmark for memory throughput and latency)

==========================================================================
== Memory bandwidth tests                                               ==
==                                                                      ==
== Note 1: 1MB = 1000000 bytes                                          ==
== Note 2: Results for 'copy' tests show how many bytes can be          ==
==         copied per second (adding together read and writen           ==
==         bytes would have provided twice higher numbers)              ==
== Note 3: 2-pass copy means that we are using a small temporary buffer ==
==         to first fetch data into it, and only then write it to the   ==
==         destination (source -> L1 cache, L1 cache -> destination)    ==
== Note 4: If sample standard deviation exceeds 0.1%, it is shown in    ==
==         brackets                                                     ==
==========================================================================

 C copy backwards                                     :   6091.2 MB/s (0.8%)
 C copy backwards (32 byte blocks)                    :   5973.3 MB/s
 C copy backwards (64 byte blocks)                    :   5972.4 MB/s
 C copy                                               :   5894.2 MB/s (0.1%)
 C copy prefetched (32 bytes step)                    :   5891.3 MB/s
 C copy prefetched (64 bytes step)                    :   5897.5 MB/s (0.4%)
 C 2-pass copy                                        :   5337.8 MB/s (0.5%)
 C 2-pass copy prefetched (32 bytes step)             :   5896.0 MB/s (0.3%)
 C 2-pass copy prefetched (64 bytes step)             :   5898.1 MB/s
 C fill                                               :   9751.2 MB/s (0.3%)
 C fill (shuffle within 16 byte blocks)               :   9763.8 MB/s (0.4%)
 C fill (shuffle within 32 byte blocks)               :   9734.1 MB/s (0.5%)
 C fill (shuffle within 64 byte blocks)               :   9690.8 MB/s
 NEON 64x2 COPY                                       :   5818.6 MB/s
 NEON 64x2x4 COPY                                     :   5837.8 MB/s
 NEON 64x1x4_x2 COPY                                  :   5847.8 MB/s
 NEON 64x2 COPY prefetch x2                           :   5596.1 MB/s (0.2%)
 NEON 64x2x4 COPY prefetch x1                         :   5707.2 MB/s
 NEON 64x2 COPY prefetch x1                           :   5573.0 MB/s
 NEON 64x2x4 COPY prefetch x1                         :   5707.8 MB/s
 ---
 standard memcpy                                      :   5865.0 MB/s (0.2%)
 standard memset                                      :   9738.5 MB/s (0.4%)
 ---
 NEON LDP/STP copy                                    :   5851.2 MB/s
 NEON LDP/STP copy pldl2strm (32 bytes step)          :   5954.0 MB/s
 NEON LDP/STP copy pldl2strm (64 bytes step)          :   5956.5 MB/s
 NEON LDP/STP copy pldl1keep (32 bytes step)          :   5959.0 MB/s
 NEON LDP/STP copy pldl1keep (64 bytes step)          :   5958.6 MB/s
 NEON LD1/ST1 copy                                    :   5845.9 MB/s
 NEON STP fill                                        :   9753.7 MB/s (0.7%)
 NEON STNP fill                                       :   9745.6 MB/s (0.8%)
 ARM LDP/STP copy                                     :   5844.7 MB/s
 ARM STP fill                                         :   9757.9 MB/s (0.5%)
 ARM STNP fill                                        :   9778.5 MB/s (0.1%)

==========================================================================
== Framebuffer read tests.                                              ==
==                                                                      ==
== Many ARM devices use a part of the system memory as the framebuffer, ==
== typically mapped as uncached but with write-combining enabled.       ==
== Writes to such framebuffers are quite fast, but reads are much       ==
== slower and very sensitive to the alignment and the selection of      ==
== CPU instructions which are used for accessing memory.                ==
==                                                                      ==
== Many x86 systems allocate the framebuffer in the GPU memory,         ==
== accessible for the CPU via a relatively slow PCI-E bus. Moreover,    ==
== PCI-E is asymmetric and handles reads a lot worse than writes.       ==
==                                                                      ==
== If uncached framebuffer reads are reasonably fast (at least 100 MB/s ==
== or preferably >300 MB/s), then using the shadow framebuffer layer    ==
== is not necessary in Xorg DDX drivers, resulting in a nice overall    ==
== performance improvement. For example, the xf86-video-fbturbo DDX     ==
== uses this trick.                                                     ==
==========================================================================

 NEON LDP/STP copy (from framebuffer)                 :   1605.5 MB/s
 NEON LDP/STP 2-pass copy (from framebuffer)          :   1456.7 MB/s
 NEON LD1/ST1 copy (from framebuffer)                 :   1618.8 MB/s
 NEON LD1/ST1 2-pass copy (from framebuffer)          :   1465.1 MB/s
 ARM LDP/STP copy (from framebuffer)                  :   1615.2 MB/s
 ARM LDP/STP 2-pass copy (from framebuffer)           :   1464.6 MB/s

==========================================================================
== Memory latency test                                                  ==
==                                                                      ==
== Average time is measured for random memory accesses in the buffers   ==
== of different sizes. The larger is the buffer, the more significant   ==
== are relative contributions of TLB, L1/L2 cache misses and SDRAM      ==
== accesses. For extremely large buffer sizes we are expecting to see   ==
== page table walk with several requests to SDRAM for almost every      ==
== memory access (though 64MiB is not nearly large enough to experience ==
== this effect to its fullest).                                         ==
==                                                                      ==
== Note 1: All the numbers are representing extra time, which needs to  ==
==         be added to L1 cache latency. The cycle timings for L1 cache ==
==         latency can be usually found in the processor documentation. ==
== Note 2: Dual random read means that we are simultaneously performing ==
==         two independent memory accesses at a time. In the case if    ==
==         the memory subsystem can't handle multiple outstanding       ==
==         requests, dual random read has the same timings as two       ==
==         single reads performed one after another.                    ==
==========================================================================

block size : single random read / dual random read
      1024 :    0.0 ns          /     0.0 ns 
      2048 :    0.0 ns          /     0.0 ns 
      4096 :    0.0 ns          /     0.0 ns 
      8192 :    0.0 ns          /     0.0 ns 
     16384 :    0.0 ns          /     0.0 ns 
     32768 :    0.0 ns          /     0.0 ns 
     65536 :    0.0 ns          /     0.0 ns 
    131072 :    1.1 ns          /     1.5 ns 
    262144 :    1.6 ns          /     2.0 ns 
    524288 :    1.9 ns          /     2.2 ns 
   1048576 :    8.3 ns          /    11.2 ns 
   2097152 :   12.1 ns          /    14.5 ns 
   4194304 :   50.9 ns          /    75.7 ns 
   8388608 :   79.5 ns          /   104.9 ns 
  16777216 :   93.9 ns          /   114.3 ns 
  33554432 :  103.3 ns          /   119.3 ns 
  67108864 :  108.6 ns          /   122.5 ns 

sbc-bench results

Run sbc-bench and paste a link to the results here:

wget https://raw.githubusercontent.com/ThomasKaiser/sbc-bench/master/sbc-bench.sh
sudo /bin/bash ./sbc-bench.sh -r

Phoronix Test Suite

Results from pi-general-benchmark.sh:

  • pts/encode-mp3: 11.784 sec
  • pts/x264 4K: 4.57 fps
  • pts/x264 1080p: 19.30 fps
  • pts/phpbench: 435919
  • pts/build-linux-kernel (defconfig): 2197.595 sec

Activity

  1. added a commit that references this issue on Sep 25, 2025
  2. geerlingguy commented on Sep 25, 2025

    @geerlingguy
    OwnerAuthor
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions