  As High-Performance Computing (HPC) systems strive towards the exascale goal,
failure rates both at the hardware and software levels will increase
significantly. Thus, detecting and classifying faults in HPC systems as they
occur and initiating corrective actions before they can transform into failures
becomes essential for continued operation. Central to this objective is fault
injection, which is the deliberate triggering of faults in a system so as to
observe their behavior in a controlled environment. In this paper, we propose a
fault classification method for HPC systems based on machine learning. The
novelty of our approach rests with the fact that it can be operated on streamed
data in an online manner, thus opening the possibility to devise and enact
control actions on the target system in real-time. We introduce a high-level,
easy-to-use fault injection tool called FINJ, with a focus on the management of
complex experiments. In order to train and evaluate our machine learning
classifiers, we inject faults to an in-house experimental HPC system using
FINJ, and generate a fault dataset which we describe extensively. Both FINJ and
the dataset are publicly available to facilitate resiliency research in the HPC
systems field. Experimental results demonstrate that our approach allows almost
perfect classification accuracy to be reached for different fault types with
low computational overhead and minimal delay.
