When running workload against NFS where the server crashes or there is network
outage, fio hangs on blocking syscalls (like close or uncompleted IOs).
fio will not be interrupted even by sending SIGINT signal multiple times and
requires the user to kill the fio process manually.
To improve the UX, I propose to exit fio forcibly when repeated SIGINT
signals are sent to the program. Not only this behavior is more user-friendly
(giving the opportunity to the user to actually exit fio) but if there are multiple fio workloads,
the user does not need to figure out which exact processes to kill.
This behavior could resolve #1934 and
partially address #2012 without introducing
a new command line argument. On the cons side, the resources acquired by processes
would not be cleaned up, but this would not be done anyway if the process is stuck.
As for the implementation (poc), for the multi-threaded runs the main thread could simply
exit (once a timeout expires or multiple SIGINT are received). For multiprocess
workloads, the child-processes would need to be exited forcefully as they are
likely hung on blocking syscalls.
When running workload against NFS where the server crashes or there is network
outage,
fiohangs on blocking syscalls (like close or uncompleted IOs).fiowill not be interrupted even by sending SIGINT signal multiple times andrequires the user to kill the
fioprocess manually.To improve the UX, I propose to exit
fioforcibly when repeated SIGINTsignals are sent to the program. Not only this behavior is more user-friendly
(giving the opportunity to the user to actually exit
fio) but if there are multiplefioworkloads,the user does not need to figure out which exact processes to kill.
This behavior could resolve #1934 and
partially address #2012 without introducing
a new command line argument. On the cons side, the resources acquired by processes
would not be cleaned up, but this would not be done anyway if the process is stuck.
As for the implementation (poc), for the multi-threaded runs the main thread could simply
exit (once a timeout expires or multiple SIGINT are received). For multiprocess
workloads, the child-processes would need to be exited forcefully as they are
likely hung on blocking syscalls.