Next: , Previous: File System Scripts, Up: Scripts

4.2 Postmark

Postmark is a benchmark designed to simulate the behavior of mail servers. Postmark consists of three phases. In the first phase a pool of files are created. In the next phase four types of transactions are executed: files are created, deleted, read, and appended to. In the last phase, all files in the pool are deleted. See for more information on Postmark.

Postmark is a single threaded benchmark, but Auto-pilot can automatically run several concurrent processes and analyze the results. Postmark generates a small workload by default: only 500 files are created and 500 transactions performed. Auto-pilot increases the workload to a pool of 20,000 files, and performs 200,000 transactions by default.

Several environment variables control how Postmark behaves when running under Auto-pilot that you can set in

Variable Default Description

BUFFERING false Use C library functions like fopen instead of system calls like open.

CREATEBIAS 5 What fraction (out of 1) of create/delete operations are create. -1 turns off creation and deletion.

INITFILES 20000 How many files are in the initial pool.

MINSIZE 512 The minimum file size.

MAXSIZE 10240 The maximum file size.

MYINITFILES $INITFILES/$THREADS Number of initial files in this process's pool.

MYSUBDIRS $SUBDIRS/$THREADS Number of subdirectories for this process.

MYTRANSACTIONS $TRANSACTIONS/$THREADS Number of transactions this process executes.

POSTMARKDIR $TESTDIR/postmark/$APTHREAD What directory to run in.

READBIAS 5 What fraction (out of 10) of read/append operations are read. -1 turns off read and append.

READSIZE 4096 The unit (in bytes) that read operations are executed in.

SEED 42 The seed for random number generation.

THREADS 1 How many concurrent processes to run (this variable is automatically set by the Auto-pilot THREADS directive).

TRANSACTIONS 200000 How many total transactions to execute.

WRITESIZE 4096 The unit (in bytes) that write operations are executed in.

The Postmark script generates a configuration based on these variables, and then decrements the semaphore specified by APIPCKEY. Decrementing this semaphore using semdec ensures that all threats begin processing and measuring at approximately the same time. After semdec returns, postmark is run via ap_measure. Finally, the configuration and any left over files are removed.