站点图标 CNX中文站

NanoPi R5S评测(二):Ubuntu 20.04(FriendlyCore)

本文共计7684字,预计阅读15分钟

在对NanoPi R5S进行评测的第一部分,我进行了拆箱、拆解、快速尝试预装了基于OpenWrt的FriendlyWrt,并对2.5GbE接口进行了一些iperf3基准测试,结果有点令人失望。之后我又进一步进行测试,切换到了基于Ubuntu 20.04的FriendlyCore镜像,因为我更熟悉基于 Debian的操作系统,而且某些工具在OpenWrt上也无法运行。注意,现在测试结果显示的性能仍然不是很理想,这就是我称之为预测试的原因,随着越来越多人的使用和调整软件,未来几个月的情况应该会有所改善。

OpenWrt优化?

现在我们先不讨论基于Ubuntu的镜像。因为FriendElec(广州友善电子科技有限公司)告知我他们添加了一些优化,于是我升级了FriendlyWrt的更新版本并对这个镜像进行了测试:

他们是这么说的:“我们对新镜像做了一些优化,比如网卡中断设置卸载支持等等。所以我下载了在Google Drive上找到的“rk3568-eflasher-friendlywrt-20220526.img.gz” ,然后用 USBImager将它烧录到microSD卡上,然后再boot到路由器中。

这样之后,它会自动将镜像烧录到eMMC闪存中,如果你连接了显示器,你就可以按照结果进行操作了。操作完成后,取出microSD卡,再重启路由器。

这样之后,就可以通过连接HDMI显示器(如上所示)或查看设备上的LED来检查状态了。这个过程非常快,安装到eMMC闪存上只需几秒钟。

这个新版本的镜像主要是对40-net-smp-affinity文件进行了更改。在之前预装的 FriendlyWrt中,它看起来是这样的:


而新的40-net-smp-affinity文件确实不同:


Willy Tarreau解释了对eth1接口所做更改的原因:

它涉及RPS 他们在core 2上接收此IRQ中断请求,并将传入流量重新分配到core 0、core 1、core 3中,是正确使用RPS的方法。但是,要达到这一点必须手动分配一个网络性能测试工具iperf第一个饱和的core进行观察。如果首先使用ksoftirqd使core 2饱和,那就要确保iperf在其他3个core中的任何一个上都可运行。如果core2稍微空闲,那么就尝试在其上设置iperf。如果把iperf放在它上面会使ksoftirqd弹出,那么它们会相互阻碍,而且用户会更情愿更改RPS设置来帮助释放另一个core并将其用于iperf。

在测试并切换到Ubuntu之前,其实我没有尝试过这种方法。当我尝试使用新的FriendlyWrt镜像时,得到的结果更糟糕:


因此,这个问题不得不重新审视了。

NanoPi R5S中的M.2 NVMe SSD安装

我不久前购买了APACER AS2280(AP256GAS2280P4-1)PCIe Gen 3.0 x4 SSD,它在正确的硬件上可以实现高达1,800 MB/s的顺序读取速度和高达1,100 MB/s的顺序写入速度。

Apacer M.2 2280 PCIe SSD

安装过程很简单,因为我只需要松开四个螺丝即可卸下底盖,安装SSD,然后用他们提供的螺丝将其固定好。

NanoPi R5S中的M.2 NVMe SSD安装

在NanoPi R5S上安装Ubuntu 20.04 FriendlyCore

我首先尝试使用eflasher镜像安装FriendlyCore。

使用eflasher镜像安装FriendlyCore

操作之后感觉还不错,所以我重新启动了路由器,但后来我注意到TP-Link开关上没有显示 WAN接口链接,只有电源LED亮起了,电源LED亮起对于FriendlyCore/Ubuntu镜像来说是正常的。我再次尝试,通过单击“完成”进入eflasher UI设置,但还是不行。

Eflasher安装FriendlyCore

