Free Radius performance variation

Jeffrey Hutzelman jhutz at
Wed Dec 16 20:58:17 CET 2009

--On Wednesday, December 16, 2009 08:11:28 PM +0530 Tejesh Vijayakumar 
<Tejesh.Vijayakumar at> wrote:

> Thanks Alan for the suggestion..
> My main query was why the difference of 45 [125 auth/sec - 80 auths/sec].
> The no of auths per sec is dropping at a fast rate as the number of users
> are increasing. How to make that consistent upto some point say for
> atleast one million users. [i.e auths/sec would be almost same for no of
> users upto one million users].

With a flat users file, or an unindexed or poorly-indexed database, the 
time it takes to look up a user is proportional to the number of users.  If 
you have 10 times as many users, it takes 10 times as long to do each user 

You've said that when you multiply the number of users by 10, the time it 
takes to respond to a request increases by about 50%, and you're surprised 
that it slowed down so much.  You should be surprised it hasn't slowed down 

If you want response time to be constant regardless of the number of users, 
you need to store the users in a data structure which has constant lookup 
time regardless of the number of users.  Let us know if you come up with 
one; the best modern computer science can do with this problem is O(log n) 
lookup time (in practice, you can do better by observing that the number of 
users is not _really_ unlimited; some hash strategies may give you nearly 
constant lookup time).

You'll see an improvement if you properly set up and maintain your SQL 
database, including creating the necessariy indexes, or store your users in 
a more efficient data structure, such as that used by the fastusers module. 
Both of these approaches have already been suggested by others.

-- Jeffrey T. Hutzelman (N3NHS) <jhutz+ at>
   Carnegie Mellon University - Pittsburgh, PA

More information about the Freeradius-Devel mailing list