post featured

02/10/2024

Benchmark Raspberry Pi 5

The Raspberry Pi 5 has changed a lot compared to the Raspberry 4.
The RPi5 has thus become faster in many areas.

We have done our own tests here at ElektronicaVoorJou and below you can find our findings.

Points we looked at are:

  • CPU
  • GPU (graphics processor)
  • Storage
  • Network and wifi

CPU
Below you can find the various meetings.
Generally a lot faster, but this is also noticeable in the temperature.
The RPi5 heats up faster than the RPi4 and active cooling is therefore not an unnecessary luxury.

The Raspberry Pi 5 features the Broadcom BCM2712 quad-core Arm Cortex A76 processor clocked at 2.4 GHz.

The Raspberry Pi 4 features the Broadcom BCM2711, Quad core Cortex-A72 (ARM v8) 64-bit SoC with a clock speed of 1.8GHz

So although still 4 cores, the speed without overclocking is already a third faster as standard.

GPU
Below you can find the various meetings.
The RPi5 can also heat up quickly when performing graphical tasks.
It should be noted that the way in which the graphics processor is called affects the temperature.

OpenGL is an open-source graphics programming interface (API) that enables developers to create 2D and 3D graphics for various applications such as video games and scientific visualizations.

Vulkan does the same thing, but it is specifically designed with multithreading in mind, allowing developers to make more efficient use of modern multi-core processors.

As a result, Vulkan optimized code will generally be faster and will run less hot on the Raspberry .

Storage
The traditional way of data storage and where the operating system is installed is a MicroSD card.
However, it is also possible to boot from USB.
(USB stick, SSD with a USB adapter or even Nvme)

Network

Optimizations have also been carried out in the network area.
While we didn't really see any differences with wired Ethernet networking, WiFi is faster on the RPi5.

Measure results and tools.

Below are the measurement results and the software tools we used.
The RPi4 and RPi5 used the same micro-sd cards and SSDs.
The location where the WiFi tests were done is also the same in both cases.

CPU Meeting

Tools used: sysbench and 7z

RPi5 with the command “sysbench cpu run”

sysbench cpu run sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3) Running the test with following options: Number of threads: 1 Initializing random number generator from current time Prime numbers limit: 10000 Initializing worker threads... Threads started! CPU speed: events per second: 2730.50 General statistics: total time: 10.0003s total number of events: 27309 Latency (ms): min: 0.36 avg: 0.37 max: 0.62 95th percentile: 0.37 sum: 9995.65 Threads fairness: events (avg/ stddev): 27309.0000/0.00 execution time (avg/stddev): 9.9957/0.00

RPi4 with the command “sysbench cpu run

sysbench cpu run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 10000
Initializing worker threads...
Threads started!
CPU speed:
events per second: 1471.46
General statistics:
total time: 10.0005s
total number of events: 14722
Latency (ms):
minus: 0.67
avg: 0.68
max: 1.14
95th percentile: 0.68
sum: 9994.77
Threads fairness:
events (avg/stddev): 14722.0000/0.00
execution time (avg/stddev): 9.9948/0.00

The meeting was done with 7z .

( 7z is a file compression program and format, similar to ZIP, that offers a high compression ratio and is open-source. But also has a benchmark option)

To run a single-thread benchmark you need to run the following command

7z b -mmt1

For a multi-thread benchmark test the last option can be omitted

7z b

RPi5 with the command “7z b -mmt1”

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: - - - - - - - - -
RAM size: 8049 MB, # CPU hardware threads: 4
RAM usage: 435 MB, # Benchmark threads: 1
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 2955 100 2876 2875 | 39071 100 3339 3336
23: 2825 100 2879 2879 | 38558 100 3338 3338
24: 2728 100 2934 2933 | 37821 100 3321 3320
25: 2649 100 3026 3025 | 36791 100 3276 3275
---------------------------------- | ------------------------------
Avr: 100 2929 2928 | 100 3318 3317
Up to: 100 3124 3123

RPi5 with command “7z b”

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: - - - - - - 512000000 - -
RAM size: 8049 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 9384 381 2396 9129 | 152484 399 3262 13009
23: 8784 384 2328 8950 | 148477 398 3226 12847
24: 8440 378 2403 9075 | 144927 398 3194 12723
25: 8088 374 2469 9235 | 141389 399 3152 12583
---------------------------------- | ------------------------------
Avr: 379 2399 9098 | 399 3209 12791
To: 389 2804 10944

RPI4 with the command “7z b -mmt1”

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: - - - - - - - - -
RAM size: 3792 MB, # CPU hardware threads: 4
RAM usage: 435 MB, # Benchmark threads: 1
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 1433 100 1395 1394 | 18991 100 1622 1622
23: 1358 100 1384 1384 | 18713 100 1620 1620
24: 1277 100 1374 1374 | 18402 100 1616 1616
25: 1199 100 1370 1370 | 17953 100 1598 1598
---------------------------------- | ------------------------------
Avr: 100 1381 1380 | 100 1614 1614
Up to: 100 1497 1497

