The Mastermind component is responsible for gathering, storing and reporting of the measurement data. For each method that is monitored, a record object is created and stored by the Mastermind. The record object stores all the measurement data for each of the invocations of a single routine. When monitoring is started via a call to the Mastermind, the Mastermind passes the parameters to the record object and tells the record to begin timing. TAU measurements are made cumulatively, so in order to obtain the measurements for a single invocation, measurements must be made prior to the invocation and again after the invocation. To make a measurement, the TAU component is queried in order to record the current measurements for the timer, the MPI time, and any hardware metrics being measured. The MPI time is determined by the summation of the times of all the MPI routines. When monitoring is stopped, the TAU component is again queried to obtain the current time, MPI time and hardware measurements. The measurements for the single invocation are determined by the difference between the measurements obtained after the invocation and the measurements from before the invocation. The single invocation measurements, along with the parameters, are stored in the record. When a record object is destroyed, it outputs to a file all of the measurement data for each invocation that it stored.