[Opensim-dev] Question about the udp receiver algorithm

Dahlia Trimble dahliatrimble at gmail.com
Sat Apr 26 03:09:56 UTC 2014


Depends on what you mean by "services the packets". Decoding and ACKing
could probably work well in a socket read loop but dispatching the packet
to the proper part of the simulation could incur many delays which can
cause a lot of packet loss in the lower level operating system routines as
the buffers are only so large and any excessive data is discarded. Putting
them in a queue for another thread to service is a good compromise which
tends to keep things working under most load conditions.

However, if your design seems to improve things under a wide range of
operating conditions, feel free to submit a patch! But please don't expect
it to be accepted as it may need a *lot* of testing to show it's benefit
over the current implementation.




On Fri, Apr 25, 2014 at 7:45 PM, Matt Lehmann <mattlehma at gmail.com> wrote:

> As of the last release, the algorithm for handling udp packets from
> clients is as so...
>
>    Start an async read cycle on the socket, adding packets  to a blocking
> queue.
>    Also start a smart thread which waits on the queue and services the
> packets.
>
> Wouldn't it be more efficient to use a single thread that waits on the
> socket by looping on a socket.poll call,  immediately servicing packets?
>
> I have tried this locally and I really think it would improve
> efficiency.   If you want I can submit a patch.
>
> Thanks
>
> Matt
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at opensimulator.org
> http://opensimulator.org/cgi-bin/mailman/listinfo/opensim-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://opensimulator.org/pipermail/opensim-dev/attachments/20140425/63576f4e/attachment-0001.html>


More information about the Opensim-dev mailing list