Hello, I am trying to use vpp with 4 worker threads. Client is sending packet to server through vpp. This packet comes to vpp, and gets picked up from a VF. VPP sends this packet to the another user-space application over a tapcli interface. The user-space application processes the packet, and then sends it back to vpp. Vpp forwards the packet to the server.
I am using vpp with 4 worker threads. Without the traffic, four worker threads are all showing ~100% cpu usage (which is expected). However, with traffic, the vpp main thread is also showing ~100% cpu usage. I do not want vpp main thread to reach 100% cpu. With the limited knowledge that I have on vpp, it seems like main thread is doing lots of processing in the tapcli-rx node. Is there a way to keep vpp main relatively free? Is tap interface the correct choice to communicate between vpp and another user-space application? If not, what should be used? I have tried this on both vpp 18.07 and 18.10. vpp# show run Thread 0 vpp_main (lcore 2) Time 916.9, average vectors/node 40.16, last 128 main loops 0.00 per node 0.00 vector rates in 1.3178e5, out 1.3178e5, drop 1.3087e-2, punt 0.0000e0 Name State Calls Vectors Suspends Clocks Vectors/Call VirtualFunctionEthernet3/10/1- active 3008704 120840447 0 1.36e1 40.16 VirtualFunctionEthernet3/10/1- active 3008704 120840447 0 1.02e2 40.16 acl-plugin-fa-cleaner-process event wait 0 0 1 1.85e4 0.00 admin-up-down-process event wait 0 0 1 1.20e3 0.00 api-rx-from-ring any wait 0 0 50 7.80e4 0.00 arp-input active 1 1 0 2.39e6 1.00 avf-process event wait 0 0 1 2.14e3 0.00 bfd-process event wait 0 0 1 1.84e3 0.00 bond-process event wait 0 0 1 1.44e3 0.00 cdp-process any wait 0 0 1 1.38e7 0.00 dhcp-client-process any wait 0 0 10 1.02e4 0.00 dhcp6-client-cp-process any wait 0 0 1 1.07e3 0.00 dhcp6-pd-client-cp-process any wait 0 0 1 9.28e2 0.00 dhcp6-pd-reply-publisher-proce event wait 0 0 1 8.88e2 0.00 dhcp6-reply-publisher-process event wait 0 0 1 1.02e3 0.00 dns-resolver-process any wait 0 0 1 2.18e3 0.00 dpdk-ipsec-process done 1 0 0 1.29e5 0.00 dpdk-process any wait 0 0 306 5.73e4 0.00 error-drop active 11 12 0 5.73e3 1.09 ethernet-input active 3008710 120840454 0 3.78e1 40.16 fib-walk any wait 0 0 459 3.03e3 0.00 flow-report-process any wait 0 0 1 6.92e2 0.00 flowprobe-timer-process any wait 0 0 1 3.09e3 0.00 igmp-timer-process event wait 0 0 1 2.18e3 0.00 ikev2-manager-process any wait 0 0 916 2.46e3 0.00 ioam-export-process any wait 0 0 1 1.10e3 0.00 ip-neighbor-scan-process any wait 0 0 16 7.03e3 0.00 ip-route-resolver-process any wait 0 0 10 8.13e3 0.00 ip4-glean active 2 2 0 9.34e3 1.00 ip4-input active 3008704 120840447 0 4.03e1 40.16 ip4-lookup active 3008704 120840447 0 3.67e1 40.16 ip4-reassembly-expire-walk any wait 0 0 92 3.96e3 0.00 ip4-rewrite active 3008702 120840445 0 3.08e1 40.16 ip6-icmp-neighbor-discovery-ev any wait 0 0 916 2.00e3 0.00 ip6-input active 5 6 0 1.17e3 1.20 ip6-not-enabled active 5 6 0 5.45e2 1.20 ip6-reassembly-expire-walk any wait 0 0 92 4.30e3 0.00 l2fib-mac-age-scanner-process event wait 0 0 1 1.78e3 0.00 lacp-process event wait 0 0 1 1.41e7 0.00 lisp-retry-service any wait 0 0 459 4.11e3 0.00 lldp-process event wait 0 0 1 1.31e7 0.00 memif-process event wait 0 0 1 4.28e3 0.00 nat-det-expire-walk done 1 0 0 1.23e3 0.00 nat64-expire-walk event wait 0 0 1 1.46e4 0.00 rd-cp-process any wait 0 0 1 9.16e2 0.00 send-dhcp6-client-message-proc any wait 0 0 1 2.88e3 0.00 send-dhcp6-pd-client-message-p any wait 0 0 1 1.02e3 0.00 send-garp-na-process event wait 0 0 1 2.88e4 0.00 send-rs-process any wait 0 0 1 1.24e3 0.00 startup-config-process done 1 0 1 3.75e3 0.00 tapcli-rx interrupt wa 5382120 120840506 0 2.42e3 22.45 udp-ping-process any wait 0 0 1 5.70e3 0.00 unix-cli-local:6 active 6 0 757 3.46e15 0.00 unix-epoll-input polling 16312904 0 0 6.94e4 0.00 vhost-user-process any wait 0 0 1 1.32e4 0.00 vhost-user-send-interrupt-proc any wait 0 0 1 1.03e3 0.00 vpe-link-state-process event wait 0 0 3 4.95e3 0.00 vpe-oam-process any wait 0 0 450 2.86e3 0.00 vxlan-gpe-ioam-export-process any wait 0 0 1 8.76e2 0.00 wildcard-ip4-arp-publisher-pro event wait 0 0 1 1.09e3 0.00 --------------- Thread 1 vpp_wk_0 (lcore 3) Time 916.9, average vectors/node 1.43, last 128 main loops 0.00 per node 0.00 vector rates in 3.2809e4, out 3.2809e4, drop 5.6599e-1, punt 0.0000e0 Name State Calls Vectors Suspends Clocks Vectors/Call arp-input active 518 518 0 7.74e3 1.00 dpdk-input polling 3205687180 30084768 0 4.31e4 0.00 error-drop active 519 519 0 1.28e3 1.00 ethernet-input active 518 518 0 1.73e3 1.00 ip4-glean active 1 1 0 6.62e4 1.00 ip4-input-no-checksum active 20966739 30084250 0 3.64e2 1.43 ip4-lookup active 20966739 30084250 0 2.46e2 1.43 ip4-rewrite active 20966738 30084249 0 1.93e2 1.43 tapcli-0-output active 20966739 30084250 0 2.03e2 1.43 tapcli-0-tx active 20966739 30084250 0 1.29e4 1.43 --------------- Thread 2 vpp_wk_1 (lcore 4) Time 916.9, average vectors/node 1.45, last 128 main loops 0.00 per node 0.00 vector rates in 3.2819e4, out 3.2819e4, drop 0.0000e0, punt 0.0000e0 Name State Calls Vectors Suspends Clocks Vectors/Call dpdk-input polling 3062149112 30094113 0 4.24e4 0.00 ip4-input-no-checksum active 20687846 30094113 0 3.67e2 1.45 ip4-lookup active 20687846 30094113 0 2.59e2 1.45 ip4-rewrite active 20687846 30094113 0 2.03e2 1.45 tapcli-0-output active 20687846 30094113 0 2.11e2 1.45 tapcli-0-tx active 20687846 30094113 0 1.31e4 1.45 --------------- Thread 3 vpp_wk_2 (lcore 5) Time 916.9, average vectors/node 1.46, last 128 main loops 0.00 per node 0.00 vector rates in 3.2774e4, out 3.2774e4, drop 2.4428e-1, punt 0.0000e0 Name State Calls Vectors Suspends Clocks Vectors/Call dpdk-input polling 2997474079 30052436 0 4.33e4 .01 error-drop active 224 224 0 1.57e3 1.00 ip4-drop active 224 224 0 8.69e2 1.00 ip4-input-no-checksum active 20609931 30052436 0 3.74e2 1.46 ip4-lookup active 20609931 30052436 0 2.64e2 1.46 ip4-rewrite active 20609737 30052212 0 2.01e2 1.46 tapcli-0-output active 20609737 30052212 0 2.15e2 1.46 tapcli-0-tx active 20609737 30052212 0 1.31e4 1.46 --------------- Thread 4 vpp_wk_3 (lcore 6) Time 916.9, average vectors/node 1.45, last 128 main loops 0.00 per node 0.00 vector rates in 3.2811e4, out 3.2811e4, drop 0.0000e0, punt 0.0000e0 Name State Calls Vectors Suspends Clocks Vectors/Call dpdk-input polling 3135905643 30086296 0 4.30e4 0.00 ip4-input-no-checksum active 20714610 30086296 0 3.74e2 1.45 ip4-lookup active 20714610 30086296 0 2.55e2 1.45 ip4-rewrite active 20714610 30086296 0 1.97e2 1.45 tapcli-0-output active 20714610 30086296 0 2.04e2 1.45 tapcli-0-tx active 20714610 30086296 0 1.31e4 1.45 Here is one of the packets traced on vpp main thread. vpp# show trace ------------------- Start of thread 0 vpp_main ------------------- Packet 1 00:11:26:605715: tapcli-rx tapcli-0 00:11:26:605725: ethernet-input IP4: c2:aa:32:4f:d8:1c -> 02:fe:d9:0f:5c:f4 00:11:26:605741: ip4-input TCP: 10.0.1.1 -> 172.18.60.74 tos 0x00, ttl 64, length 60, checksum 0x475f fragment id 0x0000, flags DONT_FRAGMENT TCP: 82 -> 60818 seq. 0xcbbfa586 ack 0x36bb48c6 flags 0x12 SYN ACK, tcp header: 40 bytes window 28960, checksum 0xab2b 00:11:26:605748: ip4-lookup fib 0 dpo-idx 3 flow hash: 0x00000000 TCP: 10.0.1.1 -> 172.18.60.74 tos 0x00, ttl 64, length 60, checksum 0x475f fragment id 0x0000, flags DONT_FRAGMENT TCP: 82 -> 60818 seq. 0xcbbfa586 ack 0x36bb48c6 flags 0x12 SYN ACK, tcp header: 40 bytes window 28960, checksum 0xab2b 00:11:26:605754: ip4-rewrite tx_sw_if_index 1 dpo-idx 3 : ipv4 via 172.18.60.74 VirtualFunctionEthernet3/10/1: mtu:9000 ac1f6b17f379da78bd634ef70800 flow hash: 0x00000000 00000000: ac1f6b17f379da78bd634ef708004500003c000040003f06485f0a000101ac12 00000020: 3c4a0052ed92cbbfa58636bb48c6a0127120ab2b0000020405b40402 00:11:26:605755: VirtualFunctionEthernet3/10/1-output VirtualFunctionEthernet3/10/1 IP4: da:78:bd:63:4e:f7 -> ac:1f:6b:17:f3:79 TCP: 10.0.1.1 -> 172.18.60.74 tos 0x00, ttl 63, length 60, checksum 0x485f fragment id 0x0000, flags DONT_FRAGMENT TCP: 82 -> 60818 seq. 0xcbbfa586 ack 0x36bb48c6 flags 0x12 SYN ACK, tcp header: 40 bytes window 28960, checksum 0xab2b 00:11:26:605758: VirtualFunctionEthernet3/10/1-tx VirtualFunctionEthernet3/10/1 tx queue 0 buffer 0x23e5a0: current data 0, length 74, free-list 0, clone-count 0, totlen-nifb 0, trace 0x0 l2-hdr-offset 0 l3-hdr-offset 14 PKT MBUF: port 65535, nb_segs 1, pkt_len 74 buf_len 2176, data_len 74, ol_flags 0x0, data_off 128, phys_addr 0xe7996880 packet_type 0x0 l2_len 0 l3_len 0 outer_l2_len 0 outer_l3_len 0 rss 0x0 fdir.hi 0x0 fdir.lo 0x0 IP4: da:78:bd:63:4e:f7 -> ac:1f:6b:17:f3:79 TCP: 10.0.1.1 -> 172.18.60.74 tos 0x00, ttl 63, length 60, checksum 0x485f fragment id 0x0000, flags DONT_FRAGMENT TCP: 82 -> 60818 seq. 0xcbbfa586 ack 0x36bb48c6 flags 0x12 SYN ACK, tcp header: 40 bytes window 28960, checksum 0xab2b
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#11999): https://lists.fd.io/g/vpp-dev/message/11999 Mute This Topic: https://lists.fd.io/mt/29534956/21656 Mute #vpp: https://lists.fd.io/mk?hashtag=vpp&subid=1480452 Group Owner: vpp-dev+ow...@lists.fd.io Unsubscribe: https://lists.fd.io/g/vpp-dev/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-