96-Aug-09/mea@nic.funet.fi

	Some comments on things affecting ZMailer performance


Router:

	- DNS, and other database lookups (primarily the DNS!)
	- Use of keyed databased (ndbm, gdbm) is way faster,
	  than unordered linear search, or even ordered binary
	  search as is used at some databases (aliases, for example)
	- DNS server must have large caches, and be able to
	  cache negative answers / timeouts too!
	- If possible, do not do DNS lookups at the router at all.
	  Handle the DNS queries at the SMTP transporters
	- System speed on directory access (filesystem speed)
	  (scanning the directory, and doing   stat()  is SLOW
	   on some platforms!  Especially if trying to have files
	   sorted into time order before processing them...)

Scheduler:

	- System speed on directory access (filesystem speed)
	  (scanning the directory, and doing   stat()  is SLOW
	   on some platforms!  ==> Can cause very slow startup
	   if queue is long..)
	- Speed to do inter-process communication via PIPEs
	  ( on platforms that can do it: socketpair() )
	- Speed of filesystem access for message control file
	  parsing  (on some systems apparenly equally "costly"
	  as simply doing a stat() on the file -- amazing ..
	  .. that is, the stat() is amazingly costly...)
	- Speed of scheduler's  mux() scanning thru all 
	  transporter's reporting channels
	  (This can be alleviated by use of ``overfeed=nnn''
	   configuration option, and thus feeding the pipe
	   full of jobs..)

Transporters:

	- Speed to do IPC via PIPEs
	- System speed on opening files
	- DNS lookup for SMTP connection setups
	- Remote IPC over TCP/IP
	- Local filesystem access speed (read spool files,
	  write mailboxes..)
	- Idleness in between scheduler passes at our report
	  channel, and before the scheduler feeds more jobs
