geerlingguy / sbc-reviews

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

Raspberry Pi Zero 2W #43

Open geerlingguy opened 6 months ago

geerlingguy commented 6 months ago

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

Power

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)

WiFi (built-in)

(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:

geerlingguy commented 6 months ago

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

geerlingguy commented 6 months ago

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.

geerlingguy commented 6 months ago

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

Screenshot 2024-05-17 at 2 10 58 PM
bobqianic commented 5 months ago

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.

geerlingguy commented 5 months ago

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!