This is G o o g l e's cache of http://mandree.home.pages.de/postfix/bench2.html.
G o o g l e's cache is the snapshot that we took of the page as we crawled the web.
The page may have changed since that time. Click here for the current page without highlighting.
To link to or bookmark this page, use the following url: http://www.google.com/search?q=cache:mandree.home.pages.de/postfix/bench2.html


Google is not affiliated with the authors of this page nor responsible for its content.

MTA - Performance, part 2

MTA Benchmark

I made a new MTA performance shootout to see how fast MTAs deliver in a LAN. The machines I used are shown below.

Benchmark Machine

This is the machine that did the actual MTA load testing. /var/log/maillog was disabled in syslog.conf.

Hardware

CPU:AMD K6-2, 300 MHz
Cache:1 MB, 100 MHz
RAM:128 MB SDRAM, 100 MHz, CL 2
SCSI:Tekram DC-390 (AMD Am53C974 "PCscsi II")
Drive:Micropolis 4345WS (UWSCSI, 7200/min, 4.3 GB, Write Cache off)
Net:3C900 Combo

Software

SMTP benchmark

OS:FreeBSD 4.3-RELEASE-p14
MTA #1:Sendmail 8.11.3 as part of FreeBSD 4.3-RELEASE-p14
Sendmail 8.11.6 as part of FreeBSD 4.4-RC
MTA #2:Exim 3.33, built from port, configured for syslog without timestamp.
MTA #3:Qmail 1.03, built from port
MTA #4:Postfix 20010525, built from port

QMTP benchmark

OS:FreeBSD 4.4.RC
MTA #1:Qmail 1.03, built from port
MTA #2:Postfix 20010808_1, built from port with my qmqp fixes (see below for link to patch)

Setup

syslog did not log mail locally, but just across the network to the helper machine that writes its mail log asynchronously.

In the qmail test cases, I ran qmail-smtpd or qmail-qmqpd from tcpserver as described in /var/qmail/doc/FAQ, I merely adjusted user and group ids as necessary. Inetd would have deactivated qmail-smtpd after a while.

In the Postfix QMQP test case, I enabled QMQP as described in QMQP_README.

I ran pidentd with -w -t120 rather than inetd's internal identd to prevent it from being disabled by inetd.

I recompiled my kernel to allow for more simultaneous connections, FreeBSD would run out of buffer space otherwise with several hundred sockets in TIME_WAIT state.

All tests were on the same /var partition with softupdates. If listed as "no softupdates", I unmounted the partition, switched off softupdates and remounted it.

Helper machine

This box provided DNS, is the loghost, and sinked and discarded the incoming test mail. It ran Wietse Venema's smtp-sink that comes with Postfix with a listen backlog of 1,000.

Hardware

CPU:AMD Duron, 700 MHz
RAM:320 MB SDRAM, 100 MHz, CL 2
IDE:VIA KT133 South Bridge (UDMA 4 "UATA/66")
Drive:Western Digital AC420400D (5400/min, ~ 20 GB, Write Cache off)
Net:3C900 Combo

Software

OS:hacked-up SuSE Linux 7.0, Linux Kernel 2.4.9 with ext3fs 0.9.6
MTA:smtp-sink -c 25 1,000
DNS:djbdns 1.05 providing all relevant DNS information to the other machine

Test

I ran smtp-source to inject mail addressed to the helper machine to localhost.

Results SMTP

