Обзор SpacemiT K3 Pico-ITX RISC-V Chassis Kit – Часть 2: Что работает, что нет в Bianbu OS 4.0

В прошлом месяце мы получили SpacemiT K3 Pico-ITX Chassis Kit на базе 16-ядерного RISC-V SoC K3 от этой компании и начали обзор с распаковки, разборки и первой загрузки в Bianbu OS 4.0. Поскольку система оснащена гнездом SFP+ для 10-гигабитного Ethernet, нам также пришлось заказать адаптер 10GbE SFP+ на медь, так как всё наше оборудование 10GbE использует только порты RJ45.

В этом обзоре мы проверим системную информацию в Bianbu OS 4.0.1, запустим несколько бенчмарков, протестируем производительность сетей 10GbE, GbE и WiFi 6, воспроизведём видео YouTube в разных разрешениях, выполним задачи ИИ (LLM), проверим, что все/почти все функции работают как ожидается, и измерим энергопотребление мини-ПК SpacemiT K3 «Pico-ITX Chassis Kit». Обзор довольно длинный, поэтому если у вас мало времени, можно сразу перейти к разделу «что работает, что нет» .

SpacemiT K3 Pico-ITX Chassis Kit BianbuOS 4.0 review

Системная информация Bianbu OS 4.0

Перед запуском каких-либо тестов мы обновили систему:

sudo apt update
sudo apt dist-upgrade

Было обновлено 594 пакета. Для справки: обновление также включало обновление прошивки EC (Embedded Controller — встроенный контроллер):

