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を使用することをお勧めする。