geerlingguy / sbc-reviews

Jeff Geerling's SBC review data - Raspberry Pi, Radxa, Orange Pi, etc.
MIT License
350 stars 9 forks source link

Raspberry Pi 3 model B+ #16

Open geerlingguy opened 1 year ago

geerlingguy commented 1 year ago

Focus Stacked Raspberry Pi 3 B Plus

Basic information

Linux/system information

# output of `neofetch`
       _,met$$$$$gg.          pi@pi3 
    ,g$$$$$$$$$$$$$$$P.       ------ 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 11 (bullseye) aarch64 
 ,$$P'              `$$$.     Host: Raspberry Pi 3 Model B Plus Rev 1.3 
',$$P       ,ggs.     `$$b:   Kernel: 5.15.84-v8+ 
`d$$'     ,$P"'   .    $$$    Uptime: 2 mins 
 $$P      d$'     ,    $$P    Packages: 597 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.1.4 
 $$;      Y$b._   _,d$P'      Resolution: 1920x1080 
 Y$$.    `.`"Y$$$$P"'         Terminal: /dev/pts/0 
 `$$b      "-.__              CPU: BCM2835 (4) @ 1.400GHz 
  `Y$$                        Memory: 87MiB / 909MiB 
   `Y$$.
     `$$b.                                            
       `Y$$b.                                         
          `"Y$b._
              `"""

# output of `uname -a`
Linux pi3 5.15.84-v8+ #1613 SMP PREEMPT Thu Jan 5 12:03:08 GMT 2023 aarch64 GNU/Linux

Benchmark results

CPU

Power

Disk

SanDisk Extreme Pro 32GB A1

Benchmark Result
fio 1M sequential read 23.3 MB/s
iozone 1M random read 22.52 MB/s
iozone 1M random write 20.09 MB/s
iozone 4K random read 6.63 MB/s
iozone 4K random write 3.73 MB/s

curl https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh | sudo bash

Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading. Download the script with curl -o disk-benchmark.sh [URL_HERE] and run sudo DEVICE_UNDER_TEST=/dev/sda DEVICE_MOUNT_PATH=/mnt/sda1 ./disk-benchmark.sh (assuming the device is sda).

Also consider running PiBenchmarks.com script.

Network

iperf3 results:

Built-in Ethernet

Built-in WiFi

1WiFi seemed to be very unstable when benchmarking on this board. I haven't done too much research into this, but it seemed to lock up every now and then when I was putting it under full load.

GPU

Memory

geerlingguy commented 1 year ago

To get Geekbench to complete, I had to increase the swap space from 100M to 1024M (fyi).

ThomasKaiser commented 1 year ago

To get Geekbench to complete, I had to increase the swap space from 100M to 1024M

100M sounds like the standard emergency swap on SD card, right?

Which simply means that Geekbench numbers have to go into the trash and not into a review when the claim is benchmarking the device and not just generating numbers w/o meaning?

BTW: with Geekbench 6 everything got worse (sample standard deviation seems to be higher than before and swapping occurs even on systems with 2 GB RAM now). Geekbench + SBC with less than 4GB RAM -> numbers w/o meaning since you're partially not 'benchmarking' the SBC in question but just the random I/O performance of the device the swap device sits on.

Geekbench 6 numbers on a device with 1GB RAM with swap on an ordinary SD card compared to swap on an A1 card compared to ZRAM will vary greatly. Same with Geekbench 5.5 but to a lower extent.

ThomasKaiser commented 1 year ago

BTW: geekbench_armv7 (gone with GB6) might run w/o swapping...

geerlingguy commented 1 year ago

Which simply means that Geekbench numbers have to go into the trash and not into a review when the claim is benchmarking the device and not just generating numbers w/o meaning?

The numbers are not invalid—the single core benchmarks required no swap, and only one of the multi-core tests seemed to dip into swap. The top line numbers have some inconsistency but the fact the benchmark doesn't run under defaults is an interesting point to make. There are other programs I've tried running on Pi 3 B+ and CM3+ that I couldn't run stably due to lack of RAM, so it just illustrates the point.

But that's why I link to the result, too—so people can compare it to other Pi 3 B+ runs on the Geekbench site, and also see the individual test results.

ThomasKaiser commented 1 year ago

There are other programs I've tried running on Pi 3 B+ and CM3+ that I couldn't run stably due to lack of RAM, so it just illustrates the point.

That's mostly due to running a 64-bit userland on these thingies where everything needs almost twice as much RAM as such you run way more likely into swapping. :)

so people can compare it to other Pi 3 B+ runs on the Geekbench site, and also see the individual test results.

People can't compare since you can't search for RPi 3B+ on the Geekbench site. All you can do is to search for either "Raspberry" or "BCM2385" (since for whatever reason most RPi from 2B on report this wrong SoC in /proc/cpuinfo unless it's RPi 4 w/o arm_64bit=1 since only then the correct SoC name is reported). Searching for "BCM2837B0" or "BCM2710" returns 0 hits while "BCM2711" at least returns RPi 4B running a 32-bit kernel.

Then you need to crawl through endless pages and search for "1400" since that's the only easy way to spot RPi 3B+.

And then you end up at this for example: https://browser.geekbench.com/v5/cpu/compare/18249926?baseline=20776700

Same device, same software (64-bit kernel and 64-bit userland), maybe different gpu_mem settings since amount of memory differs but this other board which has more memory available than yours shows lower scores. Why?

And there are plently of 3B+ listings which multi-scores below 200 or even 150.

Geekbench doesn't record real clockspeeds (but on RPi 3B+ the 1400 MHz will be turned silently into 1200 MHz with even moderate loads unless you set temp_soft_limit=80 in config.txt and reboot which ofc nobody knows), Geekbench doesn't report throttling, it doesn't check/report frequency capping (the RPi being silently downclocked to 600 MHz caused by undervolting) and it doesn't report swapping. It just collects numbers be it somewhat representing HW performance or being pure garbage and throws it into a database you can't even search in a reasonable way :)

BTW: that's what the -r and -R sbc-bench modes have been designed to deal with (the latter w/o running own benchmarks, just collecting some info and then switching into monitoring mode and reporting afterwards was has really happened while in another terminal this and that was tested to tell then if and why results are invalid. :)

github-actions[bot] commented 11 months ago

This issue has been marked 'stale' due to lack of recent activity. If there is no further activity, the issue will be closed in another 30 days. Thank you for your contribution!

Please read this blog post to see the reasons why I mark issues as stale.

platima commented 7 months ago

Very confused that this says BCM2835 but aarch64... I thought it was ARMv6 (32-bit)?

geerlingguy commented 7 months ago

@platima - The chip is 64-bit capable. It can also run 32-bit stuff too, it's one of the older designs that can do both native :)

platima commented 6 months ago

To get Geekbench to complete, I had to increase the swap space from 100M to 1024M (fyi).

Yeah on a 2GB board I had to kill lightdm to get it to finish without oom reaping the geekbench process. I honestly think we need to run it with swap disabled though to ensure results are more consistent, which might mean sticking to v5?