Current EC firmware 'SPACEMIT_DEB1-V00.12' is older than packaged firmware 'SPACEMIT_PICO_ITX-V00.16'.
Starting automatic EC firmware update during package installation...
[INFO] Automatic EC firmware update triggered during package installation.
[INFO] Current RW: SPACEMIT_DEB1-V00.12
[INFO] Target FW : SPACEMIT_PICO_ITX-V00.16
[WARN] Do not remove power, reset the system, or interrupt the tool while flashing.
[INFO] 1. Erasing flash region...
Erasing 262144 bytes at offset 0...
done.
[ OK ] Erase completed.
[INFO] 2. Writing firmware image...
Reading 242688 bytes from /lib/firmware/k3-pico-itx/ec.bin...
Writing to offset 0...
Writing: [########################################] 100%
done.
[ OK ] Write completed.
[INFO] 3. Reading back flash contents for MD5 verification...
Reading 242688 bytes at offset 0...
Reading: [########################################] 100%
done.
[ OK ] MD5 verification passed.
[ OK ] Automatic EC firmware update finished successfully.
[INFO] This reboots the EC firmware only. Linux is not rebooted automatically.
[WARN] The power LED may blink and ectool may be unavailable briefly after the command.
[INFO] Sending EC reboot command...
[ OK ] EC reboot command sent.
[INFO] Waiting 10 seconds for EC reboot to settle...

Проверим системную информацию после перезагрузки:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo inxi -Fc0 	
System:
  Host: CNXSOFT-spacemitk3picoitx Kernel: 6.18.3-generic arch: riscv64 bits: 64
  Console: pty pts/1 Distro: Bianbu 4.0.1 (Resolute Raccoon)	
Machine:
  Type: RISCV System: SpacemiT K3 Pico ITX details: N/A serial: HW3MPK3161280213
CPU:
  Info: 16-core model: Spacemit X100 variant: riscv bits: 64 type: MCP cache: L2: 10 MiB
  Speed (MHz): avg: 2200 min/max: 614/2400:2000 cores: 1: 2200 2: 2200 3: 2200 4: 2200 5: 2200
  6: 2200 7: 2200 8: 2200 9: 2200 10: 2200 11: 2200 12: 2200 13: 2200 14: 2200 15: 2200 16: 2200
Graphics:
  Device-1: saturn-hee driver: spacemit_drm_drv v: N/A
  Device-2: saturn-edp driver: spacemit_drm_drv v: N/A
  Display: server: Xwayland v: 24.1.8 driver: N/A tty: 139x35 resolution: 1920x1080
  API: EGL v: 1.4,1.5 drivers: pvr,swrast platforms: gbm,wayland,surfaceless,device
  API: OpenGL v: 3.3 vendor: mesa v: 24.0.1 note: console (EGL sourced) renderer: softpipe
  Info: Tools: api: eglinfo,glxinfo wl: kanshi,wlr-randr x11: xdriinfo, xdpyinfo, xprop, xrandr
Audio:
  Device-1: simple-audio-card driver: asoc_simple_card
  Device-2: simple-audio-card driver: asoc_simple_card
  Device-3: simple-audio-card driver: N/A
  Device-4: simple-audio-card driver: N/A
  API: ALSA v: k6.18.3-generic status: kernel-api
  Server-1: PipeWire v: 1.6.2 status: active
Network:
  Device-1: Realtek RTL8127 10GbE driver: r8127
  IF: enP2p1s0 state: up speed: 10000 Mbps duplex: full mac: 50:0a:52:0b:82:18
  Device-2: Realtek RTL8852BE PCIe 802.11ax Wireless Network driver: rtw89_8852be
  IF: wlP4p1s0 state: up mac: b0:8c:b3:9a:83:68
  Device-3: k3-gmac driver: dwmac_spacemit_ethqos
  IF: end0 state: down mac: 50:0a:52:0b:e6:64
  Device-4: rfkill-gpio driver: rfkill_gpio
  Device-5: dwmac-5.10a driver: N/A
  IF: end0 state: down mac: 50:0a:52:0b:e6:64
  Device-6: dwmac-5.10a driver: N/A
  IF: enP2p1s0 state: up speed: 10000 Mbps duplex: full mac: 50:0a:52:0b:82:18
  Device-7: dwmac-5.10a driver: N/A
  IF: wlP4p1s0 state: up mac: b0:8c:b3:9a:83:68
Bluetooth:
  Device-1: Realtek Bluetooth Radio driver: btusb type: USB
  Report: hciconfig ID: hci0 state: up address: B0:8C:B3:9A:83:69 bt-v: 5.3
Drives:
  Local Storage: total: 119.27 GiB used: 6.63 GiB (5.6%)
  ID-1: /dev/sda model: TY7B-128 size: 119.27 GiB
Partition:
  ID-1: / size: 116.78 GiB used: 6.57 GiB (5.6%) fs: ext4 dev: /dev/sda3
  ID-2: /boot size: 223.7 MiB used: 58.4 MiB (26.1%) fs: ext4 dev: /dev/sda2
Swap:
  Alert: No swap data was found.
Sensors:
  System Temperatures: cpu: 69.0 C mobo: N/A
  Fan Speeds (rpm): cpu: 3372
Info:
  Memory: total: 16 GiB available: 15.6 GiB used: 1 GiB (6.4%)
  Processes: 326 Uptime: 5m Init: systemd Shell: Sudo inxi: 3.3.40

Система была обновлена до Bianbu 4.0.1 (Resolute Raccoon), что, по-видимому, является стабильным релизом, а не RC, который мы получили в прошлом месяце. Ядро не изменилось (Linux 6.18.3), и несколько пакетов сообщают об обновлённых версиях. Общий объём памяти теперь отображается корректно (16 ГиБ), температура простаивающего процессора всё ещё довольно высока.

Бенчмарки K3 Pico-ITX SBC

Мы уже запускали некоторые бенчмарки без графического интерфейса на удалённой платформе SpacemiT K3 в январе, но давайте запустим их снова с помощью sbc-bench.sh, чтобы увидеть, что изменилось.

sudo ./sbc-bench.sh -r
Starting to examine hardware/software for review purposes...

sbc-bench v0.9.72

Installing needed tools: apt-get -f -qq -y install sysstat lshw links mmc-utils smartmontools stress-ng, p7zip 16.02, tinymembench, ramlat., mhz, cpufetch (can't build cpuminer) Done.
Checking cpufreq OPP. Done.
Executing tinymembench. Done.
Executing RAM latency tester. Done.
Executing OpenSSL benchmark. Done.
Executing 7-zip benchmark. Done.
Throttling test: heating up the device, 5 more minutes to wait. Done.
Checking cpufreq OPP again. Done (15 minutes elapsed).

Results validation:

  * Measured clockspeed not lower than advertised max CPU clockspeed
  * Background activity (%system) OK

# SpacemiT K3 Pico ITX

Tested with sbc-bench v0.9.72 on Fri, 19 Jun 2026 18:15:46 +0700.

### Performance baseline

  * memcpy: 6045.3 MB/s, memchr: 8614.8 MB/s, memset: 17932.7 MB/s
  * 16M latency: 148.9 137.2 146.6 139.9 146.9 137.7 136.9 148.8 
  * 128M latency: 158.5 160.3 158.0 157.5 161.1 155.0 157.7 170.9 
  * 7-zip MIPS (3 consecutive runs): 19597, 19762, 19673 (19680 avg), single-threaded: 2842
  * `aes-256-cbc     292709.35k   695943.19k  1080477.95k  1252038.66k  1311831.38k  1316853.08k`
  * `aes-256-cbc     295223.54k   697550.74k  1080069.46k  1251781.63k  1311413.59k  1316580.01k`

### PCIe and storage devices:

  * Realtek RTL8127 10GbE: Speed 8GT/s, Width x2, driver in use: r8127, 
  * Realtek RTL8852BE PCIe 802.11ax Wireless Network: Speed 2.5GT/s, Width x1, driver in use: rtw89_8852be, 
  * 119.3GB KINGSTON TY7B-128 SPC-4 compliant UFS module: /dev/sda, Driver=ufshcd-spacemit
  * Winbond W25Q64DW SPI NOR flash (7 partitions: d420c000.spi: 8192KB, bootinfo: 128KB, fsbl: 512KB, env: 64KB, esos: 1024KB, opensbi: 384KB, uboot: 6080KB), drivers in use: spi-nor/fsl-quadspi/simple-pm-bus
  * Winbond W25Q64DW SPI NOR flash (6 partitions: bootinfo: 128KB, fsbl: 512KB, env: 64KB, esos: 1024KB, opensbi: 384KB, uboot: 6080KB), drivers in use: spi-nor/fsl-quadspi/simple-pm-bus

### Software versions:

  * Bianbu 4.0.1 (resolute)
  * Compiler: /usr/bin/gcc (Bianbu 15.2.0-16ubuntu1bb3) 15.2.0 / riscv64-linux-gnu
  * OpenSSL 3.5.5, built on 27 Jan 2026 (Library: OpenSSL 3.5.5 27 Jan 2026)    

### Kernel info:

  * `/proc/cmdline: plymouth.prefer-fbcon plymouth.ignore-serial-consoles splash loglevel=8 mtdparts=d420c000.spi:128K@0(bootinfo),512K@128K(fsbl),64K@640K(env),1M@704K(esos),384K@1728K(opensbi),-@2112K(uboot) rootfstype=ext4 root=PARTUUID=db3dc9da-224f-4653-ab0b-9ac054511abe bootfs=PARTUUID=ab9f4fcc-b6ee-46c8-aea1-34b32a3f27c6 boot_mode=nor earlycon=sbi console=ttyS0,115200 random.trust_bootloader=1 unaligned_scalar_speed=fast unaligned_vector_speed=fast`
  * Kernel 6.18.3-generic / CONFIG_HZ=250

All known settings adjusted for performance. Device now ready for benchmarking.
Once finished stop with [ctrl]-[c] to get info about throttling, frequency cap
and too high background activity all potentially invalidating benchmark scores.
All changes with storage and PCIe devices as well as suspicious dmesg contents
will be reported too.

Time        CPU    load %cpu %sys %usr %nice %io %irq   Temp
18:15:55: 2400MHz 14.88  19%   0%  18%   0%   0%   0%      °C

Посмотрим. Пропускная способность памяти memcpy составила 6045.3 МБ/с вместо 5947.7 МБ/с (небольшое улучшение), 19 680 MIPS в 7-zip против 17 530 MIPS (заметно лучше), а AES-256-CBC значительно улучшился: 1 316 580.01k против 869 520.73k, вероятно, благодаря включению некоторых криптоинструкций…

Полный журнал можно посмотреть здесь , а также быстрое сравнение с Rock 5B (RK3588) , Raspberry Pi 5 и более производительной материнской платой Orion O6 Armv9 . SpacemiT K3 заметно быстрее Rockchip RK3588 в многоядерном тесте 7-zip, почти вдвое быстрее Raspberry Pi 5 на штатной частоте, но не дотягивает до уровня 12-ядерной материнской платы CIX P2.

SpacemiT K3 benchmarks vs Rock 5B Raspberry Pi 5 Orion O6

sbc-bench.sh по-прежнему не определяет температуру, и это не будет исправлено , так как Bianbu OS делает это нестандартным способом. Тем не менее, можно вывести несколько датчиков температуры:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sensors
pwmfan-isa-0000
Adapter: ISA adapter
pwm1:             60%  MANUAL CONTROL

thermal_cluster3-virtual-0
Adapter: Virtual device
temp1:        +65.0°C  

thermal_cluster1-virtual-0
Adapter: Virtual device
temp1:        +65.0°C  

thermal_gpu-virtual-0
Adapter: Virtual device
temp1:        +68.0°C  

thermal_top-virtual-0
Adapter: Virtual device
temp1:        +67.0°C  

cros_ec-isa-000c
Adapter: ISA adapter
fan1:        3367 RPM

thermal_cluster2-virtual-0
Adapter: Virtual device
temp1:        +68.0°C  

thermal_cluster0-virtual-0
Adapter: Virtual device
temp1:        +69.0°C  

thermal_vpu-virtual-0
Adapter: Virtual device
temp1:        +65.0°C

Для стресс-теста устройства мы запустили stress-ng на 8 ядрах X100 «Linux»…

jaufranc@CNXSOFT-spacemitk3picoitx:~$ stress-ng --cpu 8
stress-ng: info:  [638194] defaulting to a 1 day run per stressor
stress-ng: info:  [638194] dispatching hogs: 8 cpu

…и на 8 ядрах A100 AI в отдельном терминале:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ echo $ > /proc/set_ai_thread
jaufranc@CNXSOFT-spacemitk3picoitx:~$ stress-ng --cpu 8
stress-ng: info:  [638750] defaulting to a 1 day run per stressor
stress-ng: info:  [638750] dispatching hogs: 8 cpu

Мы видим все шестнадцать ядер под нагрузкой. Ядра 0-7 — X100, ядра 8-15 — A100.

CPU usage K3 SoC 8 CPU core 8 AI cores

Температура под нагрузкой составляет от 80 до 87 °C, а вентилятор процессора вращается на полной скорости или близко к ней (5208 об/мин):

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sensors
pwmfan-isa-0000
Adapter: ISA adapter
pwm1:             96%  MANUAL CONTROL

thermal_cluster3-virtual-0
Adapter: Virtual device
temp1:        +80.0°C  

thermal_cluster1-virtual-0
Adapter: Virtual device
temp1:        +82.0°C  

thermal_gpu-virtual-0
Adapter: Virtual device
temp1:        +83.0°C  

thermal_top-virtual-0
Adapter: Virtual device
temp1:        +81.0°C  

cros_ec-isa-000c
Adapter: ISA adapter
fan1:        5208 RPM

thermal_cluster2-virtual-0
Adapter: Virtual device
temp1:        +82.0°C  

thermal_cluster0-virtual-0
Adapter: Virtual device
temp1:        +87.0°C  

thermal_vpu-virtual-0
Adapter: Virtual device
temp1:        +80.0°C

Обратите внимание: тест проводился в помещении с температурой около 31 °C.

Теперь протестируем GPU с помощью glmark2-es2-wayland; хорошая новость в том, что аппаратное ускорение 3D включено.

BIanbu OS 4.0.1 glmark2-es2-wayland

jaufranc@CNXSOFT-spacemitk3picoitx:~$ glmark2-es2-wayland 
=======================================================
    glmark2 2023.01
=======================================================
    OpenGL Information
    GL_VENDOR:      Imagination Technologies
    GL_RENDERER:    PowerVR B-Series BXM-4-64
    GL_VERSION:     OpenGL ES 3.2 build 24.2@6603887
    Surface Config: buf=32 r=8 g=8 b=8 a=8 depth=24 stencil=0 samples=0
    Surface Size:   800x600 windowed
=======================================================
[build] use-vbo=false: FPS: 510 FrameTime: 1.961 ms
[build] use-vbo=true: FPS: 2300 FrameTime: 0.435 ms
[texture] texture-filter=nearest: FPS: 2485 FrameTime: 0.402 ms
[texture] texture-filter=linear: FPS: 1900 FrameTime: 0.526 ms
[texture] texture-filter=mipmap: FPS: 1854 FrameTime: 0.539 ms
[shading] shading=gouraud: FPS: 1118 FrameTime: 0.895 ms
[shading] shading=blinn-phong-inf: FPS: 1098 FrameTime: 0.911 ms
[shading] shading=phong: FPS: 958 FrameTime: 1.045 ms
[shading] shading=cel: FPS: 899 FrameTime: 1.114 ms               
[bump] bump-render=high-poly: FPS: 422 FrameTime: 2.375 ms          
[bump] bump-render=normals: FPS: 2053 FrameTime: 0.487 ms            
[bump] bump-render=height: FPS: 1810 FrameTime: 0.553 ms                
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 784 FrameTime: 1.276 ms      
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 270 FrameTime: 3.716 ms
[pulsar] light=false:quads=5:texture=false: FPS: 2428 FrameTime: 0.412 ms   
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 274 FrameTime: 3.650 ms
[desktop] effect=shadow:windows=4: FPS: 1142 FrameTime: 0.876 ms              
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 246 FrameTime: 4.067 ms                                                      
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 249 FrameTime: 4.019 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 350 FrameTime: 2.857 ms
[ideas] speed=duration: FPS: 1472 FrameTime: 0.680 ms
[jellyfish] <default>: FPS: 524 FrameTime: 1.908 ms
[terrain] <default>: FPS: 32 FrameTime: 31.401 ms
[shadow] <default>: FPS: 509 FrameTime: 1.965 ms
[refract] <default>: FPS: 66 FrameTime: 15.292 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 2478 FrameTime: 0.404 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 999 FrameTime: 1.001 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 2436 FrameTime: 0.411 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1460 FrameTime: 0.685 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 765 FrameTime: 1.308 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1441 FrameTime: 0.694 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1440 FrameTime: 0.694 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1329 FrameTime: 0.752 ms
=======================================================
                                  glmark2 Score: 1153 
=======================================================

1 153 балла в glmark2-es2-wayland против 2036 баллов у Raspberry Pi 5 и 4000–4500+ баллов у платформ на Rockchip RK3588 . Производительность GPU может сильно варьироваться в зависимости от используемого драйвера, так что здесь можно извлечь больше производительности.

Затем мы запустили тест производительности Speedometer 2.0 в Chromium для оценки производительности веб-сёрфинга (одноядерной): 39.4 прогона в минуту. Pi 5 показывает 63.4 прогона в минуту. Этот тест может сильно варьироваться в зависимости от оптимизаций; для справки: два устройства на RK3588 получили совершенно разные оценки: NanoPi R6 — 17.2 об/мин, а Khadas Edge 2 Pro — 80.7 об/мин , оба в Chromium.

SpacemiT K3 Speedometer 2.0 Chromium RISC V

Мы также повторили тест с новым бенчмарком Speedometer 3.1, чтобы получить точку отсчёта для будущих обзоров.

SpacemiT K3 Speedometer 3.1 Chromium RISC V

Ускорение 3D-графики также работает в браузере Chromium. Демонстрация WebGL Aquarium отображалась с частотой 60 кадров/с для 500 рыб и всё ещё выдавала 25 кадров/с для 5000 рыб.

SpacemiT K3 Pico-ITX Chromium WebGL Aquarium

Заход в chrome://gpu подтверждает, что WebGL и OpenGL включены. Там же видно «Video Decode: Hardware accelerated» (Аппаратное ускорение декодирования видео), поэтому давайте попробуем YouTube.

Chromium RISC-V GPU WebGL Video Decode

Воспроизведение видео YouTube до 4K 60 FPS

Поскольку у нас не всегда был лучший опыт воспроизведения видео YouTube на платформах RISC-V (и Arm), мы нашли видео 4K 60 FPS и начали с 720p60.

SpacemiT K3 720p60 YouTube Video playback

В начале было пропущено лишь несколько кадров, но после этого видео воспроизводилось отлично. Те же результаты на 1080p60. Выглядит многообещающе.

SpacemiT K3 1080p60 YouTube Video playback

Пользовательский опыт по-прежнему отличный на 1440p60 (2560×1440 @ 60 FPS) — лишь несколько пропущенных кадров в начале.

SpacemiT K3 1440p60 YouTube Video playback

Потоковое видео 4K60 FPS было почти идеальным, за исключением двух микро-замираний, которые привели к 38 пропущенным кадрам из 16 183 при воспроизведении видео чуть более 4 минут.

SpacemiT K3 4K YouTube Video playback

Таким образом, наш опыт оказался лучше, чем ожидалось, хотя и не идеальным из-за двух очень коротких замираний (несколько сотен миллисекунд) при разрешении 4K. Обратите внимание, что видео использует видеокодек VP9, а аппаратное декодирование AV1 не поддерживается VPU K3.

Производительность накопителей и USB

Мы начали тестирование накопителей со встроенной UFS-памяти объёмом 128 ГБ:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
	Iozone: Performance Test of File I/O
	        Version $Revision: 3.508 $
		Compiled for 64 bit mode.
		Build: linux 

	Output is in kBytes/sec
                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
         1024000       4     71647    101315     35357     35982     36039    102591                                                                
         1024000      16    163261    163907    270028    271170    103802    152887                                                                
         1024000     512    167441    168344    799935    804112    471137    167148                                                                
         1024000    1024    167797    167693    779113    783363    491170    167492                                                                
         1024000   16384    168790    168927    853808    838850    799633    169225                                                                

iozone test complete.

UFS — значительное улучшение по сравнению с системами на eMMC: скорость чтения 853 МБ/с, записи 168 МБ/с и достойная производительность случайного ввода-вывода.

K3 Pico-ITX SBC оснащён разъёмом M.2 Key-M, поэтому мы также установили SSD 128GB MakerDisk M.2 NVMe (PCIe Gen3 x4) 2280 с заявленной скоростью до 1800 МБ/с чтения и 560 МБ/с записи.

SpacemiT K3 Pico-ITX Chassis Kit M.2 NVMe SSD installation

После запуска платы мы заметили, что не можем смонтировать накопитель:

aufranc@CNXSOFT-spacemitk3picoitx:~$ sudo dmesg | grep nvme | more
[    2.655887] nvme nvme0: pci function 0000:01:00.0
[    2.655898] nvme 0000:01:00.0: enabling device (0000 -> 0002)
[    3.309803] nvme nvme0: allocated 128 MiB host memory buffer (32 segments).
[    3.332363] nvme nvme0: 8/0/0 default/read/poll queues
[    3.350698]  nvme0n1: p1 p2
[   10.793094] nvme nvme0: using unchecked data buffer
[  472.935127] nvme nvme0: controller is down; will reset: CSTS=0xffffffff, PCI_STATUS=0x10
[  472.935134] nvme nvme0: Does your device have a faulty power saving mode enabled?
[  472.935138] nvme nvme0: Try "nvme_core.default_ps_max_latency_us=0 pcie_aspm=off pcie_port_pm=off"
 and report a bug
[  473.095509] nvme 0000:01:00.0: Unable to change power state from D3cold to D0, device inaccessible
[  473.134845] nvme nvme0: Disabling device after reset failure: -19
[  473.154268] FAT-fs (nvme0n1p1): unable to read boot sector
[  475.435467] Buffer I/O error on dev nvme0n1p1, logical block 0, async page read
[  475.447004] Buffer I/O error on dev nvme0n1p1, logical block 0, async page read
[  475.460892] nvme nvme0: Identify namespace failed (-5)
[  475.463308] Buffer I/O error on dev nvme0n1p2, logical block 0, async page read
[  475.475055] Buffer I/O error on dev nvme0n1p2, logical block 0, async page read
[ 3014.228866] UDF-fs: error (device nvme0n1p2): udf_read_tagged: read failed, block=256, location=25
6
[ 3014.235309] UDF-fs: error (device nvme0n1p2): udf_read_tagged: read failed, block=247863295, locat
ion=247863295

Журнал ядра сообщает о необходимости изменить некоторые параметры, связанные с ASPM и задержкой NVMe. В итоге мы нашли /boot/env_k3.txt и добавили рекомендованные аргументы:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ cat  /boot/env_k3.txt 
knl_name=vmlinuz-6.18.3-generic
ramdisk_name=initrd.img-6.18.3-generic
dtb_dir=spacemit/6.18.3-generic
ramdisk_addr=0x130000000
loglevel=8
commonargs=setenv bootargs plymouth.prefer-fbcon plymouth.ignore-serial-consoles splash nvme_core.default_ps_max_latency_us=0 pcie_aspm=off pcie_port_pm=off

После перезагрузки стало ещё хуже:

aufranc@CNXSOFT-spacemitk3picoitx:~$ sudo dmesg | grep nvme
[    4.166838] nvme 0000:01:00.0: of_irq_parse_pci: failed with rc=134

Однако после полного отключения питания (выключение устройства на минуту и более) мы смогли смонтировать накопитель:

jaufranc@CNXSOFT-spacemitk3picoitx:/media/nvme0n1p2$ mount | grep nvme
/dev/nvme0n1p2 on /media/nvme0n1p2 type ext4 (rw,nosuid,nodev,noexec,relatime,errors=remount-ro,shutdown,user)

Тем не менее, запуск iozone привёл к ошибке ввода/вывода:

jaufranc@CNXSOFT-spacemitk3picoitx:/media/nvme0n1p2$ sudo  iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
         1024000       4    106870    193053     55646     12548
Error reading block at 638320640
read: Input/output error

Мы внесли ещё несколько изменений в commonargs:

commonargs=setenv bootargs plymouth.prefer-fbcon plymouth.ignore-serial-consoles splash nvme_core.default_ps_max_latency_us=0 pcie_aspm=off pci=noacpi

При первом запуске было так же, как выше; после ещё одной перезагрузки мы решили запустить тест с меньшим файлом размером 10 МБ:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo  iozone -e -I -a -s 10M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2

                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
           10240       4     72422    104558     35662     35619     35611    101492                                                                
           10240      16    165781    161191    202659    201316     88049    159454                                                                
           10240     512    165586    157805    470110    393846    321708    161455                                                                
           10240    1024    134971    171736    605805    613428    595457    167325                                                                

iozone test complete.
jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo  iozone -e -I -a -s 10M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
           10240       4     73293    104478     35051     35631     35777    103374                                                                
           10240      16    156519    160698    170396    178936     92194    138772                                                                
           10240     512    172454    164645    523012    608543    461324    168562                                                                
           10240    1024    168715    159182    715782    738070    698973    161496                                                                

iozone test complete.

Тест прошёл успешно, затем мы увеличили размер до 100 МБ:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo  iozone -e -I -a -s 100M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2

                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
          102400       4     73750    106638     35932     36294     36546    109479                                                                
          102400      16    163970    160998    261955    260986    103848    163731                                                                
          102400     512    166443    165016    748515    775123    465598    167486                                                                
          102400    1024    165882    168132    734186    765093    471246    169355                                                                
          102400   16384    167272    166704    750830    755847    733250    165496                                                                

iozone test complete.

и попробовали снова с файлом 1 ГБ — на этот раз всё сработало:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo  iozone -e -I -a -s 1000M -r 4k -r 16k -r 512k -r 1024k -r 16384k -i 0 -i 1 -i 2
                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
         1024000       4     74424    112123     36619     36644     36598    109991                                                                
         1024000      16    161008    164771    257409    257743    103015    152768                                                                
         1024000     512    168354    168426    809578    801678    481449    166173                                                                
         1024000    1024    168565    168129    847675    849113    612307    168045                                                                
         1024000   16384    167918    168174    855184    850107    772171    167669                                                                

iozone test complete.

Последовательное чтение около 855 МБ/с и запись 167 МБ/с значительно ниже ожиданий — примерно соответствует подключению PCIe Gen3 x1.

Однако мы отчётливо видим, что для контроллера NVMe используется соединение PCIe Gen3 x4:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo lspci -vvv -s 0000:01:00.0
0000:01:00.0 Non-Volatile memory controller: Phison Electronics Corporation PS5013-E13 PCIe3 NVMe Controller (DRAM-less) (rev 01) (prog-if 02 [NVM Express])
	Subsystem: Phison Electronics Corporation PS5013-E13 PCIe3 NVMe Controller (DRAM-less)
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 0
	Region 0: Memory at 1100200000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [80] Express (v2) Endpoint, IntMsgNum 0
		DevCap:	MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 unlimited
			ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 0W TEE-IO-
		DevCtl:	CorrErr- NonFatalErr- FatalErr- UnsupReq-
			RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ FLReset-
			MaxPayload 128 bytes, MaxReadReq 512 bytes
		DevSta:	CorrErr- NonFatalErr- FatalErr- UnsupReq- AuxPwr- TransPend-
		LnkCap:	Port #1, Speed 8GT/s, Width x4, ASPM L1, Exit Latency L1 unlimited
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+
		LnkCtl:	ASPM Disabled; RCB 64 bytes, LnkDisable- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- FltModeDis-
		LnkSta:	Speed 8GT/s, Width x4
			TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
		DevCap2: Completion Timeout: Range ABCD, TimeoutDis+ NROPrPrP- LTR+
			 10BitTagComp- 10BitTagReq- OBFF Not Supported, ExtFmt+ EETLPPrefix-
			 EmergencyPowerReduction Not Supported, EmergencyPowerReductionInit-
			 FRS- TPHComp- ExtTPHComp-
			 AtomicOpsCap: 32bit- 64bit- 128bitCAS-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-
			 AtomicOpsCtl: ReqEn-
			 IDOReq- IDOCompl- LTR+ EmergencyPowerReductionReq-
			 10BitTagReq- OBFF Disabled, EETLPPrefixBlk-
		LnkCap2: Supported Link Speeds: 2.5-8GT/s, Crosslink- Retimer- 2Retimers- DRS-
		LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
			 Compliance Preset/De-emphasis: -6dB de-emphasis, 0dB preshoot
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+ EqualizationPhase1+
			 EqualizationPhase2+ EqualizationPhase3+ LinkEqualizationRequest-
			 Retimer- 2Retimers- CrosslinkRes: unsupported, FltMode-
	Capabilities: [d0] MSI-X: Enable+ Count=9 Masked-
		Vector table: BAR=0 offset=00002000
		PBA: BAR=0 offset=00003000
	Capabilities: [e0] MSI: Enable- Count=1/8 Maskable+ 64bit+
		Address: 0000000000000000  Data: 0000
		Masking: 00000000  Pending: 00000000
	Capabilities: [f8] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [100 v1] Latency Tolerance Reporting
		Max snoop latency: 0ns
		Max no snoop latency: 0ns
	Capabilities: [110 v1] L1 PM Substates
		L1SubCap: PCI-PM_L1.2+ PCI-PM_L1.1+ ASPM_L1.2+ ASPM_L1.1+ L1_PM_Substates+
			  PortCommonModeRestoreTime=10us PortTPowerOnTime=220us
		L1SubCtl1: PCI-PM_L1.2- PCI-PM_L1.1- ASPM_L1.2- ASPM_L1.1-
			   T_CommonMode=0us LTR1.2_Threshold=0ns
		L1SubCtl2: T_PwrOn=10us
	Capabilities: [200 v2] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
			ECRC- UnsupReq- ACSViol- UncorrIntErr- BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
			PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
			ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
			PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP+
			ECRC- UnsupReq- ACSViol- UncorrIntErr+ BlockedTLP- AtomicOpBlocked- TLPBlockedErr-
			PoisonTLPBlocked- DMWrReqBlocked- IDECheck- MisIDETLP- PCRC_CHECK- TLPXlatBlocked-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr- CorrIntErr- HeaderOF-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- AdvNonFatalErr+ CorrIntErr+ HeaderOF-
		AERCap:	First Error Pointer: 00, ECRCGenCap- ECRCGenEn- ECRCChkCap+ ECRCChkEn-
			MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap-
		HeaderLog: 00000000 00000000 00000000 00000000
	Capabilities: [300 v1] Secondary PCI Express
		LnkCtl3: LnkEquIntrruptEn- PerformEqu-
		LaneErrStat: 0
	Kernel driver in use: nvme
	Kernel modules: nvme

Непонятно, почему производительность не выше, хотя некоторые подсказки могут быть в журнале для этого накопителя: один из датчиков температуры показывает 83 °C:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ sudo nvme smart-log /dev/nvme0
Smart Log for NVME device:nvme0 namespace-id:ffffffff
critical_warning			: 0
temperature				: 60 °C (333 K, 140 °F)
available_spare				: 100%
available_spare_threshold		: 5%
percentage_used				: 0%
endurance group critical warning summary: 0
Data Units Read				: 125889 (64.46 GB)
Data Units Written			: 195403 (100.05 GB)
host_read_commands			: 3401486
host_write_commands			: 4298621
controller_busy_time			: 28
power_cycles				: 27
power_on_hours				: 333
unsafe_shutdowns			: 5
media_errors				: 0
num_err_log_entries			: 0
Warning Temperature Time		: 0
Critical Composite Temperature Time	: 0
Temperature Sensor 1			: 83 °C (356 K, 181 °F)
Thermal Management T1 Trans Count	: 4
Thermal Management T2 Trans Count	: 1
Thermal Management T1 Total Time	: 1684
Thermal Management T2 Total Time	: 16

«Critical Composite Temperature Time» (Время критической составной температуры) равно нулю, поэтому неясно, поможет ли здесь радиатор для SSD.

Пора протестировать шесть портов USB с помощью lsusb и iozone, как показано на примере порта USB-C OTG ниже.

jaufranc@CNXSOFT-spacemitk3picoitx:/media/sdb3$ lsusb -t | grep uas
    |__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=uas, 5000M
jaufranc@CNXSOFT-spacemitk3picoitx:/media/sdb3$ sudo iozone -e -I -a -s 1000M -r 16384k -i 0 -i 1
                                                                    random    random      bkwd     record     stride                                        
              kB  reclen    write    rewrite      read    reread      read     write      read    rewrite       read    fwrite  frewrite     fread   freread
         1024000   16384    358556    360290    352518    351911

352 МБ/с — это низкий показатель, так как обычно ожидается около 420 МБ/с для порта USB 5 Гбит/с.

Сводка по шести портам USB (с верхнего левого по правый):

  • USB 2.0 #1 – 480 Мбит/с – скорость чтения ~35 МБ/с
  • USB 2.0 #1 – 480 Мбит/с – скорость чтения ~35 МБ/с
  • USB 2.0 #1 – 480 Мбит/с – скорость чтения ~35 МБ/с
  • USB 2.0 #1 – 480 Мбит/с – скорость чтения ~35 МБ/с
  • USB 3.2 Type-C #1 – 5000 Мбит/с – скорость чтения ~352 МБ/с
  • USB 3.2 Type-C #2
    • Корпус ORICO NVMe – Накопитель не обнаружен; Примечание: подключён через порт USB 3.2 Type-A на док-станции UGREEN, используемой для питания и вывода видео HDMI
    • Жёсткий диск Seagate USB 3.0 – 5000 Мбит/с – подключён через док-станцию UGREEN. Скорость не тестировалась, так как жёсткий диск был бы узким местом…

Все порты работают, но с более низкой скоростью, чем ожидалось. Порт USB-C, используемый для питания и режима DP Alt, похоже, имеет проблемы с распознаванием одного из накопителей. Неясно, связано ли это с самим портом USB-C или с проблемой совместимости с док-станцией UGREEN.

10GbE, GbE, WiFi и Bluetooth

10GbE Ethernet — одна из ключевых особенностей материнской платы K1 Pico-ITX, но она оснащена гнездом SFP+, поэтому для тестового стенда понадобился адаптер 10GbE RJ45. Самым дешёвым из найденных, удовлетворяющим нашим требованиям (10 Гбит/с Ethernet), оказался Xicom XC-SPF+-T30, продающийся примерно за $18 на AliExpress . Один небольшой недостаток, который для нас не имеет значения: он поддерживает только 2.5GbE, 5GbE или 10GbE, но не гигабитный Ethernet и более низкие скорости.

XICOM XC-SFP+-T30 10GbE 5GbE 2.5GbE Copper adapter10GbE RJ45 SFP+ adapter

Установка проще некуда: вставляем адаптер в гнездо SFP+ до щелчка. Чтобы извлечь, поднимите золотую скобу.

K3 Pico-ITX Chassis Kit 10GbE SFP+ RJ45 adapter installation

Сначала мы подключили его к коммутатору 2.5GbE, чтобы проверить, действительно ли поддерживается Ethernet 2.5G. С другой стороны использовался мини-ПК UP Xtreme i11 Edge . Для тестирования применялся iperf3.

  • Загрузка (Download)
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 -R
Connecting to host 192.168.31.12, port 5201
Reverse mode, remote host 192.168.31.12 is sending
[  5] local 192.168.31.38 port 50550 connected to 192.168.31.12 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5]  10.00-20.00  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5]  20.00-30.00  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5]  30.00-40.00  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5]  40.00-50.00  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5]  50.00-60.00  sec  2.74 GBytes  2.35 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.00  sec  16.4 GBytes  2.35 Gbits/sec    0            sender
[  5]   0.00-60.00  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

  • Отдача (Upload)
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10
Connecting to host 192.168.31.12, port 5201
[  5] local 192.168.31.38 port 59464 connected to 192.168.31.12 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.01  sec  2.48 GBytes  2.13 Gbits/sec  11302    102 KBytes       
[  5]  10.01-20.01  sec  2.49 GBytes  2.14 Gbits/sec  11575    103 KBytes       
[  5]  20.01-30.01  sec  2.51 GBytes  2.16 Gbits/sec  11635   87.7 KBytes       
[  5]  30.01-40.01  sec  2.51 GBytes  2.16 Gbits/sec  12529   99.0 KBytes       
[  5]  40.01-50.01  sec  2.50 GBytes  2.15 Gbits/sec  13010   73.5 KBytes       
[  5]  50.01-60.01  sec  2.51 GBytes  2.15 Gbits/sec  12443   70.7 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.01  sec  15.0 GBytes  2.15 Gbits/sec  72494            sender
[  5]   0.00-60.01  sec  15.0 GBytes  2.15 Gbits/sec                  receiver

