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
Article | Price | Where from |
---|---|---|
Lenovo M720q (refurbished) | 165.49€ | Ebay |
Replacement fan | 10.20€ | AliExpress |
PCIe Riser Card Board | 12.90€ | AliExpress |
Mellanox ConnectX-3 Pro incl. 2x SFP+ 10GB-SR-LC | 87.90€ | Ebay |
TOTAL | 276.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.)