因此,我下载了“SD”镜像用来帮助直接从microSD卡启动,并从那里运行操作系统。这样做之后,运行还是正常的。不过,如果你们打算将NanoPi R5S用于多种用途而且还期待在Ubuntu 20.04镜像中使用桌面环境,那么可能会感到很失望,因 HDMI输出目前只能用于访问终端。

Ubuntu 20.04 FriendlyElec登录

FriendlyCore系统信息

你们可以在CNX Software Pastebin上找到启动日志。我使用pi/pi凭据(用户名/密码)通过过了SSH登录,并将系统升级到了最新软件包:


现在,我们运行一些命令来获取系统信息:


除了NVMe驱动器没有自动挂载,一切看起来都还不错。现在我们用inxi找到更多细节:


只有eth0 WAN端口打开了,eth1/eth2 2.5GbE端口是关闭的,根本没有显示配置。FriendlyElec方面似乎主要关注FriendlyWrt镜像,他们告诉我还没有在FriendlyCore上实现优化,所以大多数人可能使用的还是FriendlyWrt,因为它更容易配置网络和路由器设置。我看到Apacer AS2280P4 SSD其实被检测到了,但是它没有开箱即被格式化,所以我只能用mkfs.ext4将其格式化。

NanoPi R5S基准测试

现在我们通过在路由器上运行SBC Bench的方式来对CPU进行基准测试,希望尽可能可以发现一些问题:


我几乎在boot后立即启动了它,因此dmesg输出应该是完整的(具体可参考此次评测前面的boot加载),不过脚本中缺少一些信息。sbc-bench.sh脚本的完整输出可以在pastebin上找到,我们看到“1992”MHz广告频率在现实中被测试为1845 MHz,因此我觉得可以在这里进行一些优化。

7zip仍然比NanoPi R2S路由器( 3871 )更快,或者说性能提高了大约23%,而AES-256-CBC 16KB大约快了22% ( 704,872.45 vs 861,334.19kH/s)

NVMe基准测试

我用iozone 3对NVMe SSD进行了3次测试,其中1次是100MB的文件:


然后是一个500MB的文件:


最后是一个1GB的文件:


一系列操作之后,结果在所有三个测试中都或多或少是一致的,没有太大的变化。最后我得到了大约380MB/s的读写速度,这远远低于SSD原本宣传的写入和读取速度,以及ODROID-M1的结果。我想这是不是因为本设计中使用的是PCIe 2.0 x1接口,而不是Hardkernel板中使用的PCIe Gen 3.0 x2接口

下面是lspci的输出,仅供参考:

2.5GbE接口配置和基准测试

NanoPi R5S路由器

由于开箱即用只配置了eth0千兆以太网“WAN”接口,因此我们必须手动配置两个2.5GbE端口。我使用了与“第一部分FriendlyWrt评测”相同的测试平台,即Ubuntu 20.04笔记本电脑。接着,我将Realtek RTL8156BG USB 3.0到2.5GbE加密狗连接到eth1、UP Xtreme i11迷你PC连接到eth2。我并没有像在FriendlyWrt中那样使用桥接接口,而是配置了两个不同的子网:eth1是192.168.2.0、eth2是192.168.3.0。

现在我们在/etc/network/interfaces.d/中创建两个新文件:


现在安装DHCP服务器


使用我们的两个子网编辑/etc/dhcp/dhcpd.conf文件:


在重新启动dhcp服务器之前:


此时,笔记本电脑和迷你PC应该可以从各自子网上的NanoPi R5S获取到它们的IP地址了。现在我们可以开始对接口进行基准测试了。使用连接到笔记本电脑的eth1下载iperf3,然后从R5S的角度接收:


这比我在OpenWrt中得到的1.85 Gbps要慢一些,而且还有部重传内容。在传输过程中,我还使用l sbc-bench.sh监控系统:


