In article <20011023002402.ACDD27E1C@pasta.sw.starentnetworks.com>, Grant Taylor <gtaylor@pasta.picante.com> writes: >>>>>> kuznet@ms2.inr.ac.ru writes: >> No matter, this ping-pong is something absolutely unavoidable anyway. >> It is the thing which you have to pay for using one socket on several cpus. >>> Around 650 samples are in the inline sin_zero memset, which seems odd >>> since the pad size declaration works out to 0 in in.h. Is there > So I missed by a line; the big thing there is the skb->foo references > on the lines before where it fills in addr. > Each of the four hot spots in my profile is a read reference to data > in the skb. So Alexey wins the virtual beer; it's undoubtedly a cache > flopping problem between the two CPUs. One hack that you could try is to insert prefetches for the critical fields early (as early as you know you need them). This would allow to hide some latency in other code. Later 2.4 has macros for that: prefetch and prefetchw. You should have an CPU that supports prefetching of course: PIII+ or 3dnow! and a kernel compiled to support them. It'll probably not help that much though, because the time from knowing that you need an skb to actually processing it is not too long in UDP. -Andi - : send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html