The old wiki used to contain more information on this.
I'm currently in the process of making our rlm_perl module multithreaded as
well.
Some pointers:
perl -V | grep -i multipl
...
useithreads=define, usemultiplicity=define
Compile-time options: HAS_TIMES MULTIPLICITY PERLIO_LAYERS
check your multiplicity here. Multiplicity causes one perl process to be
started, with multiple perl interpreters inside.
Add a CLONE function to your perl script (yes, all in caps).
The CLONE function is run every time a new perl interpreter is started. What
happens is all existing variables are copied to the new interpreter when a new
thread is started.
In this function you can adjust values that should be unique for each thread
(like database handlers).
The number of threads are controlled trough the max_servers and max/min spare
servers in your radiusd.conf
Threading is not done in debug mode (-X), start your freeradius in normal mode
to test multithreading.
AFAIK the above information is correct and recent.
Kind regards
Sander Eerdekens
Informatiesystemen
Systeembeheer & Ondersteuning
[email protected]
UZ Leuven | campus Gasthuisberg | Herestraat 49 | B - 3000 Leuven |
www.uzleuven.be
------------------------------
Message: 5
Date: Mon, 05 Nov 2012 14:01:56 +0000
From: Phil Mayers <[email protected]>
To: [email protected]
Subject: Re: rlm_perl and threads
Message-ID: <[email protected]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
On 05/11/12 13:36, Edgar Fu? wrote:
>> Yes. Likely, even.
> Thanks. So will these then be two distinct Perl interpreters or two instances
> of the same Perl interpreter? From the Perl script's point of view, what will
> the two instances share?
> Can you hint me to any documentation covering this?
I'm not aware of any docs. You might need to refer to the source.
In particular, the USE_ITHREADS #define seems to control how the perl
interpreter is created/allocated/used. I'm not familiar enough with perl
to understand the code, personally. See here:
https://github.com/FreeRADIUS/freeradius-server/blob/master/src/modules/rlm_perl/rlm_perl.c#L254
...and the rest of that file.
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html