RPi4 with the command “7z b”

7-Zip [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_GB.UTF-8,Utf16=on,HugeFiles=on,64 bits,4 CPUs LE)
LE
CPU Freq: 64000000 64000000 - - - - - - -
RAM size: 3792 MB, # CPU hardware threads: 4
RAM usage: 882 MB, # Benchmark threads: 4
Compressing | Decompressing
Dict Speed Usage R/U Rating | Speed Usage R/U Rating
KiB/s % MIPS MIPS | KiB/s % MIPS MIPS
22: 3868 338 1114 3764 | 73832 399 1578 6299
23: 3734 355 1073 3805 | 72478 399 1572 6271
24: 3597 363 1065 3868 | 71181 399 1565 6249
25: 3481 368 1081 3975 | 69457 399 1548 6182
---------------------------------- | ------------------------------
Avr: 356 1083 3853 | 399 1566 6250
To: 377 1325 5052

Another untested tool is stress-ng

CPU conclusion

sysbench

RPi4

RPi5

Percentage

Events/Sec

1471

2730

185%

7z

RPi4

RPi5

Percentage

Single

1497

3123

208%

Multi

5052

10944

216%

So in some cases the CPU is twice as fast.

GPU

For the graphics processor speed we used the tools below:

Glmark2

and

Vkmark

The Geekbench tool encountered a compilation error and we have not been able to test it yet.

We were also curious about the difference between the number of frames per second of quake2.

However, the volcano version produced strange artifacts and this test will also have a follow-up.

There is no hardware codec acceleration, only HEVC decoding.
(H265 hardware decoding at 4k60, and VC1 hardware decoding)

RPi5

[build] use-vbo=false

1041

0.961

[build] use-vbo=true

1196

0.836

[texture] texture-filter=nearest

1073

0.932

[texture] texture-filter=linear

1069

0.936

[texture] texture-filter=mipmap

1079

0.927

[shading] shading=gouraud

1089

0.918

[shading] shading=blinn-phong-inf

1109

0.902

[shading] shading=phong

1054

0.949

[shading] shading=cel

1055

0.948

[bump] bump-render=high-poly

783

1,278

[bump] bump-render=normals

1150

0.870

[bump] bump-render=height

1111

0.900

[effect2d] kernel=0,1,0;1,-4,1;0,1,0;

693

1,445

