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 sander@uzleuven.be 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 <p.mayers@imperial.ac.uk> To: freeradius-users@lists.freeradius.org Subject: Re: rlm_perl and threads Message-ID: <5097C6D4.9070904@imperial.ac.uk> 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_... ...and the rest of that file.