rlm_perl (threads) performance question
Apostolos Pantsiopoulos
apant at kinetix.gr
Tue Oct 16 11:57:50 CEST 2007
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: apant at kinetix.gr, support at kinetix.gr
Tel. & Fax: +30 2310556134
Mobile : +30 6937069097
MSN : apant2 at hotmail.com
WWW: http://www.kinetix.gr/
-------------------------------------------
More information about the Freeradius-Users
mailing list