idaholab / moose

Multiphysics Object Oriented Simulation Environment
https://www.mooseframework.org
GNU Lesser General Public License v2.1
1.7k stars 1.04k forks source link

Add PerfGraph timers to Multiapp and TransientMultiapp #12186

Closed permcody closed 5 years ago

permcody commented 5 years ago

Rationale

It's currently difficult to understand the time spent in the master from it's subs, which wasn't possible with the old PerfLog system. The PerfGraph system can now store timing per app so we need to start taking advantage of that capability.

Description

When looking at PerfGraph outputs for a MultiApp run, it's a little bit tricky to understand where some of the time is going. While the individual graphs do show time for their respective subapps. There's a significant amount of time spent in another app which isn't accounted for in a single location in the PerfGraph making it difficult to understand if the application is doing something slowly (like evaluating UserObjects) or if it's just waiting on a master/sub.

As a start, each app should time the amount spent calling down to the sub. This would tell us which percentage to ignore out of the whole for the master. Dealing with the PerfGraph from the sub is a little more difficult though. It's a little more difficult to tell how much time is spent in the parent application versus "this" application. We might think about ways of pausing timers or subtracting time spent in other areas away from the total time.

Impact

Making PerfGraph more easy to understand for complex multiphysics runs.

permcody commented 5 years ago

Closed by #12186