Merge branch 'net-improve-multicast-group-join-performance'
authorDavid S. Miller <davem@davemloft.net>
Wed, 9 Oct 2024 11:50:11 +0000 (12:50 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Oct 2024 11:50:11 +0000 (12:50 +0100)
commit2a80d89256dfd6af7d07a38dd4002f9e9fd782a1
treecc85f0918ed95a7a898a069673ea967ad0f5f286
parent20503272422693d793b84f88bf23fe4e955d3a33
parent298f70b37144217c580490fddfcda850213f5250
Merge branch 'net-improve-multicast-group-join-performance'

Jonas Rebmann says:

====================
improve multicast join group performance

This series seeks to improve performance on updating igmp group
memberships such as with IP_ADD_MEMBERSHIP or MCAST_JOIN_SOURCE_GROUP.

Our use case was to add 2000 multicast memberships on a TQMLS1046A which
took about 3.6 seconds for the membership additions alone. Our userspace
reproducer tool was instrumented to log runtimes of the individual
setsockopt invocations which clearly indicated quadratic complexity of
setting up the membership with regard to the total number of multicast
groups to be joined. We used perf to locate the hotspots and
subsequently optimized the most costly sections of code.

This series includes a patch to Linux igmp handling as well as a patch
to the DPAA/Freescale driver. With both patches applied, our memberships can
be set up in only about 87 miliseconds, which corresponds to a speedup
of around 40.

While we have acheived practically linear run-time complexity on the
kernel side, a small quadratic factor remains in parts of the freescale
driver code which we haven't yet optimized. We have by now payed little
attention to the optimization potential in dropping group memberships,
yet the dpaa patch applies to joining and leaving groups alike.

Overall, this patch series brings great improvements in use cases
involving large numbers of multicast groups, particularly when using the
fsl_dpa driver, without noteworthy drawbacks in other scenarios.
====================

Signed-off-by: Jonas Rebmann <jre@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>