TimePerEvent convention - dmwm/WMCore GitHub Wiki

The unit for TimePerEvent is seconds, and Request Manager calculates it as:

TimePerEvent = (walltime of the job) / (number of events processed)

Where:

  • "walltime of the job" is the amount of time that passes from the beginning of the job until the end;
  • and "number of events processed" is the amount of processes that make it to the output file.

That means, time per event gets calculated on the amount of events that pass any existent filters (when filter efficiency is < 1.0), not on the number of events that are either generated or input of this given job.

Thus, if we get a request with:

  • Multicore=8 and TimePerEvent=5: it means we'll process 10 events in 50 secs (using 8 cores)
  • Multicore=1 and TimePerEvent=5: it means we'll process 10 events in 50 secs (using 1 core)

If the submitter estimates TpE by timing an 8 core job, but then submits a corresponding 1 core workflow to ReqMgr, the TpE estimates may be off by a factor of 8.

Based on this TimePerEvent, Request Manager will automatically calculate the number of events per job such that it can create ~8h jobs. Note events per lumi is a multiple of events per job, such that almost all of the lumis have the same size in terms of events.

Special note:

  • TaskChain: each task should have its own definition of time per event.
  • StepChain: given that all the steps are executed within the same job, time per event needs to take all of the steps into consideration.