iperf Done.

  • Полный дуплекс (двунаправленный)
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 --bidir
Connecting to host 192.168.31.12, port 5201
[  5] local 192.168.31.38 port 60250 connected to 192.168.31.12 port 5201
[  7] local 192.168.31.38 port 60266 connected to 192.168.31.12 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-10.01  sec  2.52 GBytes  2.17 Gbits/sec  15084    100 KBytes       
[  7][RX-C]   0.00-10.01  sec  2.74 GBytes  2.35 Gbits/sec                  
[  5][TX-C]  10.01-20.00  sec  2.53 GBytes  2.17 Gbits/sec  14617    107 KBytes       
[  7][RX-C]  10.01-20.00  sec  2.73 GBytes  2.35 Gbits/sec                  
[  5][TX-C]  20.00-30.01  sec  2.52 GBytes  2.16 Gbits/sec  15252   77.8 KBytes       
[  7][RX-C]  20.00-30.01  sec  2.73 GBytes  2.35 Gbits/sec                  
[  5][TX-C]  30.01-40.01  sec  2.53 GBytes  2.17 Gbits/sec  15141    103 KBytes       
[  7][RX-C]  30.01-40.01  sec  2.73 GBytes  2.35 Gbits/sec                  
[  5][TX-C]  40.01-50.00  sec  2.51 GBytes  2.16 Gbits/sec  14892    102 KBytes       
[  7][RX-C]  40.01-50.00  sec  2.73 GBytes  2.35 Gbits/sec                  
[  5][TX-C]  50.00-60.01  sec  2.52 GBytes  2.16 Gbits/sec  15451    107 KBytes       
[  7][RX-C]  50.00-60.01  sec  2.74 GBytes  2.35 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.01  sec  15.1 GBytes  2.16 Gbits/sec  90437            sender
[  5][TX-C]   0.00-60.01  sec  15.1 GBytes  2.16 Gbits/sec                  receiver
[  7][RX-C]   0.00-60.01  sec  16.4 GBytes  2.35 Gbits/sec    0            sender
[  7][RX-C]   0.00-60.01  sec  16.4 GBytes  2.35 Gbits/sec                  receiver

