anchao opened a new pull request, #7817: URL: https://github.com/apache/nuttx/pull/7817
## Summary risc-v/es32c3: improve passthrough performance by iob offload Replace the iob offload model to improve passthrough 1. Use iob buffer instead of reserved packet buffer 2. Enable TCP/UDP buffer mode ``` ------------------------------------------------- | Protocol | Server | Client | | |-----------------------------------------------| | TCP | 7 | 12 | Mbits/sec | | TCP(Offload) | 17 | 11 | Mbits/sec | | UDP | 10 | 16 | Mbits/sec | | UDP(Offload) | 43 | 28 | Mbits/sec | ------------------------------------------------- ``` Signed-off-by: chao an <anc...@xiaomi.com> ## Impact N/A ## Testing ./tools/configure.sh esp32c3-devkit/wapi ``` --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Orignal | IOB offload --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- TCP client --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | nsh> iperf -c 192.168.1.102 -i 1 | nsh> iperf -c 192.168.1.102 -i 1 IP: 192.168.1.195 | IP: 192.168.1.195 | mode=tcp-client sip=192.168.1.195:5001,dip=192.168.1.102:5001, interval=1, time=30 | mode=tcp-client sip=192.168.1.195:5001,dip=192.168.1.102:5001, interval=1, time=30 | Interval Transfer Bandwidth | Interval Transfer Bandwidth | 0.00- 1.01 sec 1589248 Bytes 12.59 Mbits/sec | 0.00- 1.02 sec 1343488 Bytes 10.41 Mbits/sec 1.01- 2.02 sec 3129344 Bytes 12.20 Mbits/sec | 1.02- 2.03 sec 2818048 Bytes 11.68 Mbits/sec 2.02- 3.03 sec 4751360 Bytes 12.85 Mbits/sec | 2.03- 3.04 sec 4079616 Bytes 9.99 Mbits/sec 3.03- 4.04 sec 6602752 Bytes 14.66 Mbits/sec | 3.04- 4.05 sec 5537792 Bytes 11.55 Mbits/sec 4.04- 5.05 sec 8437760 Bytes 14.53 Mbits/sec | 4.05- 5.06 sec 6930432 Bytes 11.03 Mbits/sec 5.05- 6.06 sec 10108928 Bytes 13.24 Mbits/sec | 5.06- 6.07 sec 8388608 Bytes 11.55 Mbits/sec 6.06- 7.07 sec 11763712 Bytes 13.11 Mbits/sec | 6.07- 7.08 sec 9732096 Bytes 10.64 Mbits/sec 7.07- 8.08 sec 13402112 Bytes 12.98 Mbits/sec | 7.08- 8.09 sec 11091968 Bytes 10.77 Mbits/sec 8.08- 9.09 sec 15007744 Bytes 12.72 Mbits/sec | 8.09- 9.10 sec 12517376 Bytes 11.29 Mbits/sec 9.09- 10.10 sec 16646144 Bytes 12.98 Mbits/sec | 9.10- 10.11 sec 13828096 Bytes 10.38 Mbits/sec 10.10- 11.11 sec 18300928 Bytes 13.11 Mbits/sec | 10.11- 11.12 sec 15187968 Bytes 10.77 Mbits/sec | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- TCP Server --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | nsh> iperf -s -i 1 | nsh> iperf -s -i 1 IP: 192.168.1.195 | IP: 192.168.1.195 | mode=tcp-server sip=192.168.1.195:5001,dip=0.0.0.0:5001, interval=1, time=0 | mode=tcp-server sip=192.168.1.195:5001,dip=0.0.0.0:5001, interval=1, time=0 accept: 192.168.1.102,56028 | accept: 192.168.1.102,35490 | Interval Transfer Bandwidth | Interval Transfer Bandwidth | 0.00- 1.01 sec 619040 Bytes 4.87 Mbits/sec | 0.00- 1.01 sec 1995820 Bytes 15.81 Mbits/sec 1.01- 2.02 sec 1500880 Bytes 6.98 Mbits/sec | 1.01- 2.02 sec 3949474 Bytes 15.47 Mbits/sec 2.02- 3.03 sec 2322860 Bytes 6.51 Mbits/sec | 2.02- 3.03 sec 6039308 Bytes 16.55 Mbits/sec 3.03- 4.04 sec 2982780 Bytes 5.23 Mbits/sec | 3.03- 4.04 sec 8225640 Bytes 17.32 Mbits/sec 4.04- 5.05 sec 3794540 Bytes 6.43 Mbits/sec | 4.04- 5.05 sec 10304680 Bytes 16.47 Mbits/sec 5.05- 6.06 sec 4406280 Bytes 4.85 Mbits/sec | 5.05- 6.06 sec 12614400 Bytes 18.29 Mbits/sec 6.06- 7.07 sec 5086640 Bytes 5.39 Mbits/sec | 6.06- 7.07 sec 14868640 Bytes 17.86 Mbits/sec 7.07- 8.08 sec 5949500 Bytes 6.83 Mbits/sec | 7.07- 8.08 sec 16973960 Bytes 16.68 Mbits/sec 8.08- 9.09 sec 6819660 Bytes 6.89 Mbits/sec | 8.08- 9.09 sec 18922348 Bytes 15.43 Mbits/sec 9.09- 10.10 sec 7679600 Bytes 6.81 Mbits/sec | 9.09- 10.10 sec 20578700 Bytes 13.12 Mbits/sec | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- UDP Client (Print from Host PC) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | $ iperf -s -i 1 -u -p 5003 | $ iperf -s -i 1 -u -p 5003 ------------------------------------------------------------ | ------------------------------------------------------------ Server listening on UDP port 5003 | Server listening on UDP port 5003 Receiving 1470 byte datagrams | Receiving 1470 byte datagrams UDP buffer size: 208 KByte (default) | UDP buffer size: 208 KByte (default) ------------------------------------------------------------ | ------------------------------------------------------------ [ 3] local 192.168.1.102 port 5003 connected with 192.168.1.195 port 6302 | [ 3] local 192.168.1.102 port 5003 connected with 192.168.1.195 port 6084 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams | [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0- 1.0 sec 1.84 MBytes 15.4 Mbits/sec 0.933 ms 1/ 1310 (0.076%) | [ 3] 0.0- 1.0 sec 3.13 MBytes 26.2 Mbits/sec 0.817 ms 41/ 2272 (1.8%) [ 3] 1.0- 2.0 sec 1.83 MBytes 15.3 Mbits/sec 1.657 ms 0/ 1302 (0%) | [ 3] 1.0- 2.0 sec 3.42 MBytes 28.7 Mbits/sec 2.305 ms 0/ 2439 (0%) [ 3] 2.0- 3.0 sec 1.82 MBytes 15.2 Mbits/sec 1.512 ms 0/ 1296 (0%) | [ 3] 2.0- 3.0 sec 3.08 MBytes 25.8 Mbits/sec 0.845 ms 7/ 2202 (0.32%) [ 3] 3.0- 4.0 sec 1.85 MBytes 15.5 Mbits/sec 0.811 ms 0/ 1317 (0%) | [ 3] 3.0- 4.0 sec 3.42 MBytes 28.7 Mbits/sec 0.442 ms 0/ 2437 (0%) [ 3] 4.0- 5.0 sec 1.88 MBytes 15.7 Mbits/sec 0.888 ms 0/ 1339 (0%) | [ 3] 4.0- 5.0 sec 3.44 MBytes 28.8 Mbits/sec 0.582 ms 0/ 2451 (0%) [ 3] 5.0- 6.0 sec 1.79 MBytes 15.0 Mbits/sec 3.519 ms 0/ 1275 (0%) | [ 3] 5.0- 6.0 sec 3.42 MBytes 28.7 Mbits/sec 0.343 ms 0/ 2440 (0%) [ 3] 6.0- 7.0 sec 1.90 MBytes 15.9 Mbits/sec 0.782 ms 0/ 1355 (0%) | [ 3] 6.0- 7.0 sec 3.17 MBytes 26.6 Mbits/sec 0.255 ms 0/ 2258 (0%) [ 3] 7.0- 8.0 sec 1.81 MBytes 15.2 Mbits/sec 3.371 ms 5/ 1298 (0.39%) | [ 3] 7.0- 8.0 sec 3.49 MBytes 29.3 Mbits/sec 0.425 ms 0/ 2491 (0%) [ 3] 8.0- 9.0 sec 1.93 MBytes 16.2 Mbits/sec 0.691 ms 0/ 1376 (0%) | [ 3] 8.0- 9.0 sec 3.39 MBytes 28.4 Mbits/sec 0.412 ms 0/ 2417 (0%) [ 3] 9.0-10.0 sec 1.82 MBytes 15.2 Mbits/sec 1.571 ms 0/ 1295 (0%) | [ 3] 9.0-10.0 sec 3.39 MBytes 28.4 Mbits/sec 0.336 ms 0/ 2416 (0%) | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- UDP Server --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | nsh> iperf -s -i 1 -u -p 5003 | nsh> iperf -s -i 1 -u IP: 192.168.1.195 | IP: 192.168.1.195 | mode=udp-server sip=192.168.1.195:5003,dip=0.0.0.0:5001, interval=1, time=0 | mode=udp-server sip=192.168.1.195:5001,dip=0.0.0.0:5001, interval=1, time=0 want recv=16384 | want recv=16384 | Interval Transfer Bandwidth | Interval Transfer Bandwidth | 0.00- 1.01 sec 1317120 Bytes 10.39 Mbits/sec | 0.00- 1.01 sec 5056800 Bytes 40.02 Mbits/sec 1.01- 2.02 sec 1317120 Bytes 0.00 Mbits/sec | 1.01- 2.02 sec 9831360 Bytes 37.82 Mbits/sec 2.02- 3.03 sec 1317120 Bytes 0.00 Mbits/sec | 2.02- 3.03 sec 14835240 Bytes 39.63 Mbits/sec 3.03- 4.04 sec 1355340 Bytes 0.30 Mbits/sec | 3.03- 4.04 sec 20466810 Bytes 44.61 Mbits/sec 4.04- 5.05 sec 1608180 Bytes 2.00 Mbits/sec | 4.04- 5.05 sec 26036640 Bytes 44.12 Mbits/sec 5.05- 6.06 sec 2940000 Bytes 10.55 Mbits/sec | 5.05- 6.06 sec 31882830 Bytes 46.31 Mbits/sec 6.06- 7.07 sec 4298280 Bytes 10.76 Mbits/sec | 6.06- 7.07 sec 36644160 Bytes 37.71 Mbits/sec 7.07- 8.08 sec 5878530 Bytes 12.52 Mbits/sec | 7.07- 8.08 sec 41822970 Bytes 41.02 Mbits/sec 8.08- 9.09 sec 6911940 Bytes 8.19 Mbits/sec | 8.08- 9.09 sec 46043340 Bytes 33.43 Mbits/sec 9.09- 10.10 sec 8473080 Bytes 12.37 Mbits/sec | 9.09- 10.10 sec 50338680 Bytes 34.02 Mbits/sec | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ``` -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: commits-unsubscr...@nuttx.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org