MALP is an online performance analysis tools which aims at providing performance insights on parallel applications in a scalable manner. It can be seen as an intermediate between the trace-based approach, storing all events and the profiling approach immediately reducing events. MALP allocated dedicated resources to perform an online event reduction, using possibly user-defined processing with an unified JSON output. MALP also define it own templating language, able to efficiently display in a browser metrics processed by the performance plugins.
As presented in this figure MALP creates an online data-flow from the application to a web-browser. Its purpose is to allow the analysis of fine-grained events while avoiding their storage, doing the analysis as soon as possible in an on-line fashion. It opens interesting possibilities:
- Direct interaction with a running application
- Online performance data reduction
- Performance plugins which can be created by users
- An online coupling library with a complete stream interface portable over MPI
MALP is made of four main components:
- An instrumentation library which is preloaded in the target applications
- A coupling library which relies on the MPI virtualization principle (separating multiple programs in virtualized MPI_COMM_WORLDS, as described P^nMPI http://dx.doi.org/10.1145/1362622.1362663)
- An analysis library which relies on a data-flow engine to reduce events in target analysis
- A Node.JS templating and performance metric management engine which displays profiles in a web-browser
One of the strength of MALP is its extensibility, an user can easily implement a performance reduction plugin, coupling it with a dedicated web-page in the Web front-end, in a few lines of code. For more information on the code structure and its extensibility, see the doxygen.