Nach der enttäuschenden Feststellung, dass selbst ein Raspberry Pi3 lediglich 100mbit als Netzwerkport und mit USB Gigabit Ethernetadaptern auch nur maximal 450mbit aufgrund der USB 2 Bandbreite zu erzielen ist, musste ein anderes Gerät her.

Ausgewählt habe ich einen Odroid-XU4, der auch Gigabit direkt onboard mitbringt und dank USB 3 auch in der Lage ist Gigabit zu bedienen. Aufgrund der Big-Little Architektur gibt es hier zwar acht CPU Kerne, diese sind jedoch unterschiedlich leistungsfähig. Um die optimale Netzwerkgeschwindigkeit zu erzielen, müssen einige Einstellungen am Odroid vorgenommen werden. Andernfalls ist auch bei rund 170-200 mbit Durchsatz Ende.

Zum einen muss der Interrupt für die Netzwerkkarte auf eine andere CPU als die Default-CPU 0 gelegt werdenm denn die ist mit Interrupts sowieso gut beschäftigt.

echo 5 > /proc/irq/143/smp_affinity_list
echo 6 > /proc/irq/144/smp_affinity_list
echo 7 > /proc/irq/90/smp_affinity_list

Zum anderen kann man noch dem Netzwerkstack mitteilen, mit welchen IRQs anstehende Daten behandelt werden sollen.

echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus

Um stets die bestmögliche Performance zu erzielen kann noch der CPU Governor angepasst werden.

echo "performance"> /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
echo "performance"> /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor
Da es sich um eine NUMA Architektur handelt, muss diese Einstellung für beide CPU Gruppen vorgenommen werden.