software/figuretime to inject [s]time to deliver [s]sync writes [1]async writes [1]throughput [mail/s]notes
Injecting 1,000 mails to 1 recipient with 20 threads, 50 mails per connection
unsafe exim562626,6216,7853.8manual queue run (1)
unsafe (2)
postfix49621,8984,11016.1-
qmail13831014,13816,4203.2no softupdates
sendmail1361368,1727,9937.3no softupdates
FreeBSD 4.4-RC
sendmail99995,8943,12110.1-
FreeBSD 4.4-RC
sendmail97975,8652,99310.3-
remote smtp-sink5.4---185-
Injecting 1,000 mails to 1 recipient with 20 threads, 1 mail per connection, unless stated otherwise
unsafe exim3733734,6474,4572.7unsafe (2)
unsafe exim1071075,2844,3189.3injecting with 5 threads
unsafe (2)
postfix691009,8521,54510.0sync
postfix721225,0242,8968.2no softupdates
postfix51652,0174,21215.3-
qmail13525524,4221,0183.9sync
qmail13630814,13616,4223.2no softupdates
unsafe qmail681547,8517,6956.5softupdates
unsafe (2)
sendmail18818711,0623665.3sync
sendmail1611608,1258,0136.3no softupdates
sendmail1611615,8962,9376.2-
questionable, times not verified on FreeBSD 4.4-RC
sendmail1351358,0888,0127.4no softupdates
FreeBSD 4.4-RC
sendmail1171176,0443,4078.5-
FreeBSD 4.4-RC
remote smtp-sink6.6---152-
remote smtp-sink8.4---119injecting with 5 threads
software/figuretime to inject [s]time to deliver [s]sync writes [1]async writes [1]throughput [mail/s]notes
Injecting 100 mails to 10 recipients with 20 threads and connection caching
unsafe exim101145740191unsafe (2)
postfix68209414125-
qmail15411,4561,66924no softupdates
sendmail181896346456-
remote smtp-sink0.9---1111-

Notes:

  1. Exim only takes 10 recipients through a single connection for immediate delivery and queues the rest. The manual queue run took part after smtp-source was finished and used -qqf.
  2. Qmail and Exim can only use noasync and sync file systems without softupdates as per qmail's FAQ: http://cr.yp.to/qmail/faq/reliability.html and as per a post to the linux kernel mailing list: .

Results QMQP

software/figuretime to inject [s]time to deliver [s]sync writes [1]async writes [1]throughput [mail/s]notes
Injecting 500 mails to 1 recipient with 1 thread, 1 mail per connection
postfix41411,0112,33112.2softupdates
qmail1431537,0008,1873.3no softupdates
Injecting 500 mails to 1 recipient with 5 threads, 1 mail per connection
postfix28321,0932,11915.6soft updates
postfix53612,5003,6428.2no softupdates
postfix77866,5043,1355.8sync
qmail781517,0408,1993.3no softupdates
qmail11119314,0476,2722.6sync
Injecting 500 mails to 1 recipient with 20 threads, 1 mail per connection
postfix21299641,44217.2softupdates
qmail661517,0448,2173.3no softupdates
Injecting 100 mails to 10 recipients each with 5 threads, 1 mail per connection
postfix66206238167softupdates
qmail17401,4081,66925no softupdates

Observations and Commentary

History

2002-09-16: Came across André Oppermann's qmail-ldap and his and Claudio Jeker's EXTTODO patches and added links.

2001-11-29: Russell Nelson asked why only qmail was supposed to be unreliable on softupdates, so I checked again and figured Exim was also unreliable ("unsafe") on softupdates file systems. Tagged as "unsafe", so the figures shown for exim are probably better than those for production systems.

2001-09-01: I found an updated Postfix port for FreeBSD, and figured it didn't include qmqp. I fixed that, filed a problem report with my diff, and made a postfix-vs-qmail qmqpd shootout. I also fixed the W3C CSS logo to not use style-sheets but attributes for its size, this prevents Netscape 4.x from malformatting the page.

2001-08-31: I got a report from Claus Aßmann that my figures were low for softupdates and without connection caching, so I did the test again for sendmail with 20 threads injecting, this time with sendmail 8.11.6 on FreeBSD 4.4-RC. The figures are: softupdates: 117/99 s without/with connection caching. No softupdates: 135/136 s without/with connection caching.

What I cannot explain is that with softupdates, connection caching on the client side seems to help performance, while it makes no difference without softupdates.


Matthias Andree
Last modified: Mon Sep 16 12:17:45 CEST 2001
Valid HTML 4.01! Valid CSS!