Timer Guide

Understanding the timers in E3SM.

This timing library is used in all components of E3SM including the driver/coupler.

Below is a few lines from the top of “model_timing_stats”. This file is written out at the end of a run in $RUNDIR/timing/ and also copied to $CASEDIR/timing where it is renamed to model_timing_stats.<jobid>.<date-string> (so multiple runs of the same case will accumulate model_time_stats.* files in that dir). Example filename: e3sm_timing_stats.209399.220810-232430


***** GLOBAL STATISTICS ( 6720 MPI TASKS) ***** $Id: gptl.c,v 1.157 2011-03-28 20:55:18 rosinski Exp $ 'count' is cumulative. All other stats are max/min 'on' indicates whether the timer was active during output, and so stats are lower or upper bounds. name on processes threads count walltotal wallmax (proc thrd ) wallmin (proc thrd ) "CPL:INIT" - 6720 6720 6.720000e+03 5.423981e+05 82.145 ( 60 0) 77.582 ( 5906 0) "CPL:cime_pre_init1" - 6720 6720 6.720000e+03 1.456266e+05 22.453 ( 53 0) 20.920 ( 4726 0) "CPL:mpi_init" - 6720 6720 6.720000e+03 1.286709e+05 19.927 ( 39 0) 18.394 ( 4727 0) "CPL:ESMF_Initialize" - 6720 6720 6.720000e+03 4.814818e-01 0.001 ( 4437 0) 0.000 ( 20 0)

“name” name of the timer.


“processes” number of mpi tasks the timer is called on.

“threads” total number of threads the timer is called on. Will be equal to processes for single-threaded runs.

“count” how many times the timer was called over all processors and threads over the entire run..

“walltotal” total time in the timer for all calls on all processors/threads.

“wallmax (proc thrd)” the processor and thread that took the most time (over all processors/threads) and the value of that time.

“wallmin (proc thrd)” the processor and thread that took the least time (over all processors/threads) and the value of that time


The data in model_timing_stats is postprocessed by CIME and another file is placed in $CASEDIR/timing with summary statistics such as simulated years per day for each component, the pelayout and other useful information. The filename has the form e3sm_timing.<casename>.<jobid>.<date-string>.

If you look in the $RUNDIR after a successful run with create_newcase, the timing dir and its contents have been collected in to a file with the name timing.<jobid>.<date-string>.tar.gz. If you use create_test, the timing dir is left alone.


The source code for the timing library is in E3SM/share/timing