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

Reply via email to