I am using the rlm_perl module for accounting purposes.
I tried to benchmark the whole process by doing something like this :

sub accounting{

   start_benchmark();

   // acct start code here

   stop_benchmark();

   send_bench_results_using_udp();

}

sub stop_accounting{

   start_benchmark();

   // acct stop code here

   stop_benchmark();

   send_bench_results_using_udp();

}

I hope that the routines names I used are self-explanatory.
In my config I have 32 servers running, using 32 perl clones.

The results I get (after 2-3 k requests) are these :

Mean time for acct start : 0.005 secs
Mean time for acct stop : 0.01 secs

Since there is a 1:1 ratio of start/stop requests I guess that we can say that for each request (regardless of its type) I should get a mean of 0.0075 secs.
And this in turn should be giving about 130 req/sec.

But I am not getting this kind of performance.
I know that there is a handling overhead for each request. I don't know the exact percentage of this overhead but for simplicity's sake lets be pessimistic and
consider it to be about 30%.
Now the performance should be something like 80 req/sec.
But I am not getting this kind of performance either.
In fact, as soon as my main radius reaches a number of 50 req/sec my NAS
starts sending requests to my backup radius.

Correct me if I am wrong :

If every perl clone can complete each request in X secs shouldn't 32 clones
complete 1/X*32 requests per second? Or something similar to that?
(even half of that would be great, considering the extra overhead for handling
these threads)

I used the debug output when my server served about 30-40 requests/sec and I noticed this

"perl_pool total/active/spare [32/0/32]"

With a utilisation such as that (30-40 req/secs) shouldn't more perl clones be active (unless the above
line means something else).

The problem does not seem to be the database. I made a simple
program that uses the exact same code as my radius perl script does and I can get
this kind of performance easily.

So what I am trying to say here is that I get this "feeling" that I do not get any concurrency at all from my radius daemons. I checked my Perl installation an both threads and multiplicity is enabled :

usethreads=define use5005threads=undef useithreads=define usemultiplicity=define

Any help would be appreciated.

--
-------------------------------------------
Apostolos Pantsiopoulos
Kinetix Tele.com Support Center
email: [EMAIL PROTECTED], [EMAIL PROTECTED]
Tel. & Fax: +30 2310556134
Mobile : +30 6937069097
MSN : [EMAIL PROTECTED]
WWW: http://www.kinetix.gr/
-------------------------------------------
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to