Raspberry Pi Zero 2W
geerlingguy opened this issue · 5 comments
Basic information
- Board URL (official): https://www.raspberrypi.com/products/raspberry-pi-zero-2-w/
- Board purchased from: Micro Center
- Board purchase date: October 2021
- Board specs (as tested): 512MB RAM
- Board price (as tested): $15
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 Mbpsiperf3 --reverse -c $SERVER_IP
: 6.92 Mbpsiperf3 --bidir -c $SERVER_IP
: 3.87 Mbps up, 2.94 Mbps down
WiFi (built-in)
iperf3 -c $SERVER_IP
: 32.8 Mbpsiperf3 --reverse -c $SERVER_IP
: 41.9 Mbpsiperf3 --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.
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!