The tx-error usually indicates the NIC is too slow to pick up the packets for 
tx, but I suspect you have a configuration issue somewhere because you should 
be able to route 8Mpps of IPv6 with 1 or 2 workers.
Can you give us the output of (while traffic is going through):
 - show pci
 - show threads
 - show int rx
 - show hardware
 - show buffers
 - clear run / show run

Best
ben

> -----Original Message-----
> From: vpp-dev@lists.fd.io <vpp-dev@lists.fd.io> On Behalf Of
> jacicson1...@163.com
> Sent: vendredi 10 juillet 2020 13:46
> To: vpp-dev@lists.fd.io
> Subject: [vpp-dev] #vpp How can I get rid of tx-errors with 100G NICs ?
> #dpdk
> 
> 
> I tested single IPv6 route performance with two 100G NICs.
> The test tool is Trex which can send packets 100Gb/s easily.
> But VPP(1908.1) has a lot of tx-errors while forwarding the packets.
> 
> 20 threads, 20 rx queues, 20 tx queues,  60G Hugepages.
> When T-rex send 100Gb/s, VPP droped nearly 10% packets.
> 
> How can I get rid of the tx-error? Is it possible to improve the
> performance?
> When I set 30 workers or 10 workers with same tx/rx queues, the tx-error
> is not changed.
> 
> Information
> 
> Trex's result:
> Send 8.2Mpps, Recv 7.33Mpps
> 
> Global Statistitcs
> 
> connection   : localhost, Port 4501                  total_tx_L2  : 98.71
> Gb/sec
> version      : STL @ v2.81                           total_tx_L1  : 100.02
> Gb/sec
> cpu_util.    : 5.67% @ 14 cores (14 per dual port)    total_rx     : 88.25
> Gb/sec
> rx_cpu_util. : 0.0% / 0 pkt/sec                      total_pps    : 8.2
> Mpkt/sec
> async_util.  : 0.16% / 1.32 KB/sec                   drop_rate    : 10.46
> Gb/sec
> total_cps.   : 0 cps/sec                             queue_full   : 0 pkts
> 
> Port Statistics
> 
>    port    |         0         |         1         |       total
> -----------+-------------------+-------------------+------------------
> owner      |              root |              root |
> link       |                UP |                UP |
> state      |      TRANSMITTING |              IDLE |
> speed      |          100 Gb/s |          100 Gb/s |
> CPU util.  |             5.67% |              0.0% |
> --         |                   |                   |
> Tx bps L2  |        98.71 Gbps |             0 bps |        98.71 Gbps
> Tx bps L1  |       100.02 Gbps |             0 bps |       100.02 Gbps
> Tx pps     |          8.2 Mpps |             0 pps |          8.2 Mpps
> Line Util. |          100.02 % |               0 % |
> ---        |                   |                   |
> Rx bps     |             0 bps |        88.25 Gbps |        88.25 Gbps
> Rx pps     |             0 pps |         7.33 Mpps |         7.33 Mpps
> ----       |                   |                   |
> opackets   |         223589643 |                 0 |         223589643
> ipackets   |                 2 |         199741988 |         199741990
> obytes     |      336278835072 |                 0 |      336278835072
> ibytes     |               180 |      300411956124 |      300411956304
> tx-pkts    |      223.59 Mpkts |            0 pkts |      223.59 Mpkts
> rx-pkts    |            2 pkts |      199.74 Mpkts |      199.74 Mpkts
> tx-bytes   |         336.28 GB |               0 B |         336.28 GB
> rx-bytes   |             180 B |         300.41 GB |         30
> 
> 
> vpp# show int
>               Name               Idx    State  MTU (L3/IP4/IP6/MPLS)
> Counter          Count
> HundredGigabitEthernet82/0/0      1      up          9000/0/0/0     rx
> packets            5038457978
>                                                                     rx
> bytes           7557686967000
>                                                                     tx
> packets                     8
>                                                                     tx
> bytes                     752
>                                                                     ip6
> 5038458089
>                                                                     rx-
> miss                    29522
> HundredGigabitEthernet83/0/0      2      up          9000/0/0/0     tx
> packets            5038458485
>                                                                     tx
> bytes           7557687717666
>                                                                     tx-
> error               526772148
> local0                            0     down          0/0/0/0
> 
> vpp# show err
>    Count                    Node                  Reason
>         14             ip6-icmp-input             router advertisements
> sent
>   32038454     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32036988     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32038478     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32027733     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32038748     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32042218     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32038604     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32029906     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32038974     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32041972     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32038119     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   32032684     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21625413     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21627658     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21627926     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21610610     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21618128     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21614224     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21615517     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
>   21617616     HundredGigabitEthernet83/0/0-tx    Tx packet drops (dpdk tx
> failure)
> 
> vpp# show int addr
> HundredGigabitEthernet82/0/0 (up):
>   L3 2d01:1111::1/64
> HundredGigabitEthernet83/0/0 (up):
>   L3 2d02:1111::1/64
> local0 (dn):
> vpp#
> vpp# show ip6 fib
> ipv6-VRF:0, fib_index:0, flow hash:[src dst sport dport proto ]
> locks:[src:plugin-hi:1, src:recursive-resolution:1, src:default-route:1, ]
> ::/0
>   unicast-ip6-chain
>   [@0]: dpo-load-balance: [proto:ip6 index:6 buckets:1 uRPF:15
> to:[6015241112:8938648292432]]
>     [0] [@19]: dpo-load-balance: [proto:ip6 index:19 buckets:1 uRPF:14
> to:[0:0] via:[6015241112:8938648292432]]
>           [0] [@5]: ipv6 via 2d02:1111::100 HundredGigabitEthernet83/0/0:
> mtu:9000 0c42a150d9860c42a150d98286dd
> 
> Hugepages:
> cat /proc/meminfo | grep Hu
> AnonHugePages:    114688 kB
> HugePages_Total:      60
> HugePages_Free:       54
> HugePages_Rsvd:        0
> HugePages_Surp:        0
> Hugepagesize:    1048576 kB
> 
> startup.conf
> unix {
>   nodaemon
>   log /var/log/vpp/vpp.log
>   full-coredump
>   cli-listen /run/vpp/cli.sock
>   gid vpp
> }
> 
> api-trace {
> ## This stanza controls binary API tracing. Unless there is a very strong
> reason,
> ## please leave this feature enabled.
>   on
> ## Additional parameters:
> ##
> ## To set the number of binary API trace records in the circular buffer,
> configure nitems
> ##
> ## nitems <nnn>
> ##
> ## To save the api message table decode tables, configure a filename.
> Results in /tmp/<filename>
> ## Very handy for understanding api message changes between versions,
> identifying missing
> ## plugins, and so forth.
> ##
> ## save-api-table <filename>
> }
> 
> api-segment {
>   gid vpp
> }
> 
> socksvr {
>   default
> }
> 
> cpu {
>         ## In the VPP there is one main thread and optionally the user can
> create worker(s)
>         ## The main thread and worker thread(s) can be pinned to CPU
> core(s) manually or automatically
> 
>         ## Manual pinning of thread(s) to CPU core(s)
> 
>         ## Set logical CPU core where main thread runs, if main core is
> not set
>         ## VPP will use core 1 if available
>         #main-core 3
> 
>         ## Set logical CPU core(s) where worker threads are running
>         #corelist-workers 5,7,9,11,13,15,17,19,21,23
> 
>         ## Automatic pinning of thread(s) to CPU core(s)
> 
>         ## Sets number of CPU core(s) to be skipped (1 ... N-1)
>         ## Skipped CPU core(s) are not used for pinning main thread and
> working thread(s).
>         ## The main thread is automatically pinned to the first available
> CPU core and worker(s)
>         ## are pinned to next free CPU core(s) after core assigned to main
> thread
>         skip-cores 2
> 
>         ## Specify a number of workers to be created
>         ## Workers are pinned to N consecutive CPU cores while skipping
> "skip-cores" CPU core(s)
>         ## and main thread's CPU core
>         workers 20
> 
>         ## Set scheduling policy and priority of main and worker threads
> 
>         ## Scheduling policy options are: other (SCHED_OTHER), batch
> (SCHED_BATCH)
>         ## idle (SCHED_IDLE), fifo (SCHED_FIFO), rr (SCHED_RR)
>         # scheduler-policy fifo
> 
>         ## Scheduling priority is used only for "real-time policies (fifo
> and rr),
>         ## and has to be in the range of priorities supported for a
> particular policy
>         # scheduler-priority 50
> }
> 
> buffers {
>         ## Increase number of buffers allocated, needed only in scenarios
> with
>         ## large number of interfaces and worker threads. Value is per
> numa node.
>         ## Default is 16384 (8192 if running unpriviledged)
>         buffers-per-numa 512000
> 
>         ## Size of buffer data area
>         ## Default is 2048
>         # default data-size 2048
> }
> 
> dpdk {
>         ## Change default settings for all interfaces
>         dev default {
>                 ## Number of receive queues, enables RSS
>                 ## Default is 1
>                 num-rx-queues 20
> 
>                 ## Number of transmit queues, Default is equal
>                 ## to number of worker threads or 1 if no workers treads
>                 num-tx-queues 20
> 
>                 ## Number of descriptors in transmit and receive rings
>                 ## increasing or reducing number can impact performance
>                 ## Default is 1024 for both rx and tx
>                 #num-rx-desc 2048
>                 #num-tx-desc 2048
> 
>                 ## VLAN strip offload mode for interface
>                 ## Default is off
>                 # vlan-strip-offload on
>         }
> 
>         ## Whitelist specific interface by specifying PCI address
>         dev 0000:82:00.0
>         dev 0000:83:00.0
>         #vdev
> eth_bond0,mode=2,slave=0000:02:00.0,slave=0000:03:00.0,slave=0000:81:00.0,
> xmit_policy=l34
>         #vdev
> eth_bond1,mode=2,slave=0000:02:00.1,slave=0000:03:00.1,slave=0000:81:00.1,
> xmit_policy=l34
> 
>         ## Blacklist specific device type by specifying PCI vendor:device
>         ## Whitelist entries take precedence
>         # blacklist 8086:10fb
> 
>         ## Set interface name
>         # dev 0000:02:00.1 {
>         #       name eth0
>         # }
> 
>         ## Whitelist specific interface by specifying PCI address and in
>         ## addition specify custom parameters for this interface
>         # dev 0000:02:00.1 {
>         #       num-rx-queues 2
>         # }
> 
>         ## Change UIO driver used by VPP, Options are: igb_uio, vfio-pci,
>         ## uio_pci_generic or auto (default)
>         # uio-driver vfio-pci
> 
>         ## Disable multi-segment buffers, improves performance but
>         ## disables Jumbo MTU support
>         # no-multi-seg
> 
>         ## Change hugepages allocation per-socket, needed only if there is
> need for
>         ## larger number of mbufs. Default is 256M on each detected CPU
> socket
>         socket-mem 2048,2048
> 
>         ## Disables UDP / TCP TX checksum offload. Typically needed for
> use
>         ## faster vector PMDs (together with no-multi-seg)
>         # no-tx-checksum-offload
> }
> 
> NICs:
> 
> Mellanox ConnectX-5 MCX555A-ECAT single port. x 2
> 
> [root@localhost v2.81]# ./dpdk_nic_bind.py  -s
> 
> Network devices using DPDK-compatible driver
> ============================================
> 0000:82:00.0 'MT27800 Family [ConnectX-5]' drv=mlx5_core
> unused=uio_pci_generic
> 0000:83:00.0 'MT27800 Family [ConnectX-5]' drv=mlx5_core
> unused=uio_pci_generic
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.

View/Reply Online (#16930): https://lists.fd.io/g/vpp-dev/message/16930
Mute This Topic: https://lists.fd.io/mt/75416173/21656
Mute #vpp: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/vpp
Mute #dpdk: https://lists.fd.io/g/fdio+vpp-dev/mutehashtag/dpdk
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to