I believe you are right, and in fact was about to post a "dont look at this patch"
since it doesnt help the multicast reception at all, I redone tests more carefuly
and got nothing but noise.
We have a cache line ping pong mess here, and need more thinking.
I rewrote Kenny prog to use non blocking sockets.
Receivers are doing :
int delay = 50;
fcntl(s, F_SETFL, O_NDELAY);
while(1)
{
struct sockaddr_in from;
socklen_t fromlen = sizeof(from);
res = recvfrom(s, buf, 1000, 0, (struct sockaddr*)&from, &fromlen);
if (res == -1) {
delay++;
usleep(delay);
continue;
}
if (delay > 40)
delay--;
++npackets;
With this litle user space change and 8 receivers on my dual quad core, softirqd
only takes 8% of one cpu and no drops at all (instead of 100% cpu and 30% drops)
So this is definitly a problem mixing scheduler cache line ping pongs with network
stack cache line ping pongs.
We could reorder fields so that fewer cache lines are touched by the softirq processing,
I tried this but still got packet drops.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html