-
Notifications
You must be signed in to change notification settings - Fork 5
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
Script to do release comparison #27
Open
nothingface0
wants to merge
60
commits into
dev
Choose a base branch
from
release_comparison
base: dev
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
nothingface0
force-pushed
the
release_comparison
branch
from
December 6, 2024 15:57
27aca3f
to
4301b49
Compare
nothingface0
force-pushed
the
release_comparison
branch
from
December 18, 2024 16:52
fd6f3df
to
b0d04e0
Compare
baby steps: get args, validate, create the releases.
Instead of assuming that we want to compare a PR against a base release only.
Also create the "upload" dir before execution.
Also keep track of exit codes
To be used with the actual comparison
I think it's cleaner like that
Also use pathlib instead of os for consistency.
...so that the resulting files conform with compareDQMOutput.py and visDQMUpload.
For some extra peace of mind, in case the renaming of the output directories didn't go as planned.
So that multiple invocations of the comparison don't overwrite files in DQMGUI.
Instead of storing them in the "logs" dir under the release, create a subdir named after the common_label.
Mostly machete for special cases.
To make the comparison HTML more understandable, replace the (dummy) wofklow ids with the clients' names.
Also add comments describing what will probably go wrong when they run
Exit early if any of the clients does not return a non-zero exit code for any reason. No point in doing a comparison if the clients don't work properly.
nothingface0
force-pushed
the
release_comparison
branch
from
December 19, 2024 15:03
b0d04e0
to
4e1c7c0
Compare
nothingface0
changed the title
[WIP] Script to do release comparison
Script to do release comparison
Dec 19, 2024
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduction
This PR adds a new script (
cmssw_release_comparison.py
) which combines the functionality ofcmssw_deploy.py
, an execution of the DQM clients andcompareDQMOutput.py
into a single script. The script is meant to be used in Point 5 machines.ZhengChen/Praveen's scripts were used as a reference to make this script. The main difference is that this is a single script, written in python, takes all arguments from the commandline and does not require modifying the
compareDQMOutput.py
andcompareHistograms.py
scripts from CMSSW.Tested with python3.8. No extra dependencies are introduced.
Functionality
The script works like so:
base
andcomp
) with PRs optionally applied on them, usingcmssw_deploy.py
,compareDQMOutput.py
is executed to compare the output files of the two releases, upload the comparison results to the target DQMGUI and generate an HTML report of the changes found, and links to the DQMGUI to show them.The main purpose is to make it as user-friendly as possible, making minimal changes to
compareDQMOutput.py
, while still retaining high configurability.The script allows:
base
and for thecomp
release.base
orcomp
CMSSW.compareDQMOutput.py
cms-sw/cmssw#46854 to be applied to the base CMSSW release, if it's < 15_0_0).Logs generated:
logs
dir of the CMSSW release they belong to.output_dir
subdirectory.Requirements
cvmfs
mounted, with access to CMSSW.fff_dqmtools
installed.Example usage
In this example, the resulting comparison files are uploaded to a local DQMGUI (
http://localhost:8060/dqm/dev
), and the resulting HTML report will be found in/tmp/comparison_results/<datetime>_<base release>_vs_<comp release>/dqm-histo-comparison-summary.html
.Notes and caveats
Warning
Some clients' results are non-deterministic, and multiple runs of the same clients on the same CMSSW releases produce slightly different results.
Most of them seem to be harmless, e.g. differences between strings in the
EventInfo
directory.Other examples are under the
HcalCalib/LEDTask
directory (TimingMean
,TimingRMS
) in the root file created by theHcal
client. Those look harmless too, as they probably have to do with timing the performance of the client which might vary per execution, depedning on the load of the machine.Note
Several DQM clients seem to have special requirements to run and are not currently taken into account:
beam_dqm_sourceclient-live_cfg.py
: Requires adb.key
beamhlt_dqm_sourceclient-live_cfg.py
: Same as above.beamspotdip_dqm_sourceclient-live_cfg.py
: Must be run on P5 to access a DIP servervisualization-live_cfg.py
: It doesn't seem to produce any ROOT file we can use for comparison.visualization-live-secondInstance_cfg.py
: Same as aboveNote
cms-sw/cmssw#46854 needs to be applied to the base release, if a CMSSW version <
15_0_0
is usedDummy workflows
compareDQMOutput.py
was made to compare.root
files generated from different "workflows". For this reason, it expects each.root
file to be under a directory which is named after the workflow (in the format<int>.<int>_<description>
).To make the DQM clients' output compatible to
compareDQMOutput.py
, a "random" workflow number is given to each generated.root
file, by placing each.root
file in a dedicated directory, named after the dummy workflow id. This has the downside that it's not immediately apparent which "workflow" corresponds to which client. Some effort is put into replacing the workflow ids in the generated HTML, post-execution.For reference, the resulting HTML will look something like this:
Tested comparisons
All the comparisons were run from within the
dqm-dev-vm
VM.CMSSW_14_1_5_patch1
+ 46854(required) vsCMSSW_14_1_5_patch1
+46854
: I.e., the exact same release against itself. No changes were expected, but still one can find at least 70 differences are found. The number of differences varies from execution to execution, ranging from 70 to 100. Almost all come from theEventInfo
directory, so at least this many differences are always expected to be present. The command was:CMSSW_14_2_0
+ 46854(required) vsCMSSW_14_2_0
+ 41932. No GTs applied, as there are none for 14_2. Command: