User-Space NFS Backend for IOR Benchmark
IOR (Interleaved or Random) is a very popular parallel I/O benchmark in the HPC community. It can be used to test the performance of parallel storage systems using various interfaces and access patterns. It supports different I/O backends and, thus, can run the same workload against different systems and allow a direct comparison between them. IOR utilizes MPI for load distribution and I/O access coordination.
Alongside the I/O benchmark, the IOR suite features the mdtest utility, which is specifically designed to evaluate filesystem metadata performance. This utility, with its range of command line options, allows for the simulation of desired metadata workloads, such as file and directory creation, without the need for actual I/O.
IOR is well-suited for benchmarking, but it is not always appropriate for pushing the system beyond its limits. When exercising the POSIX interface, i.e., stressing an NFS-mounted remote filesystem, IOR relies on the in-kernel NFS client. When under overload, the remote server crashes, and the client node, due to stale mount points, often becomes unresponsive. Potentially, a system reboot is required. Such behavior is usually unacceptable for production systems, which are much bigger than test stands used for basic load generation.
To address the issues of unresponsive client nodes due to server crashes during testing, the IOR test suite could be updated to use a user-space NFS client library libnfs.
As a part of this thesis, you will update the IOR test suite to add the libnfs client library as one of the supported storage protocols. You will also evaluate the performance of existing and newly-implemented backends. The project requires skills in the C programming language, software building tools, a basic understanding of file systems, and hands-on running of MPI applications.
- IOR and mdtest: https://github.com/hpc/ior
- libnfs is a client library: https://github.com/sahlberg/libnfs
Contact: Michael Kuhn and Tigran Mkrtchyan