iperf Done.

2.35 Гбит/с загрузка и 2.16 Гбит/с отдача — довольно хорошо, хотя отдача неидеальна.

Теперь проведём тот же тест, но с сетью 10GbE, используя  мини-ПК iKOOLCORE R2 Max под управлением OpenWrt с другой стороны.

SpacemiT K3 10GbE SFP+ cage connected to iKOOLCORE R2 Max mini PC

  • Загрузка (Download)
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.4.1 -i 10 -R
Connecting to host 192.168.4.1, port 5201
Reverse mode, remote host 192.168.4.1 is sending
[  5] local 192.168.4.133 port 41232 connected to 192.168.4.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec  5.96 GBytes  5.11 Gbits/sec                  
[  5]  10.01-20.01  sec  5.93 GBytes  5.10 Gbits/sec                  
[  5]  20.01-30.01  sec  5.95 GBytes  5.11 Gbits/sec                  
[  5]  30.01-40.01  sec  5.94 GBytes  5.10 Gbits/sec                  
[  5]  40.01-50.01  sec  5.99 GBytes  5.14 Gbits/sec                  
[  5]  50.01-60.01  sec  5.94 GBytes  5.11 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-59.99  sec  35.7 GBytes  5.11 Gbits/sec  48137            sender
[  5]   0.00-60.01  sec  35.7 GBytes  5.11 Gbits/sec                  receiver

