[Mimedefang] Embedded Perl
Bill Cole
mdlist-20140424 at billmail.scconsult.com
Mon Sep 21 18:53:04 EDT 2015
On 21 Sep 2015, at 17:04, Amit Gupta wrote:
> Hi, I'm using Centos7.1 and mimedefang 2.75 (still need to upgrade to
> latest). The documentation indicates that if you start mimedefang with
> the -E parameter, it uses embedded perl which is supposedly faster. I
> was wondering if someone could give me insight into why it's actually
> faster under the hood?
Because the multiplexor only loads a single Perl interpreter,
mimedefang.pl, and mimedefang-filter once at launch (and whenever it
gets a 'reread' command) and forks off slaves using the embedded
interpreter and pre-loaded scripts as needed, rather than launching new
independent slave processes that have to load the interpreter and load
the scripts themselves.
> And maybe any anecdotal or real statistics on
> how much faster.
Oh, you want real data... Picky picky!
I can't say how much faster it is in any real world sense, as it was
dysfunctional a decade ago on the platforms I tried it on then and I
haven't bothered with it since. In principle it isn't going to do much
for you if you don't use a lot of slaves and/or don't recycle them
often.(The specific definitions of "a lot" and "often" are left as an
exercise for you to determine...) As MD & Perl have matured and systems
have gotten much bigger and much faster it has become less of a burden
to just fork and exec fully independent slaves and let them live a very
long time, so it is somewhat questionable whether embedding Perl is
valuable to very many users. At a scale of hundreds of messages per
minute on a single slow CPU it could be indispensable, but few systems
have that sort of challenge.
> Also, should embedded perl be enabled by default?
That depends on your system. I'd expect not for yours. A basic EL7
installation doesn't include the perl-ExtUtils-Embed package (although
it is in RedHat's "base" collection so you needn't use CPAN or hunt down
a 3rd-party RPM.)
> I see a --disable-embedded-perl option in the configure script. I did
> not configure my system to disable embedded perl, however when I try
> to experiment with the -E option, mimedefang complains that I did not
> enable embedded perl..
Since ExtUtils::Embed is needed for building an embedded Perl
interpreter, the MD configure script won't enable the feature for you
automatically if the module's not present, which it isn't by default on
CentOS 7.1:
[root at cloud119-65 ~]# cat /etc/centos-release
CentOS Linux release 7.1.1503 (Core)
[root at cloud119-65 ~]# yum list installed perl-ExtUtils-Embed
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.advancedhosters.com
* extras: centos.mirror.constant.com
* updates: mirror.us.leaseweb.net
Error: No matching Packages to list
[root at cloud119-65 ~]# yum info perl-ExtUtils-Embed
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.advancedhosters.com
* extras: centos.mirror.constant.com
* updates: mirror.us.leaseweb.net
Available Packages
Name : perl-ExtUtils-Embed
Arch : noarch
Version : 1.30
Release : 285.el7
Size : 49 k
Repo : base/7/x86_64
Summary : Utilities for embedding Perl in C/C++ applications
URL : http://www.perl.org/
License : GPL+ or Artistic
Description : Utilities for embedding Perl in C/C++ applications.
More information about the MIMEDefang
mailing list