[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;

363

2,760

[pulsar] light=false:quads=5:texture=false

1235

0.810

[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4

284

3,521

[desktop] effect=shadow:windows=4

1041

0.961

[buffer] iinterleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map

491

2,039

[buffer] interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata

456

2,195

[buffer] interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map

527

1,901

[ideas] speed=duration

1103

0.907

[jellyfish]

891

1,123

[terrain]

67

14,994

[shadow]

157

6,386

[refract]

72

14,072

[conditionals] fragment-steps=0:vertex-steps=0

1268

0.789

[conditionals] fragment-steps=5:vertex-steps=0

1238

0.808

[conditionals] fragment-steps=0:vertex-steps=5

1267

0.789

[function] fragment-complexity=low:fragment-steps=5

1262

0.793

[function] fragment-complexity=medium:fragment-steps=5

1100

0.910

[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5

1255

0.797

[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5

1260

0.794

[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5

1107

0.904

RPi4

[build] use-vbo=false

559

1,792

Success

[build] use-vbo=true

682

1,467

Success

[texture] texture-filter=nearest

603

1,659

Success

[texture] texture-filter=linear

559

1,792

Success

[texture] texture-filter=mipmap

574

1,743

Success

[shading] shading=gouraud

620

1,614

Success

[shading] shading=blinn-phong-inf

537

1,864

Success

[shading] shading=phong

452

2,215

Success

[shading] shading=cel

436

2,295

Success

[bump] bump-render=high-poly

391

2,563

Success

[bump] bump-render=normals

611

1,638

Success

[bump] bump-render=height

543

1,843

Success

[effect2d] kernel=0,1,0;1,-4,1;0,1,0;

317

3,157

Success

[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;

168

5,961

Success

[pulsar] light=false:quads=5:texture=false

648

1,545

Success

[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4

111

9,081

Success

[desktop] effect=shadow:windows=4

443

2,261

Success

[buffer] interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map

171

5,873

Success

[buffer]interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata

178

5,628

Success

[buffer]iinterleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map

219

4,582

Success

[ideas] speed=duration

556

1,800

Success

[jellyfish]

333

3,005

Success

[terrain]

24

42,579

Success

[shadow]

92

10,888

Success

[refract]

33

31,110

Success

[conditionals] fragment-steps=0:vertex-steps=0

696

1,438

Success

[conditionals] fragment-steps=5:vertex-steps=0

456

2,194

Success

[conditionals] fragment-steps=0:vertex-steps=5

678

1,476

Success

[function] fragment-complexity=low:fragment-steps=5

582

1,718

Success

[function] fragment-complexity=medium:fragment-steps=5

412

2,431

Success

[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5

567

1,765

Success

[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5

567

1,765

Success

[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5

398

2,515

Success

GPU conclusion


Rpi4

Rpi5

Percentage

glmark2

429

906

211%

Whereby the vulcano variant was even faster than the glmark2

Vulkan score average found on internet 77(glmark2) compared to vulkan (188)

Below is the temperature of an RPi5 after playing a 4k movie for 5 minutes.
(Thermal image and photo shift of the raspberry is due to the dual camera of the flir module)

Storage (IO)

To measure the IO speed of the storage we used the following tools.

Hdparm, dd, iozone3

Other tools include Bonnie and fio

We looked at:

  • Read/Write actions to SD card
  • Read/Write actions to SSD via USB2 interface
  • Read/Write actions to SSD via USB3 interface

The SSD measurements were done by using a USB3 to SATA adapter and connecting it to the USB ports of the Raspberry .

It should be said that the fastest IO should be sought in an Nvme solution or via the PCIe of the RPi5. (This is not present on the RPi4)

Disadvantages SD card, although much has been improved. Many write actions can cause problems with older cards.
A solution for this could be: disable logging, write actions to a second external disk such as a thumbdrive or SSD.

An SD card will also be slower due to:

  • Sequential writing
  • Limited caching
  • Fragmentation

A better solution is to connect an SSD via an SSD to USB interface.

Disadvantages of an SSD

  • For this you need a SATA to USB3 interface or an SSD enclosure with a built-in USB converter.
  • More expensive due to the above
  • Be careful with TLC and QLC, they will become slower as the disk fills up.

An Nvme solution will be the fastest, a USB Thumbdrive is between SD card and SSD.

At the end of this document are the in-depth iozone charts.

Some meetings

( IOPS stands for “Input/Output Operations Per Second”)

 

RPi4 NVME - avg - 239MB/s - 19000 IOPS RPi5 NVME - avg - 333MB/s - 22200 IOPS RPi4 SSD - avg - 190 MB/s - 13300 IOPS RPi5 SSD - avg - 254 MB/s - 18000 IOPS RPi4 sdcard - g - 27MB/s - 3500 IOPS READ! 900 IOPS WRITE RPi5 sdcard - avg - 41MB/s - 4000 IOPS READ! WRITE 1000 IOPS

  System boot time from power on to opening the desktop.
These times are with sd card, ssd will be faster

RPI4 - avg 35 sec. RPI5 - avg 17 sec

  Measuring throughput speed with DD

The following command was used for the below.

dd if=/dev/zero of=zerodatafile bs=1G count=1 conv=fdatasync

(Note: use fdatasync to make sure the write process waits until the cache is cleared and everything is on storage!)

RPi5 Sdcard : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 37.6299 s, 28.5 MB/s Ssd - usb2 : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 40.0703 s, 26.8 MB/s Ssd - usb3 : 1073 741824 bytes (1.1 GB, 1.0 GiB) copied, 3.94715 s, 272 MB/s RPi4 Sdcard : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 51.6502 s, 20.8 MB/s SSD - usb 2 : 1073741824 bytes (1.1 GB , 1.0 GiB) copied, 39.2004 s, 27.4 MB/s SSD - usb 3 : 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.56438 s, 164 MB/s

As can be seen we can conclude a few things:

SD card speed is slightly faster on the RPi5, via USB2 it doesn't matter that much.

However, accessing the SSD via USB3 is more than 1.5x faster!

RPi4

RPi5

Percentage

sdcard

20.8

28.5

137%

usb2

27.4

26.8

98%

usb3

164

272

166%

RPi4 – Read – SSD

RPi4 – Writing – SSD

RPi5 – Read – SSD

RPi5 – Writing – SSD

Network meeting

Tools used: iperf3

Command server :
iperf3 -s

Command client :
iperf3 -c

This meeting measures without saving data, so the speed of storage has no effect.
The network throughput was almost the same when wired, in both cases to a remote machine ~900mbit/s

The WiFi meetings are listed below

Wifi via the RPi5 at a reasonable distance from the access point.

Download 122 mbits/s and upload 200 mbits/s.

On the RPi4 the upload and download were the same, at 75 mbit/s

Conclusion

The Raspberry has been improved in many ways.

The processor speed, graphics handling, IO throughput, and WiFi are all faster than the Raspberry 4.

At some points even 2 to 3 times faster