vuxu.org: Tanit

Tanit is a Lenovo M720q tiny desktop PC with a 3.1GHz Intel i3-8100T CPU, 16GB RAM and a 512GB Micron 2450 NVMe SSD. It hosts a 10GB ethernet card.

The naming

Tanit was a Carthaginian Punic goddess, and the chief deity of Ancient Carthage, alongside her consort Baal Hammon.

Components

ArticlePriceWhere from
Lenovo M720q (refurbished)165.49€Ebay
Replacement fan10.20€AliExpress
PCIe Riser Card Board12.90€AliExpress
Mellanox ConnectX-3 Pro incl. 2x SFP+ 10GB-SR-LC87.90€Ebay
TOTAL276.49€

Disassembly

Remove the screw on the back, and pull the top case to the front.

The fan was working, but seemed to rattle a bit, so I replaced it with a new one.

BIOS

You can enter the BIOS by pressing F1 on boot, and select the boot medium by pressing F12 (this information is not being displayed).

Setup

I installed FreeBSD 13.2 from the mini-memstick image.

I made a separate zfs file system for my user home directory.

Poudriere

In /usr/local/etc/poudriere.conf set:

FREEBSD_HOST=https://download.FreeBSD.org
CCACHE_DIR=/var/cache/ccache

    zfs create zroot/var/cache
zfs create zroot/var/cache/ccache
poudriere jail -c -j 13-2-amd64 -v 13.2-RELEASE
poudriere ports -c -p local -m null -M /usr/ports

(tbd)

Synth

pkg install synth ccache
    zfs create zroot/var/cache
zfs create zroot/var/cache/ccache
git clone https://git.freebsd.org/ports.git /usr/ports
synth configure
# set [H] Compiler cache directory
# set [N] Fetch prebuilt packages

10GB networking

The card works out of the box with mlx4en_load="YES" in /boot/loader.conf. Some basic SFP+ transceiver information can be fetched using ifconfig -v mlxen0.

The card has a on-die temperature sensor that can be read using the proprietary mft software:

# mget_temp -d pci0:1:0:0
72

The card is specified for up to 105°C die temperature, so this is fine apparently. Temperature does not seem to change with how heavily the card is used.

I changed the BIOS profile to favor good thermals over low noise, this makes 10C difference, as the fan spins more when the CPU usage is low.

The tools also contain flint to see the firmware version:

# flint -d pci0:1:0:0 query
Image type:            FS2
FW Version:            2.42.5044
FW Release Date:       21.10.2018
Product Version:       02.42.50.44
...

Power usage

Measured using a REV Ritter EMT717ACTL: In BIOS, ~26 W. Idle on FreeBSD ~15 W (~13 W when performance_cx_lowest="LOW" is set). Idle on Linux 6.1 ~13 W. 10Gbit with iperf3, ~27 W. All cores fully used, ~40 W (plus SSD writes, ~44 W). One core fully used, ~24 W.

Wireguard benchmark

With hecate on the other side, I get 1.3Gbit over Wireguard from FreeBSD 13.2 to Linux 6.5, and 5.8Gbit from Linux to Linux; this is mainly because FreeBSD 13 doesn’t offer SIMD for Wireguard’s ChaCha20. (I think hecate is bottlenecking the benchmark now, extrapolating from openssl speed -evp chacha20-poly1305 results, tanit should be able to saturate 10Gbit (unidirectional), and can use the AVX2 implementation as well.)