[reSIProcate] resip transaction state memory utilization in UDP

Kennard White kennard_white at logitech.com
Thu Dec 16 00:01:17 CST 2010


Hi,

I've been working on optimizing resip stack thruput, primarily in the
context of handling many connections. Something I've noticed is that a large
amount of memory is consumed when using UDP transports. Once I got past
thinking this was a bug I had introduced, I realized this memory is probably
state kept in within the transaction layer to handle retransmissions. (I'm
not using dum, so not a lot of other places it could be :-).

The amount of state appears quite large: Using testStack (which handles both
"ends" of the transaction), with 50k requests within 10sec window, the
memory utilization is around 620MB (compared to around 80MB when
transmissions are throttled). This is around 6kB per transaction-half. This
state is all properly released after the 32sec window. In theory, peak
memory utilization is around 5k tps * 32sec * 6kB = 960MB = ~1GB.

Are there any thoughts on how the transaction memory could be reduced?
Clearly, this isn't just timers. More likely it is copies of SipMessages. On
the UAC side, is the request message released once the response is received?
On the UAS side, is the request message released once the response has been
generated? I'm just looking for a sense of how much this has already been
optimized, and if this has already been investigated.

Thanks,
Kennard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20101215/b560813a/attachment.htm>


More information about the resiprocate-devel mailing list