home | O'Reilly's CD bookshelfs | FreeBSD | Linux | Cisco | Cisco Exam  


Previous Section Next Section

confSTDIOTYPE

Use torek or portable for buffered file I/O Build macro

This build-time macro is no longer used as of V8.12 sendmail.

Prior to V8.10 sendmail, xf transcript files were always created on disk for each delivery, regardless of whether any information ever ended up in them. In fact, 99% of the time, the xf transcript is created and discarded without ever having been used. Unfortunately, the sendmail queue directory is disk-based, and therefore is limited in the number of I/O operations possible per second. Creating and removing useless files is expensive and has been shown to slow down sendmail.

Beginning with V8.10 sendmail it is possible to create and remove xf transcript files in memory, rather than on disk, and place them on disk only if they become large or need to be archived. This was made possible by the torek I/O library supplied with UCB 4.4 versions of Unix. For such versions, that library is used to create a memory-based file I/O inside sendmail, and thus speed up sendmail.

On the downside, for systems that lack the torek I/O library, this memory-based disk I/O is not available. Such systems are those based on System V or pre-4.4 BSD Unix, or Linux.

For all the flavors of Unix supported in devtools/OS, the selection of the type of I/O is correct. In the rare circumstance that you need to change this setting, you can do so with this confSTDIOTYPE macro:

define(`confSTDIOTYPE', `torek')          select torek I/O
define(`confSTDIOTYPE', `portable')       select non-torek I/O

If your Unix supports torek I/O, you will benefit in some additional ways. In addition to xf transcript files (Section 11.2.7), datafiles (df files) are also buffered (Section 11.2.2). In future releases of sendmail, other transient files might also be buffered in memory.

If your Unix lacks torek I/O, you can still minimize the impact of xf files by moving them to a memory-based filesystem, such as tmpfs. This is done with the QUEUE_DIR configuration option's wildcard extension for multiple queues (see Section 11.3.2).

As of V8.12, in-memory buffering of files is universal and no longer requires this Build macro.

    Previous Section Next Section