[Exim] Some performance notes

Top Page
Delete this message
Reply to this message
Author: Michael Brutman
Date:  
To: exim-users
Subject: [Exim] Some performance notes
A few weeks ago I came looking for some performance help. It's time to
share a little data. I'm not a very proficient user, so the setup and the
tests were very simple. (Somebody else did the Exim setup for me.)

Machine:

iSeries model 820 running two partitions

iSeries Partition 1:
OS/400 Version 5 Release 2
0.25 processors allocated
2GB RAM
6 SCSI hard drives using RAID5

iSeries Partition 2:
Suse SLES 7 (with a 64 bit PowerPC 2.4.19 kernel)
1.00 processors allocated
4GB RAM
Virtual Disk (OS/400 manages the disk space via a special device driver)
100Mb/s Ethernet (AMD PCNET32 based)


The processors on the iSeries are 600Mhz "SStar" processors, which are a 64
bit PowerPC variant. Processors can be allocated in fractions to each
partition. The OS/400 partition had only 0.25 processor units; it's job is
mainly to run the disk drives for Linux. Linux was allocated a full
processor.

Load generator machine:

Generic 666Mhz Pentium III clone running RedHat 7.3
Mstone (from apache.org)

These two were connected through a dedicated 100Mb/s switch.


The test was pure SMTP. One third of the messages were 1KB in size, one
third were 5KB in size, and one third were 17KB in size. As set up for
this test, Mstone just tries to push mail at the server as fast as
possible.

Exim 4 with OpenLDAP was tested. I didn't use any fancy queuing options on
Exim - it is a vanilla configuration.

Over a 15 minute period, Mstone reported the following:

      Total:blocks/s    15.487
      Total:total/s     123.840
      Total:connect/s   15.487
      Total:banner/s    15.487
      Total:login/s      0.000
      Total:command/s   61.907
      Total:submit/s    15.473
      Total:retrieve/s   0.000
      Total:logout/s    15.487
      Total:idle/s      0.000


That's 15.473 messages sent per second. There were no errors reported on
any of the operations.

The server side ran at 100% CPU utilization the entire time. Even though
4GB was allocated to the partition, it only managed to use 581MB. (Most of
which was caching the filesystem.) In a more reasonable test I would
constrain the memory to 256 or 512MB so that the OS would not try to cache
everything. Same with the OS/400 partition - it had 2GB allocated, but
it's only purpose in life is to double buffer the disk drives for Linux.
Since most of the disk activity involved writing, there wasn't much double
buffering going on. OS/400 could have had much less memory allocated to it
with little performance difference.

In other tests that I ran I observed the following:

EXT2 runs much better than ReiserFS - that was expected. ReiserFS
generated 45% more disk I/Os, and also wrote 3x the amount of data that
EXT2 wrote. Needless to say, ReiserFS swamped my disk drives very quickly.
In fairness, I need to learn and experiment with the tuning parameters on
ReiserFS.

EXT3 wasn't tested - the distro didn't have it handy, and I didn't want to
bother with it. :-)

Everything scaled linearly up to 1 processor. (I was able to test at 0.25,
0.50, and 1.00 processor units.) Between 1 and 2 processors the scaling is
no longer linear, but still tolerable. After 2 processors it runs very
strangely - the CPU surges and ebbs in a cycle.

If you have suggestions for fun & easy tests to run, let me know - I've got
some playtime still left on the machine.

Stay tuned,
Mike


Michael B. Brutman
Internet Mail: brutman@???