K3 Pico ITX 测评之一

我拿到的 K3 Pico ITX 机器带有精致的外壳;但是很不幸地,这一外壳并未暴露串口连接,这也是本评测分为两部分的原因。

本部分评测将基于原装系统(在必要时使用容器)进行。

除了串口之外,外壳亦未暴露 12V 电源输入,所以电源输入和显示输出必须同时通过全功能 Type-C 口进行;对于并未自带电池的设备而言,这也许不是一个好主意,因为任何的 PD 重协商(如多口充电器其他接口的插拔、充电器过热降低输出功率等)都可能导致 PD 供电被短暂切断。

Bianbu 系统评测

使用 Type-C Dock 连接了 PD 电源和 HDMI 采集卡之后,机器自带的 Bianbu 系统(进迭时空定制过的 Ubuntu)将会启动,并启动 Calamares 安装器界面进行初次配置,这一配置方式与其他很多烧录镜像的发行版(如 KDE Neon )相同。

完成初次配置之后,将会进入 LxQt 桌面环境。因为本人对于将本设备作为桌面使用并不感兴趣,在桌面环境下完成的仅有账户密码配置,桌面环境将不会作为本次评测的重点。

Bianbu 系统自带了 GPU 驱动和编解码驱动,但这些驱动的用户空间库文件不像 Debian 系发行版的其他库文件一样安装到了 /usr/lib/riscv64-linux-gnu ,而是被直接丢进了 /usr/lib ,显得茕茕孑立。

在 Bianbu 系统下运行 apt update 时,会弹出 注意: 对‘https://archive.spacemit.com/bianbu4’在 sources.list(5) 一项中缺失了 Signed-By 的警告;而使用 apt 安装包时,如果安装的包带有库文件,在自动执行 ldconfig 时则会出现 ldconfig: /usr/local/lib/libethercat.so.1 is not a symbolic link 的警告 – 作为一个发行版,似乎不应当将文件安装到 /usr/local 下。

个人认为 Bianbu 的系统质量仍有提高空间,建议寻求 Debian Maintainer / Debian Developer 的指导以提高品控标准。

性能评测

作为一名业余的 Linux 发行版维护者,本人对于 K3 的构建性能颇感兴趣,故运行了 AOSC OS 的 Buildbot Benchmark 脚本;为了控制变量,该测试在 AOSC OS 容器中进行,并使用了 GCC 14 编译器。

该脚本构建了 LLVM 18 的核心组件( LLVM 的构建同时考察了并行的编译性能与串行的链接性能,比较能代表 real world 的构建负载行为),共耗时 3663s ;作为参考,同为 8 核的 Mac M1 成绩为 815s ,K3 与此仍有较远距离;但同样为 8 核的双路龙芯 3B4000 需 4911s ,已被 K3 远远超过;同为 RISC-V 架构的 64 核 SG2042 机器的构建时间则为 2013s 。考虑到核数的巨大差距, K3 的 CPU 核心性能在 RISC-V 芯片中已堪称佼佼者,让人期待 V100 服务器芯片的表现。

K3 Pico ITX 在 SBC 中很少见地自带了一个 SFP+ 接口,软件可见该接口由一板载 RTL8127 PCIe 网卡提供。将该接口与我台式机的 Mellanox ConnectX-3 Pro 卡之间使用 DAC 线连接并使用 iperf 测速结果如下:(命令出现的 IP 为台式机 IP ,故无 -R 的是 K3 向台式机发包,带 -R 的相反)

root@k3picoitx:~# iperf3 -c 192.168.1.176
Connecting to host 192.168.1.176, port 5201
[  5] local 192.168.1.214 port 36218 connected to 192.168.1.176 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.08 GBytes  9.25 Gbits/sec    0   1.97 MBytes       
[  5]   1.00-2.00   sec  1.10 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   2.00-3.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   3.00-4.00   sec  1.10 GBytes  9.42 Gbits/sec    0   1.97 MBytes       
[  5]   4.00-5.00   sec  1.09 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   5.00-6.00   sec  1.10 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   6.00-7.00   sec  1.09 GBytes  9.39 Gbits/sec    0   1.97 MBytes       
[  5]   7.00-8.00   sec  1.10 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   8.00-9.00   sec  1.10 GBytes  9.41 Gbits/sec    0   1.97 MBytes       
[  5]   9.00-10.00  sec  1.10 GBytes  9.42 Gbits/sec    0   1.97 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  10.9 GBytes  9.40 Gbits/sec    0            sender
[  5]   0.00-10.00  sec  10.9 GBytes  9.39 Gbits/sec                  receiver