iperf Done.

  • Отдача (Upload)
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.4.1 -i 10 
Connecting to host 192.168.4.1, port 5201
[  5] local 192.168.4.133 port 60148 connected to 192.168.4.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec  11.0 GBytes  9.40 Gbits/sec    0   2.22 MBytes       
[  5]  10.00-20.00  sec  11.0 GBytes  9.41 Gbits/sec    0   2.22 MBytes       
[  5]  20.00-30.01  sec  11.0 GBytes  9.41 Gbits/sec    0   2.22 MBytes       
[  5]  30.01-40.01  sec  11.0 GBytes  9.41 Gbits/sec    0   2.22 MBytes       
[  5]  40.01-50.01  sec  11.0 GBytes  9.41 Gbits/sec    0   2.22 MBytes       
[  5]  50.01-60.01  sec  11.0 GBytes  9.41 Gbits/sec    0   2.22 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.01  sec  65.7 GBytes  9.41 Gbits/sec    0            sender
[  5]   0.00-59.99  sec  65.7 GBytes  9.41 Gbits/sec                  receiver

iperf Done.

Отдача в порядке, а вот загрузка — не очень. При повторном тесте отдачи результаты каждый раз около 5.xx Гбит/с. На случай, если передача ограничена CPU, запустим iperf3 в параллельном режиме:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.4.1 -P 2 -i 10 -R 
Connecting to host 192.168.4.1, port 5201
Reverse mode, remote host 192.168.4.1 is sending
[  5] local 192.168.4.133 port 40002 connected to 192.168.4.1 port 5201
[  7] local 192.168.4.133 port 40010 connected to 192.168.4.1 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.00  sec  5.40 GBytes  4.64 Gbits/sec                  
[  7]   0.00-10.00  sec  5.38 GBytes  4.62 Gbits/sec                  
[SUM]   0.00-10.00  sec  10.8 GBytes  9.26 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  10.00-20.00  sec  5.53 GBytes  4.75 Gbits/sec                  
[  7]  10.00-20.00  sec  5.39 GBytes  4.63 Gbits/sec                  
[SUM]  10.00-20.00  sec  10.9 GBytes  9.38 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  20.00-30.00  sec  5.51 GBytes  4.73 Gbits/sec                  
[  7]  20.00-30.00  sec  5.37 GBytes  4.61 Gbits/sec                  
[SUM]  20.00-30.00  sec  10.9 GBytes  9.34 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  30.00-40.01  sec  5.51 GBytes  4.73 Gbits/sec                  
[  7]  30.00-40.01  sec  5.42 GBytes  4.66 Gbits/sec                  
[SUM]  30.00-40.01  sec  10.9 GBytes  9.39 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  40.01-50.01  sec  5.51 GBytes  4.74 Gbits/sec                  
[  7]  40.01-50.01  sec  5.42 GBytes  4.65 Gbits/sec                  
[SUM]  40.01-50.01  sec  10.9 GBytes  9.39 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[  5]  50.01-60.01  sec  5.52 GBytes  4.74 Gbits/sec                  
[  7]  50.01-60.01  sec  5.41 GBytes  4.65 Gbits/sec                  
[SUM]  50.01-60.01  sec  10.9 GBytes  9.39 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-59.99  sec  33.0 GBytes  4.72 Gbits/sec  24453            sender
[  5]   0.00-60.01  sec  33.0 GBytes  4.72 Gbits/sec                  receiver
[  7]   0.00-59.99  sec  32.4 GBytes  4.64 Gbits/sec  22138            sender
[  7]   0.00-60.01  sec  32.4 GBytes  4.64 Gbits/sec                  receiver
[SUM]   0.00-59.99  sec  65.4 GBytes  9.36 Gbits/sec  46591             sender
[SUM]   0.00-60.01  sec  65.4 GBytes  9.36 Gbits/sec                  receiver

iperf Done.

