====== DPDK auf einem Debian installieren ======
Erst ein Debian wie gewohnt installieren.
Hugepages einrichten:
nano /etc/default/grub
Dort dann an an den Inhalt von GRUB_CMDLINE_LINUX_DEFAULT folgendes ergänzen:
default_hugepagesz=1G hugepagesz=1G hugepages=4 intel_iommu=on iommu=pt
Konfig anwenden:
update-grub
Dateisystem für Hugetables anlegen:
mkdir /mnt/huge_1GB
nano /etc/fstab
Folgendes am Ende einfügen
nodev /mnt/huge_1GB hugetlbfs pagesize=1GB 0 0
rebooten
reboot
Prüfen ob Hugepages wirklich da sind:
cat /proc/meminfo | grep -i huge
Ausgabe:
AnonHugePages: 28672 kB
ShmemHugePages: 0 kB
HugePages_Total: 4
HugePages_Free: 4
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 1048576 kB
Hugetlb: 4194304 kB
Sind die Hugepages gemountet?
cat /proc/mounts | grep -i /mnt/huge_1GB
Ausgabe:
nodev /mnt/huge_1GB hugetlbfs rw,relatime,pagesize=1024M 0 0
Testen, ob iommu läuft:
ls -al /sys/kernel/iommu_groups/
Das Verzeichnis sollte nun nicht mehr leer sein.
Ein paar Pakete installieren:
apt update && apt upgrade
apt install build-essential python3 meson ninja-build libnuma-dev
Kernelmodule laden
modprobe vfio-pci
DPDK herunterladen
wget http://fast.dpdk.org/rel/dpdk-20.02.tar.xz
tar xJf dpdk-20.02.tar.xz
cd dpdk-20.02
export RTE_SDK=$(pwd)
Geräte anziegen lassen
${RTE_SDK}/usertools/dpdk-devbind.py -s
Geräte binden
${RTE_SDK}/usertools/dpdk-devbind.py --bind=vfio-pci 0000:01:00.0
${RTE_SDK}/usertools/dpdk-devbind.py --bind=vfio-pci 0000:01:00.1
DPDK bauen
cd ${RTE_SDK}
make defconfig
make
Ein Beispiel ausführen:
cd ${RTE_SDK}/examples/helloworld
export RTE_TARGET=build
make