POST
Initial iPerf3 testing with Odroid XU4
We are starting some high-throughput wireless testing and I needed an embedded endpoint that can generate relatively high traffic levels (realistically, ~200Mbps). The standard solutions (RPi), just won’t cut it.
We settled on the Odroid XU4, which uses the Samsung Exynos 5422 eight core processor. I’m also interested in the big.LITTLE thing, so this was a great chance to try it out.
{:center}
Before we get to the real testing, I did a bit of benchmarking. The Odroid and a PC (w/ Intel chipset) are connected through a Netgear GSS116E switch.
I’m using the ODroid with the out-of-the-box image provided by Hardkernel, in this case Ubuntu MATE with X and everything. I installed iperf3
by apt
and dist-ugpraded
to the latest packages/kernel.
iperf3
runs automatically in server mode on the ODroid with
/usr/bin/iperf3 -sD
in /etc/rc.local
. Not very sophisticated.
On the PC, then, I can do some basic benchmarking from PC to ODroid:
aaron@ennui:~$ iperf3 -c 192.168.13.125
Connecting to host 192.168.13.125, port 5201
[ 4] local 192.168.13.111 port 60164 connected to 192.168.13.125 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 75.5 MBytes 633 Mbits/sec 180 154 KBytes
...
[ 4] 9.00-10.00 sec 75.6 MBytes 634 Mbits/sec 149 148 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 754 MBytes 633 Mbits/sec 1667 sender
[ 4] 0.00-10.00 sec 753 MBytes 632 Mbits/sec receiver
And ODroid to PC:
aaron@ennui:~$ iperf3 -c 192.168.13.125 -R
Connecting to host 192.168.13.125, port 5201
Reverse mode, remote host 192.168.13.125 is sending
[ 4] local 192.168.13.111 port 60168 connected to 192.168.13.125 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 104 MBytes 871 Mbits/sec
...
[ 4] 9.00-10.00 sec 105 MBytes 879 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.03 GBytes 881 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.03 GBytes 881 Mbits/sec receiver
Not bad, lots of retries and strangely asymmetrical.
On a tip from the internet, the USB controller interrupts can be attached to the “big” A15 cores on the chip:
sudo sh -c "echo "4-7" > /proc/irq/105/smp_affinity_list"
Testing again (in both directions):
aaron@ennui:~$ iperf3 -c 192.168.13.125
Connecting to host 192.168.13.125, port 5201
[ 4] local 192.168.13.111 port 60178 connected to 192.168.13.125 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 113 MBytes 945 Mbits/sec 0 468 KBytes
...
[ 4] 9.00-10.00 sec 111 MBytes 927 Mbits/sec 0 468 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.09 GBytes 935 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.09 GBytes 934 Mbits/sec receiver
iperf Done.
aaron@ennui:~$ iperf3 -c 192.168.13.125 -R
Connecting to host 192.168.13.125, port 5201
Reverse mode, remote host 192.168.13.125 is sending
[ 4] local 192.168.13.111 port 60182 connected to 192.168.13.125 port 5201
[ ID] Interval Transfer Bandwidth
[ 4] 0.00-1.00 sec 110 MBytes 919 Mbits/sec
...
[ 4] 9.00-10.00 sec 110 MBytes 924 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 1.08 GBytes 924 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 1.08 GBytes 924 Mbits/sec receiver
Not exactly statistically thorough, but demonstrates that the ODroid (or at least the big cores) can basically fill Gigabit in one direction. There might be something in fiddling with MTUs and etc, but this is good enough for me.