9.36 Гбит/с — отлично. Проверим полный дуплекс с тремя параллельными потоками, чтобы увидеть, может ли система обрабатывать двунаправленный 10GbE Ethernet на полной скорости:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.4.1 -P 3 -i 10 --bidir
Connecting to host 192.168.4.1, port 5201
[  5] local 192.168.4.133 port 47538 connected to 192.168.4.1 port 5201
[  7] local 192.168.4.133 port 47552 connected to 192.168.4.1 port 5201
[  9] local 192.168.4.133 port 47562 connected to 192.168.4.1 port 5201
[ 11] local 192.168.4.133 port 47570 connected to 192.168.4.1 port 5201
[ 13] local 192.168.4.133 port 47574 connected to 192.168.4.1 port 5201
[ 15] local 192.168.4.133 port 47590 connected to 192.168.4.1 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-10.01  sec  2.66 GBytes  2.28 Gbits/sec    0   2.30 MBytes       
[  7][TX-C]   0.00-10.01  sec  5.61 GBytes  4.82 Gbits/sec    0   3.64 MBytes       
[  9][TX-C]   0.00-10.01  sec  2.68 GBytes  2.30 Gbits/sec    0   2.46 MBytes       
[SUM][TX-C]   0.00-10.01  sec  10.9 GBytes  9.40 Gbits/sec    0             
[ 11][RX-C]   0.00-10.01  sec  4.08 GBytes  3.51 Gbits/sec                  
[ 13][RX-C]   0.00-10.01  sec  4.14 GBytes  3.55 Gbits/sec                  
[ 15][RX-C]   0.00-10.01  sec  2.47 GBytes  2.12 Gbits/sec                  
[SUM][RX-C]   0.00-10.01  sec  10.7 GBytes  9.18 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -

...

- - - - - - - - - - - - - - - - - - - - - - - - -
[  5][TX-C]  50.01-60.01  sec  2.67 GBytes  2.30 Gbits/sec    0   4.19 MBytes       
[  7][TX-C]  50.01-60.01  sec  5.60 GBytes  4.81 Gbits/sec    0   3.64 MBytes       
[  9][TX-C]  50.01-60.01  sec  2.67 GBytes  2.29 Gbits/sec    0   4.31 MBytes       
[SUM][TX-C]  50.01-60.01  sec  10.9 GBytes  9.40 Gbits/sec    0             
[ 11][RX-C]  50.01-60.01  sec  4.11 GBytes  3.53 Gbits/sec                  
[ 13][RX-C]  50.01-60.01  sec  4.09 GBytes  3.52 Gbits/sec                  
[ 15][RX-C]  50.01-60.01  sec  2.45 GBytes  2.10 Gbits/sec                  
[SUM][RX-C]  50.01-60.01  sec  10.6 GBytes  9.15 Gbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.01  sec  16.0 GBytes  2.30 Gbits/sec    0            sender
[  5][TX-C]   0.00-59.99  sec  16.0 GBytes  2.30 Gbits/sec                  receiver
[  7][TX-C]   0.00-60.01  sec  33.6 GBytes  4.81 Gbits/sec    0            sender
[  7][TX-C]   0.00-59.99  sec  33.6 GBytes  4.81 Gbits/sec                  receiver
[  9][TX-C]   0.00-60.01  sec  16.0 GBytes  2.29 Gbits/sec    0            sender
[  9][TX-C]   0.00-59.99  sec  16.0 GBytes  2.29 Gbits/sec                  receiver
[SUM][TX-C]   0.00-60.01  sec  65.7 GBytes  9.40 Gbits/sec    0             sender
[SUM][TX-C]   0.00-59.99  sec  65.6 GBytes  9.40 Gbits/sec                  receiver
[ 11][RX-C]   0.00-60.01  sec  24.7 GBytes  3.53 Gbits/sec  22622            sender
[ 11][RX-C]   0.00-59.99  sec  24.7 GBytes  3.53 Gbits/sec                  receiver
[ 13][RX-C]   0.00-60.01  sec  24.5 GBytes  3.50 Gbits/sec  20386            sender
[ 13][RX-C]   0.00-59.99  sec  24.5 GBytes  3.50 Gbits/sec                  receiver
[ 15][RX-C]   0.00-60.01  sec  14.7 GBytes  2.11 Gbits/sec  13475            sender
[ 15][RX-C]   0.00-59.99  sec  14.7 GBytes  2.11 Gbits/sec                  receiver
[SUM][RX-C]   0.00-60.01  sec  63.9 GBytes  9.15 Gbits/sec  56483             sender
[SUM][RX-C]   0.00-59.99  sec  63.9 GBytes  9.15 Gbits/sec                  receiver

iperf Done.

9.40 Гбит/с отдача и 9.15 Гбит/с загрузка — неплохо. Для справки, мы также протестировали двунаправленный режим с двумя потоками: 9.40 Гбит/с / 4.2 Гбит/с. Четыре параллельных потока ещё больше улучшают производительность:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.4.1 -P 4 -i 10 --bidir
Connecting to host 192.168.4.1, port 5201
[  5] local 192.168.4.133 port 36472 connected to 192.168.4.1 port 5201
[  7] local 192.168.4.133 port 36476 connected to 192.168.4.1 port 5201
[  9] local 192.168.4.133 port 36488 connected to 192.168.4.1 port 5201
[ 11] local 192.168.4.133 port 36494 connected to 192.168.4.1 port 5201
[ 13] local 192.168.4.133 port 36500 connected to 192.168.4.1 port 5201
[ 15] local 192.168.4.133 port 36516 connected to 192.168.4.1 port 5201
[ 17] local 192.168.4.133 port 36528 connected to 192.168.4.1 port 5201
[ 19] local 192.168.4.133 port 36538 connected to 192.168.4.1 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
...             
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.00  sec  16.6 GBytes  2.37 Gbits/sec    0            sender
[  5][TX-C]   0.00-59.98  sec  16.6 GBytes  2.37 Gbits/sec                  receiver
[  7][TX-C]   0.00-60.00  sec  16.4 GBytes  2.34 Gbits/sec    0            sender
[  7][TX-C]   0.00-59.98  sec  16.4 GBytes  2.34 Gbits/sec                  receiver
[  9][TX-C]   0.00-60.00  sec  16.6 GBytes  2.38 Gbits/sec    0            sender
[  9][TX-C]   0.00-59.98  sec  16.6 GBytes  2.38 Gbits/sec                  receiver
[ 11][TX-C]   0.00-60.00  sec  16.1 GBytes  2.31 Gbits/sec    0            sender
[ 11][TX-C]   0.00-59.98  sec  16.1 GBytes  2.31 Gbits/sec                  receiver
[SUM][TX-C]   0.00-60.00  sec  65.6 GBytes  9.40 Gbits/sec    0             sender
[SUM][TX-C]   0.00-59.98  sec  65.6 GBytes  9.40 Gbits/sec                  receiver
[ 13][RX-C]   0.00-60.00  sec  23.5 GBytes  3.36 Gbits/sec  17867            sender
[ 13][RX-C]   0.00-59.98  sec  23.5 GBytes  3.37 Gbits/sec                  receiver
[ 15][RX-C]   0.00-60.00  sec  17.9 GBytes  2.56 Gbits/sec  17101            sender
[ 15][RX-C]   0.00-59.98  sec  17.9 GBytes  2.56 Gbits/sec                  receiver
[ 17][RX-C]   0.00-60.00  sec  12.3 GBytes  1.76 Gbits/sec  11480            sender
[ 17][RX-C]   0.00-59.98  sec  12.3 GBytes  1.76 Gbits/sec                  receiver
[ 19][RX-C]   0.00-60.00  sec  11.6 GBytes  1.67 Gbits/sec  10570            sender
[ 19][RX-C]   0.00-59.98  sec  11.6 GBytes  1.67 Gbits/sec                  receiver
[SUM][RX-C]   0.00-60.00  sec  65.3 GBytes  9.35 Gbits/sec  57018             sender
[SUM][RX-C]   0.00-59.98  sec  65.3 GBytes  9.35 Gbits/sec                  receiver

iperf Done.

Таким образом, SpacemiT K3 вполне справляется с сетью 10GbE, но для достижения оптимальной производительности рекомендуется использовать несколько ядер.

Протестируем также порт GbE:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 --bidir
Connecting to host 192.168.31.12, port 5201
[  5] local 192.168.31.14 port 34974 connected to 192.168.31.12 port 5201
[  7] local 192.168.31.14 port 34988 connected to 192.168.31.12 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-10.01  sec  1.09 GBytes   936 Mbits/sec    0    570 KBytes       
[  7][RX-C]   0.00-10.01  sec  1.09 GBytes   937 Mbits/sec                  
[  5][TX-C]  10.01-20.01  sec  1.09 GBytes   934 Mbits/sec    0    856 KBytes       
[  7][RX-C]  10.01-20.01  sec  1.09 GBytes   938 Mbits/sec                  
[  5][TX-C]  20.01-30.01  sec  1.09 GBytes   935 Mbits/sec    0    856 KBytes       
[  7][RX-C]  20.01-30.01  sec  1.09 GBytes   938 Mbits/sec                  
[  5][TX-C]  30.01-40.01  sec  1.09 GBytes   934 Mbits/sec    0    856 KBytes       
[  7][RX-C]  30.01-40.01  sec  1.09 GBytes   938 Mbits/sec                  
[  5][TX-C]  40.01-50.01  sec  1.09 GBytes   934 Mbits/sec    0    856 KBytes       
[  7][RX-C]  40.01-50.01  sec  1.09 GBytes   938 Mbits/sec                  
[  5][TX-C]  50.01-60.01  sec  1.09 GBytes   935 Mbits/sec    0    856 KBytes       
[  7][RX-C]  50.01-60.01  sec  1.09 GBytes   938 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-60.01  sec  6.53 GBytes   935 Mbits/sec    0            sender
[  5][TX-C]   0.00-60.01  sec  6.53 GBytes   934 Mbits/sec                  receiver
[  7][RX-C]   0.00-60.01  sec  6.55 GBytes   938 Mbits/sec    1            sender
[  7][RX-C]   0.00-60.01  sec  6.55 GBytes   938 Mbits/sec                  receiver

