vfs_speedtest

File transfer throughput benchmark for a mounted filesystem

SYNOPSIS

vfs_speedtest [-cD] [-d MiB] [-f operations] [-n runs] [-q KiB] [-W warmup] [-z sizes] -P directory

DESCRIPTION

vfs_speedtest runs the transfers of the Netatalk server benchmark afp_speedtest(1) as POSIX file operations in directory, so that a mounted filesystem is measured end to end. Read, Write and Copy move the data through user space one chunk at a time; ServerCopy hands a whole file to copy_file_range(2), which an SMB3 or NFS 4.2 server, or a FUSE daemon implementing the operation, executes without the data crossing the mount, and which the kernel carries out itself otherwise. Runs, warmup, statistics and the CSV layout are those of afp_speedtest(1), so the same chart scripts read both.

Every data file opens with O_DIRECT; pass -D on a plain local filesystem, which refuses it for small transfers. Results go to standard output, diagnostics to standard error. Each operation works in a directory named <Operation>Test-<pid> under directory, removed when the operation finishes.

OPTIONS

-P directory

Directory on the mounted filesystem to run in.

-c

CSV output: one row per measured run, five statistics rows per operation and size, and, for a sweep, one summary block per operation.

-D

Buffered I/O in place of O_DIRECT.

-d MiB

File size in MiB (default: 64).

-f operations

Comma-separated operations among Read, Write, Copy and ServerCopy (default: Write).

-n runs

Measured runs per operation and size (default: 1).

-q KiB

Chunk size (default: 1024).

-W warmup

Warmup runs left out of the statistics (default: 1).

-z sizes

File size sweep, comma-separated sizes in MiB, each a multiple of 4 KiB; fractions name KiB sizes (4 KiB is 0.00390625).

EXIT STATUS

The vfs_speedtest utility exits 0 on success, and >0 if an error occurs. A failed file operation exits with status 2 after removing what the run created; a usage error exits with status 1.

EXAMPLES

The sweep of the Netatalk performance dashboards over a FUSE mount, as CSV:

$ vfs_speedtest -c -n 20 -f Read,Write,Copy,ServerCopy -z 0.00390625,0.0078125,0.015625,0.03125,0.0625,0.125,0.25,0.5,1,2,4,8,16,32,64,128,256 -P /mnt/afpfs > speedtest.csv

SEE ALSO

afp_speedtest(1), mount_afpfs(1), vfs_lantest(1)