UDP performance.

Robert Watson rwatson at FreeBSD.org
Tue Mar 6 12:47:39 UTC 2007


On Mon, 5 Mar 2007, David Gilbert wrote:

>>>>>> "Dinesh" == Dinesh Nair <dinesh at alphaque.com> writes:
>
> Dinesh> On Wed, 28 Feb 2007 01:06:33 -0800, Peter Losher
> Dinesh> <Peter_Losher at isc.org> wrote:
>
>>> Ivan Voras wrote:
>>>
>>>> I agree in general, but MySQL performance is very exposed as an advocacy 
>>>> issue - it has traditionally been the source of statements like 
>>>> "FreeBSD's threading implementation is weak/bad/broken".
>>>
>>> And these days ISC can't consciously recommend FreeBSD for use on 
>>> high-traffic DNS servers because UDP performance has (frankly) gone 
>>> downhill since 5.x.  [..snipped..] 
>>> http://lists.freebsd.org/pipermail/freebsd-net/2006-September/011748.html
>
> Dinesh> if UDP performance in 6.x and 7.x has dropped, this could even 
> Dinesh> affect voip applications/servers such as asterisk when run on 
> Dinesh> FreeBSD. most all use RTP for media traffic and RTP is nearly 
> Dinesh> always UDP generating up to 50 packets per second per call per 
> Dinesh> direction.
>
> Dinesh> 14,000+ packets per second is only about 140 calls.
>
> Well... again, BIND is not a good indicator of UDP performance.  A 
> non-trivial application can send and receive about 250k pps on moderate 
> hardware.

One of the problems ISC diagnosed had to do with the highly unusual workload 
pattern of UDP: many different threads simultaneously sending using a single 
socket leading to unnecessary socket buffer contention.  The previously posted 
patches may help with this problem.  So far I've not had any feedback on the 
RELENG_6 patches, which I'm happy to commit once I've had reports of both good 
stability and a performance improvement.  This patch won't help more 
traditional UDP workloads, in which aplications use different sockets to serve 
different instances of the service, so access each socket from only one 
thread.

Portions of the patch would also support future MFC's of other socket-related 
performance optimizations and cleanups going on in FreeBSD 7.x, such as 
Andre's recent work on optimized TCP send.

Robert N M Watson
Computer Laboratory
University of Cambridge


More information about the freebsd-performance mailing list