iperf Done.

938/935 Мбит/с для отдачи и загрузки — хороший показатель для гигабитного Ethernet.

Теперь подключим компьютер K3 Pico-ITX к Wi-Fi 6 в диапазоне 5 ГГц через роутер Xiaomi Router AX6000 .

  • Скачивание
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10 -R
Connecting to host 192.168.31.12, port 5201
Reverse mode, remote host 192.168.31.12 is sending
[  5] local 192.168.31.175 port 45902 connected to 192.168.31.12 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.01  sec   759 MBytes   636 Mbits/sec                  
[  5]  10.01-20.01  sec   792 MBytes   665 Mbits/sec                  
[  5]  20.01-30.01  sec   781 MBytes   655 Mbits/sec                  
[  5]  30.01-40.01  sec   774 MBytes   649 Mbits/sec                  
[  5]  40.01-50.00  sec   776 MBytes   652 Mbits/sec                  
[  5]  50.00-60.01  sec   789 MBytes   661 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.02  sec  4.56 GBytes   653 Mbits/sec   30            sender
[  5]   0.00-60.01  sec  4.56 GBytes   653 Mbits/sec                  receiver

iperf Done.

  • Загрузка
jaufranc@CNXSOFT-spacemitk3picoitx:~$ iperf3 -t 60 -c 192.168.31.12 -i 10
Connecting to host 192.168.31.12, port 5201
[  5] local 192.168.31.175 port 34204 connected to 192.168.31.12 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-10.00  sec   810 MBytes   680 Mbits/sec    0   4.01 MBytes       
[  5]  10.00-20.01  sec   826 MBytes   692 Mbits/sec    0   4.01 MBytes       
[  5]  20.01-30.01  sec   809 MBytes   679 Mbits/sec    2   4.01 MBytes       
[  5]  30.01-40.01  sec   796 MBytes   668 Mbits/sec    3   3.41 MBytes       
[  5]  40.01-50.01  sec   785 MBytes   658 Mbits/sec    6   3.20 MBytes       
[  5]  50.01-60.01  sec   762 MBytes   639 Mbits/sec    7   3.15 MBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-60.01  sec  4.68 GBytes   670 Mbits/sec   18            sender
[  5]   0.00-60.02  sec  4.68 GBytes   669 Mbits/sec                  receiver

iperf Done.

Показатели скачивания в 653 Мбит/с и загрузки в 669 Мбит/с вполне приличны для этой системы, хотя компьютеры на Intel/AMD обычно могут работать со скоростями WiFi в гигабитном диапазоне с такой конфигурацией.

Финальный тест беспроводной связи — Bluetooth. Сопряжение Android-смартфона с мини-ПК прошло без проблем.

BianbuOS 4.0.1 Bluetooth pairing

Соединение использовалось для передачи файла с мини-ПК на телефон, а также для воспроизведения аудио с телефона на колонки, подключенные к аудиоразъёму мини-ПК.

SpacemiT K3 BianbuOS 4.0.1 Bluetooth file transfer

Нагрузки ИИ SpacemiT K3 — большие языковые модели.

SoC SpacemiT K3 оснащена восемью ядрами RISC-V A100 AI Cores и, как утверждается, обеспечивает до 60 TOPS (INT4) производительности AI, так что пришлось опробовать нагрузку AI.

Сначала необходимо установить соответствующие инструменты, оптимизированные для K3:

sudo apt install llama.cpp-tools-spacemit

Проверить, что установка выполнена правильно, можно запустив клиент:

jaufranc@CNXSOFT-spacemitk3picoitx:~$ llama-cli
CPU_RISCV64_SPACEMIT: tcm is available, blk_size: 393216, blk_num: 8, is_fake_tcm: 0
CPU_RISCV64_SPACEMIT: num_cores: 16, num_perfer_cores: 8, perfer_core_arch_id: a064, exclude_main_thread: 0, use_ime1: 0, use_ime2: 1, mem_backend: HPAGE, cpu_mask: ff00, aicpu_id_offset: 8
CPU_RISCV64_SPACEMIT: alloc_chunk: open(/dev/tcm_sync_mem) failed, errno=2
CPU_RISCV64_SPACEMIT: failed to allocate init_barrier from shared mem, falling back to heap
error: --model is required

На сайте SpacemiT можно найти список моделей , квантованных до 4-бит.

SpacemiT AI model

Эти Qwen3‑30B‑A3B и Qwen3‑35B‑A3B выглядят интересно; однако они не поместятся в 16 ГБ оперативной памяти, и для них потребуется использовать версию платы с 32 ГБ ОЗУ.

Хотя наилучшей возможной моделью была бы LFM2-24B-A2B-Q4_0, она будет впритык на 16 ГБ ОЗУ, поэтому выберем безопасный вариант — модель с 8 млрд параметров (Qwen3-8B-Q4_K_M.gguf):

<span class="token function">wget</span> https://archive.spacemit.com/spacemit-ai/model_zoo/llm/Qwen3-8B-Q4_K_M.gguf

Можно попробовать модель в командной строке (t 8 означает, что мы хотим использовать восемь ядер):

llama-cli -m Qwen3-8B-Q4_K_M.gguf -t 8 -p "Hello, please introduce yourself."

Вот вывод:

CPU_RISCV64_SPACEMIT: tcm is available, blk_size: 393216, blk_num: 8, is_fake_tcm: 0
CPU_RISCV64_SPACEMIT: num_cores: 16, num_perfer_cores: 8, perfer_core_arch_id: a064, exclude_main_thread: 0, use_ime1: 0, use_ime2: 1, mem_backend: HPAGE, cpu_mask: ff00, aicpu_id_offset: 8
CPU_RISCV64_SPACEMIT: alloc_chunk: open(/dev/tcm_sync_mem) failed, errno=2
CPU_RISCV64_SPACEMIT: failed to allocate init_barrier from shared mem, falling back to heap

Loading model...  


▄▄ ▄▄
██ ██
██ ██  ▀▀█▄ ███▄███▄  ▀▀█▄    ▄████ ████▄ ████▄
██ ██ ▄█▀██ ██ ██ ██ ▄█▀██    ██    ██ ██ ██ ██
██ ██ ▀█▄██ ██ ██ ██ ▀█▄██ ██ ▀████ ████▀ ████▀
                                    ██    ██
                                    ▀▀    ▀▀

build      : b1-17ce6aa
model      : Qwen3-8B-Q4_K_M.gguf
modalities : text

available commands:
  /exit or Ctrl+C     stop or exit
  /regen              regenerate the last response
  /clear              clear the chat history
  /read <file>        add a text file
  /glob <pattern>     add text files using globbing pattern


> Hello, please introduce yourself.

[Start thinking]
Okay, the user asked me to introduce myself. I need to provide a clear and friendly introduction. Let me start by stating my name, Qwen, and my purpose as an AI assistant. I should mention my ability to handle various tasks like answering questions, creating content, and solving problems. It's important to highlight my training on a large amount of data to ensure accurate and helpful responses. I should also emphasize my commitment to providing safe, reliable, and efficient assistance. I need to keep the tone positive and approachable, inviting the user to ask any questions they might have. Let me make sure the introduction is concise but covers all the key points without being too technical. Also, I should avoid using any markdown and keep the language natural and conversational.

[End thinking]

Hello! I'm Qwen, a large language model developed by Alibaba Cloud. I'm designed to assist with a wide range of tasks, such as answering questions, creating content, solving problems, and more. My training data covers a vast amount of information, allowing me to provide accurate and helpful responses across various topics. I aim to be a reliable and efficient assistant, always striving to offer safe, thoughtful, and personalized support. Feel free to ask me any questions or share what you need help with—I'm here to assist! 😊

[ Prompt: 19.5 t/s | Generation: 4.3 t/s ]

Производительность составляет 4,3 токена в секунду при генерации.

Загрузка модели происходит на ядрах X100 (Linux), но инференс выполняется на AI-ядрах A100.

llama inference eight A100 cores

Также можно запустить llama-server для доступа к LLM-чат-боту в веб-браузере.

jaufranc@CNXSOFT-spacemitk3picoitx:~/LLM$ llama-server -m Qwen3-8B-Q4_K_M.gguf -t 8 --host 127.0.0.1 --port 8080
CPU_RISCV64_SPACEMIT: tcm is available, blk_size: 393216, blk_num: 8, is_fake_tcm: 0
CPU_RISCV64_SPACEMIT: num_cores: 16, num_perfer_cores: 8, perfer_core_arch_id: a064, exclude_main_thread: 0, use_ime1: 0, use_ime2: 1, mem_backend: HPAGE, cpu_mask: ff00, aicpu_id_offset: 8
CPU_RISCV64_SPACEMIT: alloc_chunk: open(/dev/tcm_sync_mem) failed, errno=2
CPU_RISCV64_SPACEMIT: failed to allocate init_barrier from shared mem, falling back to heap
0.00.006.680 I log_info: verbosity = 3 (adjust with the `-lv N` CLI arg)
0.00.006.686 I device_info:
0.00.006.705 I   - CPU     : Spacemit(R) X100 (15971 MiB, 15971 MiB free)
0.00.006.804 I system_info: n_threads = 8 (n_threads_batch = 8) / 16 | CPU : RISCV_V = 1 | RVV_VLEN = 32 | LLAMAFILE = 1 | OPENMP = 1 | 
0.00.006.813 I srv          main: n_parallel is set to auto, using n_parallel = 4 and kv_unified = true
0.00.007.074 I srv          init: using 15 threads for HTTP server
0.00.007.330 I srv         start: binding port with default address family
0.00.008.606 I srv          main: loading model
0.00.008.752 I srv    load_model: loading model 'Qwen3-8B-Q4_K_M.gguf'
0.00.008.844 I common_init_result: fitting params to device memory ...
0.00.008.849 I common_init_result: (for bugs during this step try to reproduce them with -fit off, or provide --verbose logs if the bug only occurs with -fit on)
0.00.965.965 I common_params_fit_impl: projected to use 6487 MiB of host memory vs. 15971 MiB of total host memory
0.01.498.664 W load: control-looking token: 128247 '</s>' was not control-type; this is probably a bug in the model. its type will be overridden

