原文地址:https://ibugone.com/blog/2019/09/raspberry-pi-4-review-benchmark/,作者为 @iBug 同学。以下为翻译部分。
前段时间,我终于拿到了自己心念的树莓派 4(4 GB 的型号),之后我就忍不住试了试,看看它在报道中提到的改进与提升究竟是什么样子的。
我自己的树莓派 3B+ 有个外壳,所以这次购买树莓派 4 的同时,我也订了个铝制的外壳,以减轻发热给树莓派带来的压力。与之前的外壳不同的是,它还配备了两个小风扇,能够大幅度提高散热效率。
就让我们来看一看吧。
概览
新的树莓派 4 装在了类似 3B+ 的包装中,包装正面是树莓派 4 的红底白线的结构图,与本体大小相同。与树莓派 3B 不同的是,3B+ 和 4 都没有用防静电袋包好。当然,这不是什么问题。
它的结构与前几代类似,不过有一些明显的变化。比如说,你肯定会最先注意到那几个 USB 3.0 接口——因为它们是蓝色的。在你观察那几个接口的同时,你很可能也注意到了,有可能是因为千兆网口的升级的缘故,以太网接口换了位置。
有一些小接口,即供电口和视频输出,也有一些变化。树莓派 4 现在需要一根 Type-C 线供电,并且需求提升到了 5V / 3A。目前尚且不知树莓派 4 是否支持类似于高通快充或者 USB PD 这样的快充技术,但是从用户反馈来看,是没有的。旧款上标准大小的 HDMI 也被 micro-HDMI 口替换——而且变成了两个:它们都支持 4K 60fps 输出,而且可以同时输出!尽管我打算把树莓派当无头(无显示的)服务器来用,用树莓派配桌面环境的人可能会喜欢这个特性。
内存条也从树莓派的背面移到了正面,现在在 SoC 旁边。SoC 长得和 3B+ 的一样,但是内部却完全不同。Wi-Fi 屏蔽罩和天线没有变化,另外在千兆网口的前面又多出了一个额外的芯片。
参数
新的树莓派 4 带来了大量激动人心的更新,包括了:
- 博通 BCM2711 SoC, 四核 1.5 GHz Cortex-A72 CPU
- 有 1 GB, 2GB 和 4 GB RAM 四种版本(4 GB 就是我手中的这款)
- 博通 VideoCore VI GPU
- 真正的千兆以太网口
- 蓝牙 5.0
- 原生 USB 3.0 支持,包含了 2 个 Type-A 的接口
- 双 HDMI 口,支持同时 4K 60fps 输出
- 更快的 microSD 卡插槽
在之后的基准测试中,你可以看到这些更新参数意味着什么。以下是一张对比表:
树莓派 3B | 树莓派 3B+ | 树莓派 4 | |
---|---|---|---|
CPU | 四核 1.20 GHz Cortex-A53 | 四核 1.40 GHz Cortex-A53 | 四核 1.50 GHz Cortex-A72 |
内存 | 1 GB DDR2 | 1 GB DDR2 | 1 / 2 / 4 GB DDR4 |
GPU | VideoCore IV | VideoCore IV | VideoCore VI |
以太网 | 100 Mbps | 300 Mbps 有效 | 1 Gbps |
Wi-Fi | 2.4 GHz | 2.4 GHz / 5 GHz | 2.4 GHz / 5 GHz |
蓝牙 | 4.0 | 4.2 | 5.0 |
USB | 4 个 USB 2.0 | 4 个 USB 2.0 | 2 个 USB 2.0 和 2 个 USB 3.0 |
官方价格 | 35 美元 | 35 美元 | 35 / 45 / 55 美元 (根据内存选择不同而不同) |
在我买到 3B+ 之后,我就把 3B 卖(给了译者),所以那个树莓派 3B 就没法参与接下来的评测了。(译者注:那个 3B 现在被我放在家里吃灰……对不起……)
我的设置
正如你看到的那样,两个树莓派都是无头的服务器,只连接了电源和以太网。你可能在疑惑,为什么它们看起来这么诡异,这是因为我所在的实验室有很多标称 5V / 6A 的电源供应线,所以我就拿了一个来通过 GPIO 给这两个树莓派供电。这两个树莓派峰值标称 5V / 2.5A 和 5V / 3A,所以一根供电线就够了。
警告
除非你有稳定的供电,请不要使用 GPIO 给树莓派供电。手机充电器不能作为电源供应,你永远都不应该用手机充电器通过 GPIO 供电给树莓派。
基准测试
两个树莓派被分配了静态 IP,所有的操作都通过 SSH 完成。操作系统是最新版的 Raspbian Buster Lite。
SysBench CPU 测试
SysBench 是一个可以快速获取系统性能的测试套件。这里我使用 SysBench 来测试 CPU 与内存。
sysbench --test=cpu run
sysbench --test=cpu --num-threads=4 run
sysbench --test=cpu --num-threads=8 run
如表中显示的那样,在 CPU 性能方面,树莓派 4 相比 3B+ 而言有巨大提升,在所有情况中都少花了 19.3% 的时间。
SysBench 内存测试
内存测试有点复杂,并且我发现了一些意料之外的结果。
sysbench --test=memory --memory-block-size=1K --memory-total-size=2G --memory-oper=read run
sysbench --test=memory --memory-block-size=1K --memory-total-size=2G --memory-oper=write run
sysbench --test=memory --memory-block-size=1K --memory-total-size=2G --memory-oper=read --num-threads=4 run
sysbench --test=memory --memory-block-size=1K --memory-total-size=2G --memory-oper=write --num-threads=4 run
sysbench --test=memory --memory-block-size=1M --memory-total-size=2G --memory-oper=write --num-threads=4 run
新的 DDR4 内存竟然比老古董 DDR2 内存慢,而且在多线程情况下差距进一步拉大了!唯一一点合理的是,当单个块大小到 1 MiB 的时候,树莓派 4 要小幅好于 3B+。
一件有意思的事情是,我没有包含“1 MiB Read MT”(1 MiB 单块,读取,多线程)这一列。SysBench 在两块树莓派上都给我返回了超过 200 GB/s 的结果,有时候结果还高达 500 GB/s。这显然太滑稽了,所以我直接忽略了那个结果。
FIO microSD 卡速度测试
此测试结果依赖于 microSD 卡本身,所以我拿出了我拥有的最快的 SD 卡:Lexar 667x 128 GB microSD 卡,外观类似下面这张图:
我使用 fio
作为磁盘(microSD 卡)I/O 性能测试工具。因为我更熟悉 Crystal DiskMark,我调整了 fio
的参数,以与其一致。
fio --loops=5 --size=500m --filename=fiotest.tmp --stonewall --ioengine=libaio --direct=1 \
--name=SeqRead --bs=1m --rw=read \
--name=SeqWrite --bs=1m --rw=write \
--name=512Kread --bs=512k --rw=randread \
--name=512Kwrite --bs=512k --rw=randwrite \
--name=4KQD32read --bs=4k --iodepth=32 --rw=randread \
--name=4KQD32write --bs=4k --iodepth=32 --rw=randwrite \
--name=4Kread --bs=4k --rw=randread \
--name=4Kwrite --bs=4k --rw=randwrite
从结果来看,树莓派 4 的性能有巨大提升,在许多测试中都比 3B+ 快出 50%。这可能是树莓派 4 最有用的更新,因为性能的瓶颈几乎都在缓慢的磁盘 I/O 上。
p7zip 基准测试
7-zip 有个自带的基准测试工具,当然 p7zip
(7-zip 的 POSIX 移植)也有。我使用这个工具来测试树莓派的压缩与解压性能。
7zr b -mmt1
7zr b
如此帮助文档所言,压缩更依赖于内存的吞吐量与延迟,这可能是两块树莓派间在压缩测试中差距增大的原因。总之,树莓派 4 在 p7zip 测试中有 1/3 的性能提升。
OpenSSL 速度测试
OpenSSL 是目前最流行的密码学软件库,它也包含了一个内置的速度测试。结果是在所有块大小中最快的那个——在 4 个测试中大小都是 16,384 字节。
openssl speed -evp aes-256-cbc
openssl speed -evp aes-256-gcm
openssl speed -evp sha1
openssl speed -evp sha256
网络速度测试
树莓派 4 将 300 Mbps 以太网升级到了真正的千兆网口,如果你打算用它来当离线下载器或者 NAS 的话,这是极好的。这里我跑了两个测试,看看网络究竟如何。
CURL 文件下载测试
这项测试非常简单:使用 cURL 从局域网机器下载文件,查看速度。
结果不如预想那么好:树莓派 4 没能跑出千兆的速度,而我旁边的 x86 Linux 盒子就做到了。
NGINX 性能测试
另一个常见的场景是:使用 NGINX 提供网页服务(对不起,这里没有 Apache 的位置)。我在两块树莓派上都安装了 NGINX,设置了 access_log off
,并在我的 x86 盒子上使用 Siege 4.0.4 对树莓派服务器进行基准测试。
siege -c 10 -r 1000 [host]
siege -c 25 -r 400 [host]
在 CPU 性能与网络速度的双重提升下,新的树莓派 4 速度接近 3B+ 的两倍。如果你想用树莓派搭个网站的话,这是个好消息。
应用程序性能
我选择了两个我最熟悉的编程语言环境:Python 和 Ruby(我对 Node 不熟)来进行测试。
Python 测试使用了此 Stack Overflow 回答中的那个蠢极了的脚本,运行时间作为结果。
def test():
"""Stupid test function"""
lst = []
for i in range(100):
lst.append(i)
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
Ruby 测试就简单很多:使用 Jekyll 构建我的站点,查看消耗的时间。
Ruby 测试比 Python 测试更加均衡,因为它主要测试的是纯计算性能,结果 Ruby 测试中性能差距就要小一些。
不过等等,这不代表树莓派 4 对大型的 Python 或者 Ruby 项目来说是个好的选择。相同的测试在我的 x86 盒子(i7-8850H, 32 GB DDR4, NVMe SSD)上快了 10 倍,其仅使用 5 秒运行 Python 脚本,4 秒构建我的 Jekyll 站点。毕竟,你不能期望一个只卖 55 美元的板子能够有毁天灭地的性能,不是吗?
USB I/O 性能
我拿出了我的 USB 3.1 SSD(由 LiteOn L9M 512 GB 和一个包含了 VL716 SATA 转 USB 芯片的硬盘盒组装而成)。但是,我一把 SSD 插上树莓派,它就没电了。之后我发现这是因为供电不足(GPIO 针脚无法提供足够的电力),所以一天之后,我从 MicroUSB / Type-C 接口重新供电。这一次,3B+ 很顺利,但是树莓派 4 在测试时再一次因为电力问题出错。最后,我只能同时从 Type-C 和 GPIO 给树莓派供电,以便在不断电的情况下完成 SSD 测试。
这次的供电问题真的很严重,但先不去管它。让我们看看结果。
fio --loops=5 --size=1g --filename=fiotest.tmp --stonewall --ioengine=libaio \
--direct=1 --name=SeqRead --bs=1m --rw=read --name=SeqWrite --bs=1m --rw=write
结果很棒!升级后的 USB 3.0 接口,即使没有跑到最高速,也比前代树莓派高出很多。但在享受高速 USB 之前,再让我强调一次:请特别关注你的 USB 外设,特别是那些有点儿耗电的设备,像机械硬盘和 SSD。如果电力得以保证,利用那两个高速 USB 接口对于 NAS 或者其他存储扩展来说好处多多。
总结
在体验过 3B 到 3B+ 的小小提升后,新的树莓派 4 对于大多数树莓派爱好者来说,都是一场盛宴。价格不变,即使你已经有个 3B+,树莓派 4 也可以说是必买的。尽管在供电和散热上有缺点,如果你不插太多外设,不在树莓派上放太多重型任务的话,也没什么关系。