nfstest.file_io man page

nfstest.file_io — File I/O module


Provides an interface to create and manipulate files of different types. The arguments allow running for a specified period of time as well as running multiple processes. Each process modifies a single file at a time and the file name space is different for each process so there are no collisions between two different processes modifying the same file.

File types:
 - Regular file
 - Hard link
 - Symbolic link

File operations:
 - Open (create or re-open)
 - Open downgrade
   This is done by opening the file for read and write, then the file is
   opened again as read only and finally closing the read and write file
 - Read (sequential or random access)
 - Write (sequential or random access)
 - Remove
 - Rename
 - Truncate (path or file descriptor)
 - Readdir
 - Lock
 - Unlock
 - Tlock


class FileIO(baseobj.BaseObj)

FileIO object

    from nfstest.file_io import FileIO

    # Instantiate FileIO object given top level directory
    x = FileIO(datadir="/tmp/data")

    # Run workload creating the top level directory if necessary

Methods defined here:


__init__(self, **kwargs)

Initialize object's private data

datadir: Top level directory where files will be created, it will be created if it does not exist seed: Seed to initialized the random number generator [default: automatically generated] nprocs: Number of processes to use [default: 1] runtime: Run time [default: 0 (indefinitely)] verbose: Verbose level: none|info|debug|dbg1-7|all [default: 'none'] exiterr: Exit on first error [default: False] read: Read file percentage [default: 40.0] write: Write file percentage [default: 40.0] rdwr: Read/write file percentage [default: 20.0] randio: Random file access percentage [default: 50.0] iodelay: Seconds to delay I/O operations [default: 0.0] direct: Use direct I/O [default: False] rdwronly: Use read and write only, no rename, remove, etc. [default: False] create: Create file percentage [default: 5.0] odgrade: Open downgrade percentage [default: 5.0] osync: Open file with O_SYNC [default: 10.0] fsync: Percentage of fsync after write [default: 2.0] rename: Rename file percentage [default: 5.0] remove: Remove file percentage [default: 5.0] trunc: Truncate file percentage [default: 2.0] ftrunc: Truncate opened file percentage [default: 2.0] link: Create hard link percentage [default: 1.0] slink: Create symbolic link percentage [default: 0.2] readdir: List contents of directory percentage [default: 0.5] lock: Lock file percentage [default: 20.0] unlock: Unlock file percentage [default: 80.0] tlock: Lock test percentage [default: 20.0] lockfull: Lock full file percentage [default: 50.0] minfiles: Minimum number of files to create before any file operation is executed [default: 10] fsizeavg: File size average [default: 1m] fsizedev: File size standard deviation [default: 256k] rsize: Read block size [default: 64k] rsizedev: Read block size standard deviation [default: 8k] wsize: Write block size [default: 64k] wsizedev: Write block size standard deviation [default: 8k] sizemult: Size multiplier [default: 1.0] createlog: Create log file [default: False] createlogs: Create a log file for each process [default: False] logdir: Log directory [default: '/tmp']

get_mountpoint(self) Get mount point from data directory run(self) Main function where all processes are started run_process(self, tid=0) Main loop for each process

class FileObj(baseobj.BaseObj)

# File object

class TermSignal(exceptions.Exception)

Exception to be raised on SIGTERM signal


stop_handler(signum, frame)

Signal handler to catch SIGTERM and allow for graceful termination of subprocesses

See Also

baseobj(3), formatstr(3)


No known bugs.


Jorge Mora (

Referenced By


14 February 2017 NFStest 2.1.5 file_io 1.3