[reSIProcate] [reSIProcate-users] Optimization of Random class, threads and epoll

Francis Joanis francis.joanis at gmail.com
Tue Mar 1 08:49:25 CST 2011


Hi Kennard,

Thanks a lot for those updates.

Regarding the SipStack Event Loop:

(note that I'm in the process of testing your changes, so I might be able to
answer my own questions along the way ;))

The app I'm currently working on utilizes its own sockets to perform other
tasks. For example, it has one TCP socket used to listen/send RPC commands.
By using the traditional "FdSet" style socket loop, I simply add my own
socket to the FdSet and piggy back on the single set.selectMilliSecond(..)
call. Once select returns, I just need to check if my socket was ready and
then I perform some actions on it.

This is great because it enables easy integration of custom sockets within
the main SipStack reactor loop: it serializes all events in my application,
which simplifies it a lot.

If we are to remove the FdSet style loop from reSIProcate I strongly suggest
that we keep the ability to use the event loop with other application
sockets. I only had a quick glance, but it looks like this might be
achievable by using a custom EventStackThread class that would perform
application-specific actions on custom sockets.

Cheers,
Francis


On Mon, Feb 28, 2011 at 3:37 PM, Kennard White
<kennard_white at logitech.com>wrote:

> Hi folks,
>
> There are some new features in resip trunk:
>
>
>    1. The rutil/Random class has some new options to support better random
>    number generation, especially for multi-threaded applications running on
>    multiple core machines. See
>    http://www.resiprocate.org/Random_number_generation for details. That
>    page also includes some interesting performance results. There are
>    (different) improvements available for both Windows and POSIXs. The new
>    Windows support is based upon work by jgeras at ctpc. The default behavior
>    hasn't changed.
>    2. The callback-based event loop mechanism (that was originally created
>    to provide epoll support) now has a select() based implementation and thus
>    can be used on all platforms. This allows applications to construct the
>    stack in a single style for all platforms, and take advantage of epoll on
>    those platforms that support it. See
>    http://www.resiprocate.org/SipStack_Event_Loop for more information.
>    That page also includes some Linux-based performance results.
>    3. The POSIX configure script has been extended for both the Random
>    number generation and epoll support. See
>    https://www.resiprocate.org/Configuration_Options for details.
>    4. The rutil/Data class has some new low-level methods for higher
>    performance operation. Most users wont want to use these methods, but they
>    help avoid unneeded copies in certain cases.
>    5. Fix for contrib/ares (aka resip-ares) to correctly handle IPv6 for
>    certain initialization paths. Credits to ximalaya <ims3g at 126.com> for
>    finding and fixing this one.
>
> Regards,
> Kennard
>
> _______________________________________________
> resiprocate-users mailing list
> resiprocate-users at resiprocate.org
> List Archive: http://list.resiprocate.org/archive/resiprocate-users/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20110301/fcf2f2f6/attachment.htm>


More information about the resiprocate-devel mailing list