Re: [PATCH v4 net-next 2/3] net/udp: Add 4-tuple hash list basis

From: Philo Lu
Date: Wed Oct 16 2024 - 04:47:52 EST




On 2024/10/16 15:45, Paolo Abeni wrote:
On 10/16/24 08:30, Philo Lu wrote:
On 2024/10/14 18:07, Paolo Abeni wrote:
It would be great if you could please share some benchmark showing the
raw max receive PPS performances for unconnected sockets, with and
without this series applied, to ensure this does not cause any real
regression for such workloads.


Tested using sockperf tp with default msgsize (14B), 3 times for w/ and
w/o the patch set, and results show no obvious difference:

[msg/sec]  test1    test2    test3    mean
w/o patch  514,664  519,040  527,115  520.3k
w/  patch  516,863  526,337  527,195  523.5k (+0.6%)

Thank you for review, Paolo.

Are the value in packet per seconds, or bytes per seconds? Are you doing a loopback test or over the wire? The most important question is: is the receiver side keeping (at least) 1 CPU fully busy? Otherwise the test is not very relevant.


It's in packet per seconds (msg/sec). I make the cpu fully busy by binding the nic irq the same cpu with the server socket. The consumption is like:

%Cpu0:
3.0 us, 35.0 sy, 0.0 ni, 0.0 id, 0.0 wa, 7.0 hi, 55.0 si, 0.0 st

It looks like you have some setup issue, or you are using a relatively low end H/W: the expected packet rate for reasonable server H/W is well above 1M (possibly much more than that, but I can't put my hands on recent H/W, so I can't provide a more accurate figure).

A single socket, user-space, UDP sender is usually unable to reach such tput without USO, and even with USO you likely need to do an over-the- wire test to really be able to keep the receiver fully busy. AFAICS sockperf does not support USO for the sender.

You could use the udpgso_bench_tx/udpgso_bench_rx pair from the net selftests directory instead.


Thank you for your suggestion. I'll try it to see if I can get higher pps.
--
Philo