[Serusers] Re: INVITE timeout
Greg Fausak
greg at august.net
Tue Feb 17 18:12:12 CET 2004
Andrei Pelinescu-Onciul wrote:
> On Feb 08, 2004 at 10:34, Greg Fausak <greg at august.net> wrote:
>
>>I'm thinking about a timer variable. Something like:
>>
>
>
> [...]
>
>>void set_timer_val( struct timer_link *new_tl, enum lists list_id,
>> unsigned int timeout )
>>{
>> struct timer* list;
>>
>> if (list_id<FR_TIMER_LIST || list_id>=NR_OF_TIMER_LISTS) {
>> LOG(L_CRIT, "ERROR: set_timer: unkown list: %d\n",
>>list_id);
>>#ifdef EXTRA_DEBUG
>> abort();
>>#endif
>> return;
>> }
>>
>> list= &(timertable->timers[ list_id ]);
>>
>> lock(list->mutex);
>> /* check first if we are on the "detached" timer_routine list,
>> * if so do nothing, the timer is not valid anymore
>> * (sideffect: reset_timer ; set_timer is not safe, a reseted timer
>> * might be lost, depending on this race condition ) */
>> if (new_tl->timer_list==DETACHED_LIST){
>> LOG(L_CRIT, "WARNING: set_timer called on a
>>\"detached\" timer"
>> " -- ignoring: %p\n", new_tl);
>> goto end;
>> }
>> /* make sure I'm not already on a list */
>> remove_timer_unsafe( new_tl );
>> add_timer_unsafe( list, new_tl, get_ticks()+timeout);
>
>
> The problem is add_timer_unsafe always adds at the end of the
> corresponding timer list which must be sorted. This is a speed
> improvement, because we have only fixed timer values per list and if we
> always add at the end the list will be always sorted (and we don't need
> to walk through it). If you add a variable timeout (not a fixed one) you
> won't have this property anymore.
> The problem with walking the list and comparing timeouts (to keep it
> sorted even if timeout is variable) is this list can get pretty big.
> 10000 entries is not unusual and it could get to 600000 entries in the
> worst case (on 5000cps capable machine under extreme stress conditions).
> It gets even worse: you have to lock the list when you walk it so you
> would prevent other ser processes from accessing the list during this
> time. It would have a pretty big performance impact under stress
> conditions.
>
>
I've got to figure out how to not timeout an outbound call.
Perhaps simply a different queue for outbound INVITES?
---greg
> Andrei
>
> _______________________________________________
> Serusers mailing list
> serusers at lists.iptel.org
> http://lists.iptel.org/mailman/listinfo/serusers
>
>
More information about the sr-users
mailing list