Fstress is a synthetic, flexible, self-scaling NFS file service benchmark whose primary goal is flexibility. Fstress exports control over several dimensions in both data set and workload, enabling a wide range of tests for fundamental evaluation of file service scalability, sizing, configuration, and other factors. Fstress includes several important "canned" workloads.

Fstress source code: fstress-export.tgz (for FreeBSD, Linux, and Solaris). (last updated Jul 23, 2002) A minor patch ( April 23, 2004)

The user manual: Postscript or PDF (last updated Mar 16, 2002)

The technical paper: Postscript or PDF (last updated Sep 19, 2002)


This work was supported by Cisco Systems.

Why Fstress?

Fstress emphasizes flexibility, enabling high-intensity request generation for a variety of workloads. The following two graphs illustrate Fstress results against the same set of five file servers, starting from a base server configuration and then augmenting that server by adding memory or disk. The base server has one disk and 256MB of memory. The "+" configuration quadruples that particular resource (4 disks or 1GB memory), and "++" multiplies the base by seven.

We use Fstress to demonstrate the disparate utility of these added resources by exercising them with two different workloads, switching from a transaction processing workload on the left to a web server workload on the right. For each graph, we measure per-operation latency on the y-axis as we increase load (and file set size) on the x-axis. Latency typically grows linearly with load until file server saturation, where it curves sharply upwards.

Transaction processing generates nearly random accesses across a very large data set. The large, random working set defeats even very large memory caches, but benefits greatly from extra disk arms. For the Web server workload, we see the opposite effect. The Zipf popularity distribution creates a moderately sized, highly cachable working set that does well with added memory. Adding disks helps here, but to a lesser extent.

Either of these graphs might be useful in isolation, but together they enable a deeper understanding of the relationship between file service configuration and workload.

These graphs show only a small subset of Fstress functionality. In addition to transaction processing and Web server, Fstress includes several other "canned" workloads. More importantly, Fstress provides a general interface to define new workloads, or perform sensitivity studies via minor changes to existing workloads.

For file service tuning, Fstress also measures per-operation latency (with cumulative distribution) and error statistics.