> > Hi, > > > > Trying AF_XDP xdpsock txonly on an i40e (XL710), I'm seeing some > > behaviour across packet size that I need help to understand. > > > > All tests with zero-copy mode (similar results with busy poll mode > > also). The i40e driver version is the native kernel version 6.8.0-47 > > included in Ubuntu 24.04. Flow control tx/rx is off. > > > > PktSize Max-pps Actual-pps > > 64 > > 59.5M ~18.9M > > 512 > > 9.4M ~7.5M > > 1024 > > 4.8M ~4.6M > > 1518 > > 3.3M ~3.0M > > > > Output logs below > > > > Since 64 byte packets can do around ~18.9M, I was expecting larger > > packets (see 512 and 1518 above) to do line rate i.e. do close to > > max-pps but they do less than that. > > > > Is this expected? > > I think it is hard to hit exactly line rate. Note that each queue on > i40e can deliver max ~21 Mpps. How about trying with multiple queues > and see what you get? With multiple queues it works. The question is if I need to send X fps at Y packet size, how to determine the number of queues required for the same. My assumption that the driver code is purely (primarily?) pps dependent and agnostic of packet size is not correct, it seems. Looks like the only way to know is to try various rates at various packet sizes on the specific NIC and pre-build a sort of database or have some sort of Tx rate monitoring and dynamically adjust the number of queues during Tx if the initial number of queues seem insufficient. > > What factors could be playing a role in a lower rate for larger packet size? > > > > To determine how many cores/queues I need if I need to transmit X Gbps > > - what factors do I need to use? > > > > Srivats > > > > $ sudo ./xdpsock -t -i enp1s0f0np0 -z -d5 -s64 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 1,88,28,546 1,88,39,104 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 1,88,25,658 3,76,73,792 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 1,92,29,105 5,69,07,520 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 1,96,44,299 7,65,55,904 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 1,96,46,711 9,62,06,336 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 0.00 > > rx 0 0 > > tx 0 9,62,06,720 > > > > > > $ sudo ./xdpsock -t -i enp1s0f0np0 -z -d5 -s512 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 75,09,247 75,11,104 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 74,89,511 1,50,01,856 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 74,98,753 2,25,01,568 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 74,86,126 2,99,88,672 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 74,86,807 3,74,76,416 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 0.00 > > rx 0 0 > > tx 0 3,74,76,416 > > > > > > $ sudo ./xdpsock -t -i enp1s0f0np0 -z -d5 -s1024 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 46,01,574 46,02,496 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 45,95,655 91,98,912 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 45,95,058 1,37,94,432 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 45,97,400 1,83,92,256 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 45,84,541 2,29,77,152 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 0.00 > > rx 0 0 > > tx 0 2,29,77,216 > > > > $ sudo ./xdpsock -t -i enp1s0f0np0 -z -d5 -s1518 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 30,00,232 30,00,960 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 29,94,793 59,96,224 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 29,95,064 89,91,616 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 29,96,147 1,19,88,160 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 1.00 > > rx 0 0 > > tx 29,94,991 1,49,83,552 > > > > sock0@enp1s0f0np0:0 txonly xdp-drv > > pps pkts 0.00 > > rx 0 0 > > tx 0 1,49,83,552 > >
![]() |