iperf Done.
root@k3picoitx:~# iperf3 -c 192.168.1.176 -R
Connecting to host 192.168.1.176, port 5201
Reverse mode, remote host 192.168.1.176 is sending
[  5] local 192.168.1.214 port 52362 connected to 192.168.1.176 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   630 MBytes  5.28 Gbits/sec                  
[  5]   1.00-2.00   sec   619 MBytes  5.19 Gbits/sec                  
[  5]   2.00-3.00   sec   616 MBytes  5.17 Gbits/sec                  
[  5]   3.00-4.00   sec   614 MBytes  5.15 Gbits/sec                  
[  5]   4.00-5.00   sec   613 MBytes  5.15 Gbits/sec                  
[  5]   5.00-6.00   sec   613 MBytes  5.14 Gbits/sec                  
[  5]   6.00-7.00   sec   613 MBytes  5.14 Gbits/sec                  
[  5]   7.00-8.00   sec   612 MBytes  5.14 Gbits/sec                  
[  5]   8.00-9.00   sec   616 MBytes  5.16 Gbits/sec                  
[  5]   9.00-10.00  sec   615 MBytes  5.16 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  6.02 GBytes  5.17 Gbits/sec    0            sender
[  5]   0.00-10.00  sec  6.02 GBytes  5.17 Gbits/sec                  receiver

iperf Done.

可见该 SFP+ 网口对外发包可以达到满速,但接受包的性能暂未达到 SFP+ 的理论性能。但值得注意的是 RTL8127 网卡的主线驱动据称性能在 x86 机器上亦不是很好,将来的主线化工作中这可能成为一个需要注意的点。

硬件/内核简评

本部分评测基于对原装系统内核 log (使用 dmesg 命令获取)的观察。

首先映入眼帘的是以下警告(似乎在 K1 上已经存在):

[    0.000000] **********************************************************
[    0.000000] **   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **
[    0.000000] **                                                      **
[    0.000000] ** trace_printk() being used. Allocating extra memory.  **
[    0.000000] **                                                      **
[    0.000000] ** This means that this is a DEBUG kernel and it is     **
[    0.000000] ** unsafe for production use.                           **
[    0.000000] **                                                      **
[    0.000000] ** If you see this message and you are not debugging    **
[    0.000000] ** the kernel, report this immediately to your vendor!  **
[    0.000000] **                                                      **
[    0.000000] **   NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE NOTICE   **
[    0.000000] **********************************************************

由内核日志可知部分 SoC 硬件 / 板载硬件的选型:

  • GPU BVNC 为 36.56.104.183 ,与全志 A733 相同(而与同为 BXM-4-64 的 TH1520 不同);V 字段 56 比 TH1520 的 52 更大,似乎标识着这一核心相较 TH1520 的略新。
  • 硬件编解码器与 K1 一样,依然采用了 ARM 中国的 “玲珑” VPU 。
  • 该芯片的固件似乎实现了 RISC-V 的 RPMI 标准,也许是首款实现该标准的芯片。
  • 非常有趣地, K3 Pico ITX 板载的 EC 使用了 ChromeOS EC 驱动 – 考虑到 ChromeOS EC 的源码是开放的,这一点并不奇怪,同时也达成了 ”避免重新造轮子“ 的目的。
  • 与诸多 K1 开发板一样, K3 Pico ITX 带有一片板载 EEPROM ,存储各种板子相关的信息。

由于 K3 Pico ITX 的盒子过于精致,使得本人对于将其拆开具有一定心理压力,故本评测暂时结束与此;待我下定决心拆开盒子访问串口 / M.2 接口之后,将会有下一篇评测包含更多内容。

感谢进迭时空提供的设备。

2 Likes

apt update 时,会弹出 注意: 对‘https://archive.spacemit.com/bianbu4’在 sources.list(5) 一项中缺失了 Signed-By 的警告

这个我问题,我找到原因了哈:

https://gitee.com/bianbu/bianbu-docs/issues/IJN98D#note_49943737

软件源要升级,更新时间戳

这里有几个不符合开源社区惯例、规范的问题:

dpkg -S libethercat.so.1.2.0
linux-firmware-spacemit: /usr/local/lib/libethercat.so.1.2.0

so 文件,放在固件软件包里面,不合适,固件软件包只放固件文件的,

so文件,可以用一个单独的 库文件 deb 包来安装。

操作系统级别的 so文件,确实不应该放在 /usr/local/lib 下,
放在 /usr/lib 或者
/usr/lib/riscv64-linux-gnu 下,建立一个子目录放。

libethercat.so.1 需要是一个符号文件,链接到 libethercat.so.1.2.0, 这个在库文件 deb 包安装时,ldconfig 命令会自动生成。

linux-firmware-spacemit 这个软件包里面的固件文件比较多,如果是已经进入上游的文件,就不要放在这个软件包里面,可以在 bianbu 操作系统里面安装已有的包。

鉴于后续固件文件都有可能进入上游,可以在 deb 包的 control 文件,设置 Replace 字段,保持后续兼容性。

对的,下午已经更新解决了