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
Streamer input source prefetching (12_5_X) #39088
Streamer input source prefetching (12_5_X) #39088
Conversation
-code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-39088/31600
Code check has found code style and quality issues which could be resolved by applying following patch(s)
|
12_4_X backport branch (PR will be created after this is reviewed): |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-39088/31601
|
A new Pull Request was created by @smorovic (Srecko Morovic) for master. It involves the following packages:
@cmsbuild, @smuzaffar, @Dr15Jones, @makortel can you please review it and eventually sign? Thanks. cms-bot commands are listed here |
@cmsbuild please test |
abort test |
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-39088/31604
|
83c865e
to
8ad3ecd
Compare
* remove unnecessary class member * allow zero-copy event reading because EventHeader and EventMessage consist of byte and byte array variables and non-aligned casting is safe
8ad3ecd
to
20d7222
Compare
+code-checks Logs: https://cmssdt.cern.ch/SDT/code-checks/cms-sw-PR-39088/31669
|
Pull request #39088 was updated. @cmsbuild, @smuzaffar, @Dr15Jones, @makortel can you please check and sign again. |
Apparently the Event Header EventMsgView uses char* pointer to traverse through the message: Conclusion is that alignment is not an issue. So, in the latest commit I enabled 'zero-copy' mode parameter for reading events. |
@cmsbuild please test |
+1 Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-b93f17/26967/summary.html Comparison SummarySummary:
|
+1 |
This pull request is fully signed and it will be integrated in one of the next master IBs (tests are also fine). This pull request will now be reviewed by the release team before it's merged. @perrotta, @dpiparo, @qliphy, @rappoccio (and backports should be raised in the release meeting by the corresponding L2) |
urgent Just for @cms-sw/orp-l2 to note that it would be good to have this PR in pre5 so that Tier0 could potentially test the functionality soon (before it becomes part of a production release). |
+1 |
PR description:
Adds a preallocated buffer intended to avoid many small reads when reading streamer files. This is aimed at improving EOS reading performance (see #38997).
A pointer to the big buffer is passed if possible for reading header and even payloads (contiguous), otherwise data is copied to the intermediate header or event buffer.
New parameter enables and configures size of the large buffer in MBytes (0 to disable), for example:
PR validation:
A new unit test in
IOPool/Streamer
specifically checks behavior with this parameter (1 MB with small generated events). A file larger than the buffer was created to test behavior at the buffer boundary.Internally, source checks adler32 checksum of both the header and event payload (compared to a header field), so corruption of payloads would be caught by unit tests.
Streamer source in
CalibCalorimetry/EcalLaserSorting
uses this code and has a respective unit test in that location.Similarly, DQM streamer input source is tested as part of DAQ I/O chain in
EventFilter/Utilities
unit test.