On 18/04/14 11:50, Jan Kaluza wrote:
> Hm, do you know why mod_perl needs to know that during compilation? If
> it's really used for something, we will have to remove those
> MPM-specific #ifdefs and use normal conditionals instead for httpd-2.4.

Perl can be built in 3 different ways:

1) with global data structures. That way it supports only one
interpreter per process and only one thread per process. But the
resulting Perl is the fastest of the 3.

  -Uuseithreads -Uusemultiplicity

2) with support for multiple interpreters but leaving out thread
synchronization. This is good for environments where conflicting data
access can be eliminated by other means. Postgres' perl integration is
an example. You can declare 2 backend languages, plperl and plperlu.
They need 2 different interpreters. But only one of them can be active
at a time.

  -Uuseithreads -Dusemultiplicity

3) support thread concurrency.

  -Duseithreads -Dusemultiplicity

Historically, modperl supports either 1) or 3). I measured the
performance difference between them years ago for perl 5.12. I got
15-20% which is quite a lot.

I believe the majority of modperl-backed web servers uses prefork. The
best Perl in this context is 1). Up to httpd 2.2 modperl could check if
the user tried to use such a Perl with a threaded MPM. It refused to
compile in that case. For httpd 2.4, this check does not make sense
anymore. Though, I think it would be good to allow the user to build
modperl with a Perl built as per 1). I think this should be allowed only
upon request such as a command line parameter. In all other cases
modperl should refuse to compile with all Perls except for 3).

Just my 2¢,
Torsten

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@perl.apache.org
For additional commands, e-mail: dev-h...@perl.apache.org

Reply via email to