From: Jesper Dangaard Brouer <jbrouer@xxxxxxxxxx> Date: Thu, 9 Mar 2023 17:43:51 +0100 [...] >> Some numbers on 1 Xeon Platinum core bombed with 27 Mpps of 64-byte >> IPv6 UDP, iavf w/XDP[0] (CONFIG_PAGE_POOL_STATS is enabled): >> >> Plain %XDP_PASS on baseline, Page Pool driver: >> >> src cpu Rx drops dst cpu Rx >> 2.1 Mpps N/A 2.1 Mpps >> >> cpumap redirect (w/o leaving its node) on baseline: > > What does it mean "without leaving its node" ? > I interpret this means BPF program CPU redirect to "same" CPU ? > Or does the "node" reference a NUMA node? Yes, NUMA node. It's a two-socket system. I redirect to a different physical core, but within one NUMA node. When crossing nodes, results usually are likely worse. > >> >> 6.8 Mpps 5.0 Mpps 1.8 Mpps >> >> cpumap redirect with skb PP recycling: > > Does this test use two CPUs? Yes, one serves interrupt / NAPI polling function and then redirects all packets to a different core, which passes them up the stack. These drops come from that the "source" CPU handles the queue much faster than the "dest" one is able to process (no GRO on cpumap yet* + software checksum computation + ...). Still faster than XDP_PASS when one CPU does everything. * well, there is cpumap GRO implementation in my repo, but without hardware checksum status it's pretty useless and currently there's no hints support in cpumap. So I didn't send it standalone (for now). > >> >> 7.9 Mpps 5.7 Mpps 2.2 Mpps >> +22% (from cpumap redir on baseline) >> [0] https://github.com/alobakin/linux/commits/iavf-xdp [...] Thanks, Olek