[Exim] Profiling exim programmatically

Top Page
Delete this message
Reply to this message
Author: Paul Makepeace
Date:  
To: exim-users
Subject: [Exim] Profiling exim programmatically
I'm in the process of attempting to benchmark a variety of lookup
methods (lsearch, MySQL, Oracle, PostgreSQL, LDAP, etc) and am
currently using a perl routine within Exim. This is working fine
using the one hook perl.c provides, Exim::expand_string(q[${lookup
mysql{...}{$value}fail}]), but my question is..

    Is there a way to hook into exim's entire process of address
    resolution, in a sense emulating exim -bt or invoking specific
    directors? Can this be done/hacked/approximated with a ${lookup?


I'm only passingly familiar with exim's source code having only spent
any real time in src/lookups/.

FWIW, I'm getting 100 MySQL lookups in a little under 8s from a
database of 10,000 random entries (dual P3-600). Seems r-e-a-l-l-y
slow to me... (I have made no attempt to tune Debian's default install;
any suggestions?)

        Exim::expand_string(q[
                ${lookup mysql{select remote_name from forwarder where
                domain_name = 'realprogrammers.com' and
                local_part = '].rand_word.q['}{$value}fail}]);


(Perl etc is not the limiting factor, an lsearch{/flatfile} on the
same data runs 10x faster)

Paul