geerlingguy/sbc-reviews

Raspberry Pi Zero 2W

geerlingguy opened this issue · 5 comments

zero-2w

Basic information

Linux/system information

# output of `neofetch`
       _,met$$$$$gg.          pi@pizero 
    ,g$$$$$$$$$$$$$$$P.       --------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 12 (bookworm) aarch64 
 ,$$P'              `$$$.     Host: Raspberry Pi Zero 2 W Rev 1.0 
',$$P       ,ggs.     `$$b:   Kernel: 6.6.28+rpt-rpi-v8 
`d$$'     ,$P"'   .    $$$    Uptime: 19 secs 
 $$P      d$'     ,    $$P    Packages: 704 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.2.15 
 $$;      Y$b._   _,d$P'      Terminal: /dev/pts/0 
 Y$$.    `.`"Y$$$$P"'         CPU: (4) @ 1.000GHz 
 `$$b      "-.__              Memory: 86MiB / 417MiB 
  `Y$$
   `Y$$.                                              
     `$$b.                                            
       `Y$$b.
          `"Y$b._
              `"""

# output of `uname -a`
Linux pizero 6.6.28+rpt-rpi-v8 #1 SMP PREEMPT Debian 1:6.6.28-1+rpt1 (2024-04-22) aarch64 GNU/Linux

Benchmark results

CPU

  • Geekbench 6: Did not finish (locked up during Photo Filter test, likely OOM).
  • 0.3703 Gflops at 2.1W = 0.176 Gflop/W (geerlingguy/top500-benchmark HPL result)

Power

  • Idle power draw (at wall): 0.7 W
  • Maximum simulated power draw (stress-ng --matrix 0): 3 W
  • During Geekbench multicore benchmark: TODO W
  • During top500 HPL benchmark: 2.1 W

Disk

Kioxia Exceria 32GB microSD

Benchmark Result
iozone 4K random read 8.19 MB/s
iozone 4K random write 4.77 MB/s
iozone 1M random read 22.22 MB/s
iozone 1M random write 14.70 MB/s
iozone 1M sequential read 22.27 MB/s
iozone 1M sequential write 14.79 MB/s
wget https://raw.githubusercontent.com/geerlingguy/pi-cluster/master/benchmarks/disk-benchmark.sh
chmod +x disk-benchmark.sh
sudo MOUNT_PATH=/ TEST_SIZE=1g ./disk-benchmark.sh

Run benchmark on any attached storage device (e.g. eMMC, microSD, NVMe, SATA) and add results under an additional heading.

Also consider running PiBenchmarks.com script.

Network

iperf3 results:

Ethernet (USB 2.0 100 Mbps adapter)

  • iperf3 -c $SERVER_IP: 5.69 Mbps
  • iperf3 --reverse -c $SERVER_IP: 6.92 Mbps
  • iperf3 --bidir -c $SERVER_IP: 3.87 Mbps up, 2.94 Mbps down

WiFi (built-in)

  • iperf3 -c $SERVER_IP: 32.8 Mbps
  • iperf3 --reverse -c $SERVER_IP: 41.9 Mbps
  • iperf3 --bidir -c $SERVER_IP: 11.1 Mbps up, 30.9 Mbps down

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

GPU

glmark2-es2 results:

1. Install glmark2-es2 with `sudo apt install -y glmark2-es2`
2. Run `glmark2-es2`
3. Replace this block of text with the results.

Note: This benchmark requires an active display on the device. Not all devices may be able to run glmark2-es2, so in that case, make a note and move on!

TODO: See this issue for discussion about a full suite of standardized GPU benchmarks.

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                                     :   1268.1 MB/s (0.5%)
 C copy backwards (32 byte blocks)                    :   1278.6 MB/s
 C copy backwards (64 byte blocks)                    :   1225.9 MB/s (1.5%)
 C copy                                               :   1220.5 MB/s (0.8%)
 C copy prefetched (32 bytes step)                    :   1030.6 MB/s
 C copy prefetched (64 bytes step)                    :   1174.9 MB/s
 C 2-pass copy                                        :   1045.9 MB/s
 C 2-pass copy prefetched (32 bytes step)             :    772.9 MB/s
 C 2-pass copy prefetched (64 bytes step)             :    474.9 MB/s (0.5%)
 C fill                                               :   1766.6 MB/s
 C fill (shuffle within 16 byte blocks)               :   1771.4 MB/s (0.4%)
 C fill (shuffle within 32 byte blocks)               :   1763.6 MB/s (0.3%)
sony C fill (shuffle within 64 byte blocks)               :   1768.5 MB/s (2.3%)
 NEON 64x2 COPY                                       :   1288.4 MB/s
 NEON 64x2x4 COPY                                     :   1287.3 MB/s (0.2%)
 NEON 64x1x4_x2 COPY                                  :   1285.4 MB/s
 NEON 64x2 COPY prefetch x2                           :    363.4 MB/s
 NEON 64x2x4 COPY prefetch x1                         :   1313.2 MB/s
 NEON 64x2 COPY prefetch x1                           :   1316.3 MB/s
 NEON 64x2x4 COPY prefetch x1                         :   1313.2 MB/s (0.2%)
 ---
 standard memcpy                                      :   1263.6 MB/s (0.2%)
 standard memset                                      :   1770.8 MB/s (0.2%)
 ---
 NEON LDP/STP copy                                    :   1270.5 MB/s (0.4%)
 NEON LDP/STP copy pldl2strm (32 bytes step)          :    940.3 MB/s (1.2%)
 NEON LDP/STP copy pldl2strm (64 bytes step)          :   1150.7 MB/s (0.1%)
 NEON LDP/STP copy pldl1keep (32 bytes step)          :   1310.1 MB/s
 NEON LDP/STP copy pldl1keep (64 bytes step)          :   1310.5 MB/s
 NEON LD1/ST1 copy                                    :   1264.6 MB/s (0.5%)
 NEON STP fill                                        :   1772.4 MB/s (0.4%)
 NEON STNP fill                                       :   1056.4 MB/s
 ARM LDP/STP copy                                     :   1283.6 MB/s (0.5%)
 ARM STP fill                                         :   1769.9 MB/s (0.4%)
 ARM STNP fill                                        :   1061.5 MB/s (0.4%)

==========================================================================
== 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.1 ns 
     65536 :    6.5 ns          /    11.0 ns 
    131072 :    9.9 ns          /    15.7 ns 
    262144 :   11.6 ns          /    17.8 ns 
    524288 :   13.4 ns          /    20.2 ns 
   1048576 :   80.2 ns          /   123.9 ns 
   2097152 :  117.5 ns          /   161.4 ns 
   4194304 :  143.3 ns          /   183.3 ns 
   8388608 :  157.1 ns          /   193.6 ns 
  16777216 :  165.5 ns          /   200.2 ns 
  33554432 :  170.9 ns          /   204.6 ns 
  67108864 :  174.2 ns          /   207.8 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: 73.715 sec
  • pts/x264 4K: TODO fps
  • pts/x264 1080p: TODO fps
  • pts/phpbench: 57038
  • pts/build-linux-kernel (defconfig): TODO sec

I realize I set up this repository after the Zero 2W came out, and I don't have full numbers for it.

Heh, the lack of RAM really kills a few applications, like the video transcode seems to have just locked up after a few minutes:

x264 2022-02-22:
    pts/x264-2.7.0 [Video Input: Bosphorus 4K]
    Test 1 of 2
    Estimated Trial Run Count:    3                      
    Estimated Test Run-Time:      10 Minutes             
    Estimated Time To Completion: 20 Minutes [23:25 UTC] 
        Started Run 1 @ 23:06:03

I've let it run a few hours now and I can't SSH in from another terminal either.

After running Geekbench 6 for a couple hours, it eventually hung, seemingly out of memory:

Screenshot 2024-05-17 at 2 10 58 PM

BTW, how did you manage to get the Pi Zero 2W connected through USB Ethernet? Any guidance here? I saw many tutorials online, but they are very old and don't work anymore.

I have a rather ancient micro USB to Ethernet 10/100 Mbps adapter that I just plugged in, and it worked. Didn't have to do anything special. I can't find where I even bought it from back in the day!