USB-LAN2500Rの性能改善

NanoPi M4ではCPUパワーが足りず、1.5Gbpsくらいしか出ない。というかLittleコアしか使用率があがらず、Bigコアが暇している。

Interrupt Coalescing

デフォルトのrx-usecsが15000なので25000に増やしてみる。

# ethtool -C ethx rx-usecs 25000

結果

Connecting to host 192.168.2.2, port 5201
[  4] local 192.168.2.1 port 58871 connected to 192.168.2.2 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   272 MBytes  2.28 Gbits/sec
[  4]   1.00-2.00   sec   287 MBytes  2.41 Gbits/sec
[  4]   2.00-3.00   sec   286 MBytes  2.40 Gbits/sec
[  4]   3.00-4.00   sec   288 MBytes  2.41 Gbits/sec
[  4]   4.00-5.00   sec   284 MBytes  2.38 Gbits/sec
[  4]   5.00-6.00   sec   284 MBytes  2.39 Gbits/sec
[  4]   6.00-7.00   sec   284 MBytes  2.38 Gbits/sec
[  4]   7.00-8.00   sec   286 MBytes  2.40 Gbits/sec
[  4]   8.00-9.00   sec   286 MBytes  2.40 Gbits/sec
[  4]   9.00-10.00  sec   286 MBytes  2.40 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  2.78 GBytes  2.39 Gbits/sec                  sender
[  4]   0.00-10.00  sec  2.78 GBytes  2.38 Gbits/sec                  receiver

iperf Done.

x86-64のCPUでやった時とほぼ同じような値になった。

RPS

とりあえずLittleの4コア分使ってみる。

# echo 0f > /sys/class/net/ethx/queues/rx-0/rps_cpus
Connecting to host 192.168.2.2, port 5201
[  4] local 192.168.2.1 port 59041 connected to 192.168.2.2 port 5201
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-1.00   sec   280 MBytes  2.35 Gbits/sec
[  4]   1.00-2.00   sec   291 MBytes  2.44 Gbits/sec
[  4]   2.00-3.00   sec   289 MBytes  2.42 Gbits/sec
[  4]   3.00-4.00   sec   290 MBytes  2.43 Gbits/sec
[  4]   4.00-5.00   sec   289 MBytes  2.43 Gbits/sec
[  4]   5.00-6.00   sec   288 MBytes  2.42 Gbits/sec
[  4]   6.00-7.00   sec   290 MBytes  2.43 Gbits/sec
[  4]   7.00-8.00   sec   289 MBytes  2.42 Gbits/sec
[  4]   8.00-9.00   sec   290 MBytes  2.43 Gbits/sec
[  4]   9.00-10.00  sec   289 MBytes  2.43 Gbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  4]   0.00-10.00  sec  2.82 GBytes  2.42 Gbits/sec                  sender
[  4]   0.00-10.00  sec  2.82 GBytes  2.42 Gbits/sec                  receiver

iperf Done.

これでもよさそう。

2020/6/7追記
Linux kernel 5.6対応のドライバが出たので、Armbianごと入れなおしたところ、上記のようなことをしなくても速度が出るようになった。

2020/6/9追記
上記のドライバ(2.13.0)を入れたところ、sambaでNano Pi M4→Windows10でのファイル転送時にコネクションが落ちるというエラーがあることがわかった。1.12.0を使用することをお勧めする。