New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make time report sane for threading #7599
Make time report sane for threading #7599
Conversation
CPU time measurement is for the application as a whole and therefore cannot be determined on an event by event basis. Therefore the event level CPU measurement has been dropped. The average event time is now properly calculated so it is the average time it takes an event to processes on a stream. We now calculate event throughput which measures how fast the entire job is processing events on average.
The edm::WallclockTimer is meant to replace edm::CPUTimer for the cases where measuring CPU time in a threaded application is not appropriate.
The tools for measuring CPU time actually measure CPU time for all cores being used by the process. Therefore recording such information per Event, Path, and Module makes no sense when multiple threads are running. We now only record CPU time for the event loop as a whole and report only wall clock time for all other measurements. We also now report both the wall clock time for the entire event loop but also the sum of the time for each all Streams. The former allows throughput to be measured while the later is useful for determining the average time it takes one Event to be processed.
A new Pull Request was created by @Dr15Jones (Chris Jones) for CMSSW_7_4_X. Make time report sane for threading It involves the following packages: FWCore/Framework @cmsbuild, @Dr15Jones, @ktf, @nclopezo can you please review it and eventually sign? Thanks. |
please test |
+1 |
The tests are being triggered in jenkins. |
This pull request is fully signed and it will be integrated in one of the next CMSSW_7_4_X IBs unless changes or unless it breaks tests. This pull request requires discussion in the ORP meeting before it's merged. @davidlange6, @Degano, @ktf, @smuzaffar |
This pull request is fully signed and it will be integrated in one of the next CMSSW_7_4_X IBs unless changes or unless it breaks tests. This pull request requires discussion in the ORP meeting before it's merged. @davidlange6, @Degano, @ktf, @smuzaffar |
-1 Tested at: e07466f ---> test runtestPhysicsToolsPatAlgos had ERRORS you can see the results of the tests here: |
This pull request is fully signed and it will be integrated in one of the next CMSSW_7_4_X IBs unless changes (but tests are reportedly failing). This pull request requires discussion in the ORP meeting before it's merged. @davidlange6, @Degano, @ktf, @smuzaffar |
-1 Tested at: 5963526 ---> test runtestTqafTopJetCombination had ERRORS you can see the results of the tests here: |
Make time report sane for threading
Chris, please put back the CPU timing for single-thread applications. |
@Dr15Jones: |
It would help if you could state what problem you are trying to solve with the use of CPU time. |
Hi Chris, basic resource use monitoring by module is much more reliable with CPU time, To the first order, a wall-clock summary based on events excluding the On 2/13/15 9:08 AM, Chris Jones wrote:
Vyacheslav (Slava) Krutelyov |
The time reading from the edm::Source is actually already removed from the per module timing. This was a side effect of removing the time spent in 'getBy*' in order to not overcount when doing unscheduled execution. |
The tools for measuring CPU time actually measure CPU time for all cores being used by the process. Therefore recording such information per Event, Path, and Module makes no sense when multiple threads are running. We now only record CPU time for the event loop as a whole and report only wall clock time for all other measurements. We also now report both the wall clock time for the entire event loop but also the sum of the time for each all Streams. The former allows throughput to be measured while the later is useful for determining the average time it takes one Event to be processed.