[Users] Usrloc performance

Bogdan-Andrei Iancu bogdan at voice-system.ro
Fri Mar 10 10:18:36 CET 2006


Hi Teemu,

this is a very interesting test :).

the increased CPU load is a result on the increased number of AOR 
records in the usrloc hash table - for each register, the usrloc module 
will try to see first if the user (AOR) is already registered or 
not....this means searching through the hash table...and as loaded the 
table is as higher the CPU load will be.

you may experiment by increasing the hash table size in order to reduce 
the number of collisions per branch (by default there are only 512 hash 
branches, so for 450K of distinctive users, you will have ~ 900 AORs per 
branch).
if you want to change it, see the modules/usrloc/dlist.c line 341 (for 
unstable) :
       if (new_udomain(&(ptr->name), 512, &(ptr->d)) < 0) {

maybe in the future the hash size should be controllable via module 
parameter.
NOTE that the size must be a power of 2!!


now, regarding the peeks.....the decreasing load may be a result of 
expiring contacts -> the load of the table decrees and so the CPU 
load....what is the expire of the registrations?

regards,
bogdan

Teemu Harju wrote:

> Hi!
>
> I've been running some performance tests on my OpenSER box and while 
> registering large number of users I faced some very strange problems. 
> At least they seem strange to me, but I hope someone on this list 
> would be able to shed some light on this.
>
> So, I use Openser 1.0.1 and I load test it using SIPp. I've done tests 
> creating about 1000 registrations per second registering 300k-450k 
> different users. Register rate is constat and for each register 
> different user is used. What is strange to me that just about when 
> 300k users have registered the CPU of the PC running the proxy hits 
> 100% usage and messages start dropping. I made a nice image to 
> illustrate my problem using Excel. I attached it to this mail. On this 
> test I registered 300k different users at 1000 RPS and after 
> registering those users the registering starts again from the 
> beginning. As you can see from it the CPU usage rises constantly and 
> drops immediately after I've registered 300k users and the registering 
> starts again from the start. So then each user is being registered all 
> over again, but still the CPU load grows. Does anyone have explanation 
> for this? Why does the CPU usage grow based on the number of users 
> registered? And why does it drop for a while when registering starts 
> all over again? I've tried different usrloc modes, but there seems to 
> be no difference. This one was done with having usrloc only in the 
> memory.
>
> Regards,
>
> Teemu
>
> -- 
> Teemu Harju
> http://www.teemuharju.net
> ------------------------------------------------------------------------






More information about the sr-users mailing list