Hi everybody,
following to some discussions / requests from users, openser devel
branch has now core support for timers will resolution less than a
second. It uses time functions that can give a microsecond accuracy, but
for performance reasons, the utimer (microtimer) uses a ticking period
of 100 milliseconds. Of course, this can be changed at compile time.
First "beneficiary" of this timer, is TM, to gain more accuracy for
retransmissions:
* retransmission timers use the the core utimer (with microsecond
resolution),
having 100 milliseconds intervals.
* this will increase the retransmissions precision to an error of maximum
100 milliseconds.
* T1 (first retransmission) is done at 500 milliseconds (instead of 1
sec), as
the RFC3261 suggests.
* T1 and T2 (see RFC3261) can be configured via module parameters - the
inter-steps are automatically computed on startup based on the RFC3261
specifications.
Along with increasing the timer accuracy, the TM timer lists were
improved for faster operations:
* faster timers lists - use shortcut pointers (based on timeout values) for
faster walking through the list -> faster insert and expire
* for elements to be deleted from the timer lists, do not overwrite the
timeout
value as this will trigger more processing when inserting new elements
into
the list
The performance tests are not completed - I need more machines to stress
the proxy :D -, but I will come back with results during the testing phase.
regards,
bogdan