rlm_sql: %{sql:<long query>} - length limit

Alan DeKok aland at deployingradius.com
Sun Apr 22 09:24:52 CEST 2007

Paul TBBle Hampson wrote:
> Or talloc, which lets you allocate hierarchially, so when you delete
> a request, all the stuff in it gets deallocated as well, without having
> to guess ahead of time how much space it's all gonna take.

  I've been following Samba for a while.  talloc is nice, but I think
it's way overkill for what we need.

> And it has destructors.

  Which I don't think we need.

  For RADIUS, all memory allocation is either global, per-module
instance, or tied to a REQUEST.  The memory pools are probably best used
for REQUESTs.  My tests indicate that malloc/free overhead for a REQUEST
with few VALUE_PAIRs can be up to 10% of CPU time.  So fixing that would
help performance, and would likely simplify the code.

  What's in a REQUEST?  RADIUS_PACKETs, VALUE_PAIR's, and not much else.
 They don't need destructors on exit, so that overhead in a memory pool
can be lost.  We don't need thread locks on a REQUEST, as the server
design guarantees that only one thread is accessing a REQUEST at a time.

  I think we can have simple 2k-page memory pools with only 100 to 200
lines of code.  And, that means no external dependencies, either.

  Alan DeKok.
  http://deployingradius.com       - The web site of the book
  http://deployingradius.com/blog/ - The blog

More information about the Freeradius-Devel mailing list