Re: UDP performance.



On Mon, 5 Mar 2007, David Gilbert wrote:

"Dinesh" == Dinesh Nair <dinesh@xxxxxxxxxxxx> writes:

Dinesh> On Wed, 28 Feb 2007 01:06:33 -0800, Peter Losher
Dinesh> <Peter_Losher@xxxxxxx> 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
_______________________________________________
freebsd-performance@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-performance
To unsubscribe, send any mail to "freebsd-performance-unsubscribe@xxxxxxxxxxx"



Relevant Pages

  • Re: SetSockOpt with SO_REUSEADDR parameter
    ... So I create multiple UDP sockets with the same port to send data. ... happening is that you are throwing away the old socket and replacing it with the new ... When the second client is connecting to server, I still get the error code ...
    (microsoft.public.vc.mfc)
  • Re: Socket connect vs. bind? What is the difference
    ... Actually, if you're doing UDP Multicast, you don't need to connect. ... to call Connect to establish a TCP connection to the remote IPEndPoint. ... is connectionless, so it isn't even necessary to establish a connection to ... It can be set with an overload of the Socket constructor. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Strange UDP Socket problem
    ... You can catch that exception and move on. ... never get any udp reply back to post an exception. ... >> I suspect you would get the same response if you used one thread to send ... >> thread on same socket. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: UDP dont fragment bit
    ... >> fragments or let the routers generate the fragments. ... we don't generate UDP with the IP DF bit set. ... > there's no real reporting of the resulting ICMP MTU messages to UDP ... > recent ICMP received state on the socket. ...
    (freebsd-net)
  • Re: Multi-threading with multi-port server
    ... Can I ask your guidance on how to imeplement server with multi- ... threading and multi-port? ... If you use asynchronous sockets then all socket calls return quickly and you can run several sockets concurrently in the main thread. ...
    (microsoft.public.vc.mfc)