Profiling and monitoring
Margo provides a monitoring system allowing users to capture statistics on all its RPC- and RDMA-related operations, including serialization of RPC argument, registration of memory for RDMA, etc.
To enable monitoring, simply set set
environment variable before running your services and applications,
and you fill find a bunch of files named margo.<hostname>.<pid>.stats.json
in the current working directory when your services and applications
To understand and play around with the content of these files, simply copy these files back to your laptop and follow the instructions in the mochi-statistics-analysis Jupyter notebook here.
This notebook also explains how to configure the monitoring system.
Margo enables users to replace its default monitoring system
with a custom one. To implement your own monitoring system,
please refer to the
header. This header provides a
margo_monitor structure containing
function pointers that you can implement yourself, and that are called
at different points of the execution of a Mochi program. Having played
around with the default monitoring system and understanding how it works
is highly recommended before jumping into implementing your own monitoring