Track I/O performance by process in Linux with file I/O statistics.
The I/O requests can impact system performance, affecting other processes' functioning, as seen in the example where a process dumping a gigabyte to disk within a short time can disrupt syslogd from processing its queue. This leads to other processes blocking while waiting to send a message through syslog. Alternatively, pushing gigabytes off a server can cause a burst of reads leading to heavy file writers blocking longer than usual, regardless of scheduling priorities of processes.
The primary objective of fiostats software is to track file I/O to local disks by process. As the software focuses on local file I/O (as opposed to network-based filesystems like NFS), it can affect the system as a whole. To ensure the software's accuracy, the following design constraints have been implemented- it is implemented via a loadable module only (cannot patch kernel), accounting for file I/O to local disks only, excluding I/O to sockets, pipes, /proc, and other virtual filesystems. Additionally, it handles dynamic (short-lived) processes and persistent processes with the ability to retrieve statistics on demand while collecting file statistics for multithreaded processes by thread group. The venerable sysstat package was also a guiding influence in the software's designs.
The target audience for this software is users of Linux distributions that do not include file-only IO accounting and do not have the liberty of modifying the kernel proper. Fiostats is an excellent alternative to the existing options available, helping users monitor file I/O statistics by process accurately.
Version 1.1: N/A