При использовании приведённой выше командной строки необходимо запускать Chromium на самой машине. Это потребляет довольно много ресурсов (12+ ГБ ОЗУ), поскольку всё работает на RISC-V компьютере, хотя X100 прикладные ядра обрабатывают веб-браузер, а A100 AI-ядра отвечают за инференс искусственного интеллекта.

llama server spacemit K3

Поэтому был выполнен перезапуск, чтобы предоставить доступ к вычислениям по локальной сети, используя 0.0.0.0 в качестве хоста:

jaufranc@CNXSOFT-spacemitk3picoitx:~/LLM$ llama-server -m Qwen3-8B-Q4_K_M.gguf -t 8 --host 0.0.0.0 --port 8080

Web interface LLM on K3 RISC-V SBC

Производительность примерно такая же — 4,7 токена в секунду; просто потребляется меньше ресурсов на плате RISC-V.

Сводка: что работает, что нет

Теперь, когда тестирование в основном завершено, напишем сводку, показывающую, что работает, а что нет на комплекте SpacemiT K3 Pico-ITX в корпусе:

  • Хранилище
    • 128GB UFS накопитель – OK, протестирован до 853 МБ/с скорость чтения, 168 МБ/с скорость записи
    • NVMe SSD – Работает, но только после изменения конфигурации системы. Производительность могла бы быть лучше для соединения PCIe Gen3 x4 (885МБ/с чтение, 167 МБ/с запись
  • Вывод видео и аудио
    • USB-C
      • Видео и аудио работают через док-станцию UGREEN; протестировано до 1920×1080
      • Видео и аудио работают через монитор KTC A32Q8 4K с питанием USB-C PD; протестировано до 3840×2160
    • Аудиоразъем 3,5 мм – работает, протестировано с внешними колонками.
  • GPU – аппаратное ускорение 3D-графики включено, протестировано с glmark2-es2-wayland и WebGL в Chromium
  • VPU – OK в YouTube до 4K (примечание: произошло два микрофриза при разрешении 4K)
  • AI ускорение – OK, протестировано с 8B LLM (4-битное квантование) при 4,8 токенов/с на ядрах A100.
  • Сеть
    • Гигабитный Ethernet – OK; полный дуплекс:  902/877 Мбит/с
    • 10Gbps Ethernet – OK; полный дуплекс до 9.40/9.45 Гбит/с; для оптимальной производительности с iperf3 требуются параллельные потоки
    • WiFi 6 – OK, протестировано на около 660 Мбит/с DL/UL
    • Bluetooth – OK; протестировано с передачей файлов и воспроизведением аудио с использованием Android-смартфона OPPO A98 5G
  • USB – порты USB 3.0 протестированы с корпусом ORICO NVMe SSD (если не указано иное), порты USB 2.0 с USB HDD (оба с разделом EXT-4) и RF-донглом для беспроводной клавиатуры/мыши. Спереди слева направо
    • USB 2.0 #1 – 480 Мбит/с; протестировано до 35  МБ/с с iozone3
    • USB 2.0 #1 – 480 Мбит/с; протестировано до 35  МБ/с с iozone3
    • USB 2.0 #1 – 480 Мбит/с; протестировано до 35  МБ/с с iozone3
    • USB 2.0 #1 – 480 Мбит/с; протестировано до 35  МБ/с с iozone3
    • USB 3.0 Type-C #1 – 5 Гбит/с; протестировано до 352 МБ/с (чтение)
    • USB 3.0 Type-C #2 – 5 Гбит/с; протестировано через док-станцию UGREEN
      • Питание и DP Alt Mode OK.
      • Корпус ORICO NVMe – Накопитель не обнаружен
      • Жесткий диск Seagate USB 3.0 – 5,000 Мбит/с – OK. Скорость не тестировалась, так как жесткий диск стал бы узким местом…
SpacemiT K3 Pico-ITX Chassis Kit USB PD monitor
Набор корпуса SpacemiT K3 Pico-ITX, подключенный к 4K-монитору с поддержкой USB PD через один кабель USB Type-C

SpacemIT K3 Pico-ITX mini PC speakers audio jack test
Тест аудиоразъема с USB-колонками

Хотя результат не идеален, он вполне удовлетворительный. Основной проблемой была настройка NVMe SSD для работы с платой. Также, похоже, имеется проблема совместимости по крайней мере с одним корпусом SSD при использовании прилагаемого USB-C-дока UGREEN, а производительность портов USB могла бы быть немного выше.

Энергопотребление набора SpacemiT K3 Pico-ITX Chassis Kit

Также было проверено энергопотребление с помощью настенного измерителя мощности после удаления NVMe SSD. В первый раз было измерено 13,5 Вт в режиме ожидания в серверном режиме при подключении только Ethernet-кабеля к мини-ПК. Это кажется немного высоким, но затем вспомнилось, что был отключен ASPM для SSD, поэтому изменения были отменены и произведена повторная попытка:

  • Выключено – 2,7 Вт!
  • Ожидание
    • Серверный режим
      • GbE + WiFi 6 – 13,1 Вт
      • 10GbE + WiFi 6 – 17,0 – 17,1 Вт
      • GbE + 10GbE + WiFi 6 – 17,3 – 17,5 Вт
    • Режим рабочего стола
      • GbE + WiFi 6 + док UGREEN + HDMI + RF-ключ – 13,6 – 13,8 Вт
      • 10GbE + WiFi 6 + док UGREEN + HDMI + RF-ключ – 18,0 – 18,2 Вт
  • YouTube 4K в Chromium – 17,1 – 19,0 Вт
  • Stress-ng
    • 8 ядер X100 – 22,1 – 22,6 Вт
    • 16 ядер (X100 + A100) – 25,2 – 25,3 Вт; примечание: вентилятор становится громче

Возврат параметров загрузки не сильно помог. SpacemiT K3 потребляет немного больше энергии, чем может быть комфортно для некоторых пользователей. Энергопотребление в выключенном состоянии до 3 Вт может даже быть незаконным в некоторых странах… Хорошая новость — относительно низкое энергопотребление при воспроизведении видео 4K YouTube благодаря аппаратному декодированию видео.

Для справки: если не указано иное, все тесты проводились в «Режиме рабочего стола» с GbE, док-станцией UGREEN, HDMI и RF-ключом.

Заключение

В целом, набор SpacemiT K3 Pico-ITX Chassis Kit приятно удивил, так как он выглядит как стандартный мини-ПК, и многие могли бы даже рассматривать его как бюджетный компьютер для серфинга в интернете, просмотра видео и проверки электронной почты. Почти всё работает как заявлено, включая ускорение 3D-графики, аппаратное декодирование видео на YouTube до разрешения 4Kp60 и ускоренные задачи AI/LLM. Накопитель UFS обеспечивает отличную производительность, сетевое подключение 10GbE работает хорошо, хотя для достижения полной пропускной способности требуется использование нескольких ядер, и не возникло никаких проблем с портом GbE, WiFi 6 (660 Мбит/с загрузка/выгрузка) или подключением Bluetooth.

Это не значит, что проблем не было. Во-первых, с трудом удалось добиться надежной работы M.2 NVMe SSD, пришлось изменить параметры загрузки. После исправления производительность SSD через PCIe Gen3 x4 разочаровала. Также возникли проблемы совместимости с одним корпусом NVMe SSD при подключении через порт USB-C PD — он совсем не распознавался, а фактическая пропускная способность всех портов USB оказалась немного ниже ожидаемой. Хотелось бы также наличие порта HDMI или второго порта USB-C с DP Alt Mode, так как мини-ПК требует USB-C-док для подключения дисплея и питания, за исключением владельцев мониторов с выходом USB-PD для питания мини-ПК. Наконец, энергопотребление системы в режиме ожидания довольно высокое.

Хотелось бы поблагодарить SpacemiT за предоставление набора K3 Pico-ITX Chassis Kit для обзора. Компания сообщила, что этот конкретный набор может появиться в продаже в августе. Если вас не интересует именно этот корпус, SpacemiT полагается на ряд дистрибьюторов, таких как Banana Pi и Sipeed для K3 Pico-ITX SBC (479 долларов за модель 16 ГБ/128 ГБ). Ближайший аналог «Chassis Kit» — Milk-V Jupiter 2 с корпусом Pico-ITX и двумя внешними антеннами. Он продается за 380 долларов за модель с 16 ГБ ОЗУ/128 ГБ UFS.

Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.

Оригинал статьи вы можете прочитать здесь.

0 0 votes
Article Rating
Подписаться
Уведомление о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

0 Комментарий
Oldest
Newest Most Voted
Inline Feedbacks
View all comments