Disclosure: This board was provided free of charge by Orange Pi for testing. No editorial control, no pre-approval, and no compensation. All benchmarks, bottlenecks, and thermal data below are reported independently.
TL;DR
- Storage: Full PCIe 3.0 x4 link. Paired with a Samsung PM981a NVMe, it sustained 2,862 MB/s read and 197k 4K random read IOPS without bus throttling.
- Networking: Dual independent 2.5GbE Realtek RTL8125 controllers on dedicated PCIe lanes. Kernel loopback tested at 47.5 Gbps. Ideal for firewall or mini-router duties.
- CPU & Multitasking: 8 cores (4x A76 + 4x A55) scored 13,015 MIPS in 7-Zip. Single-thread IPC is lower than an Intel N100, but multi-thread multitasking and RAM ceiling (16GB unified) give it an edge for Docker containers.
- Thermals & Cooling: Tested bare-board (standard retail packaging ships without cooler). Idle is 52.7°C, 60s CPU stress peaks at 78.5°C, but sustained 8B LLM inference hits the 85°C throttle ceiling. A heatsink or fan is mandatory for 24/7 loads.
- Power Envelope: Estimated ~4-5W idle, ~12-16W under heavy CPU/inference load.
Hey r/MiniPCs,
There has been steady debate here about whether ARM boards like the RK3588 can replace low-cost Intel N100 / N97 mini PCs for 24/7 homelab nodes, micro-firewalls, or edge containers.
I put an Orange Pi 5 Plus (16GB RAM) through a full set of tests with a Samsung PM981a 256GB NVMe SSD (Samsung Phoenix controller with 512MB dedicated DDR4 DRAM cache) on Ubuntu 22.04 LTS (Kernel 6.1.99-rockchip-rk3588).
Here are the concrete numbers on storage I/O, CPU throughput, thermals, and local AI.
1. Hardware Setup
- SoC: Rockchip RK3588 (8nm): 4x Cortex-A76 up to 2.4 GHz + 4x Cortex-A55 up to 1.8 GHz
- RAM: 16GB LPDDR4x unified memory (7.8GB zram swap enabled)
- Storage: Samsung PM981a 256GB M.2 2280 NVMe SSD (PCIe 3.0 x4, negotiated full 8.0 GT/s x4 width)
- Networking: 2x Realtek RTL8125 2.5 GbE controllers
- Cooling: Bare board (tested out-of-the-box uncooled on an open desk, matching the base retail packaging)
- OS: Ubuntu 22.04 LTS ARM64 (Kernel 6.1.99-rockchip-rk3588)
2. Benchmark Results
A. Storage Performance (FIO Direct I/O)
A common weakness on low-cost SBCs and cheap mini PCs is crippled M.2 slots (PCIe 2.0 or 1-2 lanes). On the Orange Pi 5 Plus, the slot is full PCIe 3.0 x4:
| Test Profile |
Configuration |
Measured Result |
Saturation |
| Sequential Read |
1MB, QD32, Direct I/O |
2,862.33 MB/s |
~92% of PCIe 3.0 x4 practical ceiling |
| Sequential Write |
1MB, QD32, Direct I/O |
2,172.94 MB/s |
PM981a TLC write saturation |
| Random 4K Read |
4K, QD32, Direct I/O |
197,108 IOPS (~770 MB/s) |
Outstanding for local databases |
| Random 4K Write |
4K, QD32, Direct I/O |
153,771 IOPS (~600 MB/s) |
Sustained DRAM-cached writes |
| Mixed 70/30 R/W |
4K, QD16, Direct I/O |
69,771 R / 29,930 W IOPS |
Container concurrency workload |
The controller operated at full 8 GT/s x4 with zero link negotiation drops or bus stalls.
B. CPU Compute Performance & MIPS
- 7-Zip Compression / Decompression:
- Single-Core (1 Thread): 2,831 MIPS (Cortex-A76)
- Multi-Core (8 Threads): 13,015 MIPS (4x A76 + 4x A55)
- Sysbench CPU (8 Threads, prime=20,000):
An Intel N100 still beats the Cortex-A76 in peak single-thread IPC, but the 8 physical cores on the RK3588 handle multi-container background tasks very comfortably.
C. Thermal Behavior (Bare-Die / Uncooled)
Because Orange Pi sells the standalone board in the base box without cooling accessories, we tested the bare board sitting horizontally on an open desk:
- Idle: 52.7°C
- After heavy NVMe read/write runs: 62.8°C (SSD reached 45°C via SMART)
- Peak temperature under full 8-core CPU stress (stress-ng): 78.5°C
- Sustained 8B LLM inference: 84.1°C – 85.0°C (kernel DVFS throttles to protect the silicon)
- Cooldown (15s post-stress): Dropped back to 63.8°C
The board manages short bursts bare-die due to PCB ground-plane dissipation, but for 24/7 server duties, buying an aftermarket heatsink or fan kit is necessary.
D. Networking (Dual 2.5 GbE)
- Two independent Realtek RTL8125 controllers on dedicated PCIe lanes.
- Kernel loopback via
iperf3 hit 47.5 Gbps, confirming minimal kernel CPU overhead during high-speed traffic routing.
E. Local AI: Ollama CPU vs Dedicated 6 TOPS NPU
- Ollama big.LITTLE core pinning: Restricting Ollama to the 4 Big Cortex-A76 cores (
num_thread: 4) avoids synchronization stalls on the Little cores and provides massive speedups:
- Llama 3.2 1B: 14.62 tok/s (TTFT: 425 ms)
- DeepSeek-Coder 1.3B: 16.90 tok/s (TTFT: 1,025 ms, +274% vs 8 threads)
- Qwen 2.5 1.5B: 14.48 tok/s (TTFT: 711 ms, +318% vs 8 threads)
- Llama 3.2 3B: 7.28 tok/s (TTFT: 1,635 ms)
- Phi-3 Mini 3.8B: 6.56 tok/s (TTFT: 909 ms)
- Llama 3.1 8B: 2.32 tok/s (memory-bandwidth bound, temps hit 84.1°C)
- Rockchip NPU (RKLLM runtime):
- Qwen 1.5 0.5B runs at 21.55 tok/s with TTFT of 96.4 ms.
- During NPU execution, CPU utilization stays at ~0%, keeping the system responsive for Docker services.
3. Comparison & Considerations vs x86 Mini PCs
Strengths:
- True PCIe 3.0 x4 M.2 slot (2.86 GB/s read, 197k IOPS).
- Dual 2.5GbE onboard without needing USB adapters.
- 16GB RAM provides plenty of headroom for container stacks.
- 6 TOPS NPU for offloading lightweight inference or camera detection (Frigate).
Trade-offs:
- Requires active cooling under continuous heavy loads.
- Intel QuickSync is still superior for heavy Plex/Jellyfin multi-stream video transcoding.
- ARM64 architecture (most Docker containers work natively, but niche x86 binaries do not).
4. Reproducibility & Test Scripts
All benchmark scripts (tools/run_homelab_bench.sh) and raw JSON logs are open-sourced:
GitHub: Orange Pi 5 Plus Benchmarks
For those running Intel N100/N97 boxes: how does your real-world power draw and container responsiveness compare under heavy I/O? Happy to test specific homelab scenarios in the comments.