/mantid-profiler

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

mantid-profiler

Use psrecord and Plotly.js to profile a Mantid workflow.

It monitors CPU and RAM usage, and reports the time span of each algorithm (currently, only algorithms are recorded).

Usage

To profile the SNSPowderReduction.py workflow:

python SNSPowderReduction.py & python path/to/mantid-profiler/mantid-profiler.py $!

The script attaches to the last spawned process, so you can also use the profiler if you are working with MantidPlot:

./MantidPlot & python path/to/mantid-profiler/mantid-profiler.py $!

Requires

  • psutil
  • You need to build Mantid with the -DPROFILE_ALGORITHM_LINUX=ON CMake flag to get the timing output from the algorithms.

Results

After running on the SNSPowderReduction.py workflow, the profiler produces a profile.html file to be viewed with an internet browser. SNS Powder Reduction profile

You can interact with a demo profile here.

Controls:

  • Mouse wheel to zoom (horizontal zoom only)
  • Left click to select zoom region (horizontal zoom only)
  • Double-click to reset axes
  • Hold shift and mouse click to pan

More options for mantid-profiler.py

  • --outfile: (type=str) Specify the name of the output profile. Default is profile.html.
  • --infile: (type=str) Specify the name of input file containing algorithm timings. Default is algotimeregister.out.
  • --logfile: (type=str) Choose a name for output file containing process monitor data generated by psrecord. Default is mantidprofile.txt.
  • --interval: (type=float) How long to wait between each sample (in seconds) for CPU and RAM monitoring. By default the process is sampled as often as possible.
  • --mintime: (type=float) Minimum duration of an algorithm for it to appear in the profiling graph (in seconds). Default is 0.1s.

Similar projects

viztracer creates similar information for generic python software

Contact

Neil Vaytet, European Spallation Source