该系统在测试期间确实以其在宣传中提到的最大频率运行了,在这里我没有看到任何明显的问题。

我还使用ethtool检查了一些信息和统计信息:


我确实得到了一些rx_mac_missed。现在我们反过来测试一下:


这看起来比OpenWrt(1.12Gbps)要得好得多了。


IRQ百分比要比Rx低得多,但我认为这对于Tx 来说是正常的。我们切换到连接到UP Xtreme i11的eth2:


哦,太好了!这是我第一次得到了2.35 Gbps的传输速度,所以看起来还是有希望的!


除非我弄错了,否者25%的IRQ就意味着一个core可以被充分利用来处理这些了。现在我们试试:


结果是1.59 Gbps,不是很完美,但仍然还是比OpenWrt更好。


CPU再次以全速运行了,而且距离100%的利用率差太多了,所以我觉得问题应该出在其他地方了。现在我们可以再次使用ethtool检查eth2信息和统计信息。



在这儿的测试结果中,我发现有更多的rx_mac_missed。所以我猜想应该会有一些调整来提高性能。但根据之前我对RTL8156B调整设置的经验,调整设置真的很棘手,而且对此有经验的人似乎在具体调整什么设置选项上无法达成一致意见,我主要指的是致力于RTL8156/8125驱动的Realtek工程师,以及读者中的一些网络专家。

在两个2.5GbE接口之间配置NAT

由于2.5GbE接口不能与iperf3达成最佳配合,我就没有费心在FriendlyWrt中测试路由器性能了,但还是有几个人问我。所以接下来我将会展示我如何在Ubuntu 20.04中配置NAT,并且会继续测试NAT性能,记住它肯定会在几周或几个月内得到很大改善。

在这里,我们需要启用IP转发和NAT。我使用的指令改编自一篇networkreverse上的帖子

编辑/etc/sysctl.conf以启用IP转发(取消注释以下行):


应用更改:


现在我们启用NAT:


我们现在可以在192.168.2.0子网的笔记本电脑上ping 192.168.3.0子网上的Xtreme i11了:


如果你们想让更改永久有效,可执行如下:


我在UP Xtreme i11和我的笔记本电脑之间尝试了iperf3,数据通过NanoPi R5S路由器路由。


一个方向的传输速度是768 Mbps,另一方向则是937 Mbps。


如果使用sbc-bench.sh监控显示处理器,其运行频率会是1992 MHz(实际上是1845 MHz),而且25%的IRQ应该就意味着一个core已完全被用于处理IRQ了。

根据mpstat命令显示来看,这应该是由core #0处理的。


上面这一点可以通过使用top和htop来确认。

NanoPi R5S功耗

我刚好有一个壁式功率计,可以用它来检查功耗:

上面的数据是在在该产品上安装了Ubuntu 20.04和NVMe SSD后测试的。

我还在使用OpenWrt且没有SSD的NanoPi R5S上进行了测试:

注意,由于我使用的是壁挂式功率计,因此这个数值将包括电源适配器(Khadas VIM4 USB-C 电源适配器)中的效率损失。而且该值可能高于使用USB-C功率计时的数值。这应该也可以通过设置来优化功耗。

最终结论

今天的测评就到这里了。优化部分其实应该还包括“更改固件使Rockchip内核以1992 MHz 运行”、“调整与PCIe和以太网设置相关的各种设置”等等。其中的大部分目前我还不是很熟悉。

最后,十分感谢FriendlyElec寄送NanoPi R5S迷你路由器给我。这款带有金属外壳的路由器你们可以在FriendlyElec网站上购买,其价格是75美元,或者你也可以只购买开发板本身,其价格是59美元。该路由器全球速卖通的多家网店都可以买到,其中一些卖家甚至还出售4GB RAM版本。这其实有点奇怪,因为FriendlyElec目前只销售配备2GB RAM的型号。

分享这篇文章
退出移动版