Use Multiple Queues

Operations that cause disk heads to move, such as file creation and removal, are called IOPs. Under Unix, inodes contain information about files, such as permissions, size, and lists of data blocks. A file itself (its data) is rarely, if ever, located on the same track as its inode. To write and sync a file to disk causes data blocks to be allocated and written to, the file’s inode to be written, the directory containing the file’s name to be written, and the inode for the directory to be written. Deleting the file causes just as many updates to the disk.

Hard disks are typically limited to about 120 IOPs per second. When sendmail successfully delivers a message, it can consume from 10 to 13 IOPs per message. One way to increase the IOPs per second is to install a RAM disk (no head to move). Such solid-state disks often support upward of 14,000 IOPs per second.

Another way to increase the IOPs per second is to spread the queue over many disks and many disk controllers. This is done by using sendmail’s built-in support for multiple-queue directories (Section 11.3).

Consider, for example, a major mail-sending machine that has six disks available for use as sendmail’s queues:

/queues      not mounted, part of the root filesystem
/queues/q.1  not mounted, part of the root filesystem
/queues/q.1/qf   first disk
/queues/q.1/df   fourth disk
/queues/q.1/xf   mounted as a tmpfs or mfs filesystem
/queues/q.2  not mounted, part of the root filesystem
/queues/q.2/qf   second disk ...

Get Sendmail, 3rd Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.