-
Notifications
You must be signed in to change notification settings - Fork 108
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
Replace ddm_quota with dm_weight #12243
base: master
Are you sure you want to change the base?
Replace ddm_quota with dm_weight #12243
Conversation
I did run I have a list of 9 RSEs that do not have |
Jenkins results:
|
@d-ylee the So, can you please verify the WMCore codebase to see (note that only ddm_quota and dm_weight are relevant for this analysis):
In addition, we need to scan the services_config repository to see if any ddm_quota is defined anywhere for WM services (I would remove them even if found only in comments). Note that we need to look into all three branches (test, preprod and prod). I know this is not the review you asked for, but hopefully it gives you a better context and further material to work on ;) |
@amaltaro From what I see, we are using weights from 1 to 100. A question I have is, who determines the dm_weight value, or who converts the ddm_quota bytes to the dm_weight value? |
Here are the list of RSEs that have the ddm_quota and dm_weight attributes:
Extracted are the RSEs with differing values:
|
@d-ylee the In general, this development could have been done as simple as a switch of attribute names. However, I believe we have places where we have a logic like: |
@amaltaro From my initial investigation, here are where I think the ddm_quota was used: MSOutputServices.Rucio.Rucio.py pickRSE (minNeeded variable): WMCore/src/python/WMCore/Services/Rucio/Rucio.py Lines 793 to 798 in d48389c
used in MSOutput.py _getTapeDestination: https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/MicroService/MSOutput/MSOutput.py#L464 used in makeTapeSubscription L394 (dataBytesForTape): WMCore/src/python/WMCore/MicroService/MSOutput/MSOutput.py Lines 393 to 394 in d48389c
calculated by _getDataVolumeForTape (totalSize) L782
In MSOutput, we compare the dataSize to ddm_quota, so I think this could get affected by the change to dm_weight. MSTransferorThe weight is used in ruleAttrs: WMCore/src/python/WMCore/MicroService/MSTransferor/MSTransferor.py Lines 498 to 505 in d48389c
Used in MSTransferor.py createReplicationRule:
Services.Rucio.Rucio.py createReplicationRule:
passed into rucio-clients add_replication_rule in kwargs:
In this case, the weight is added to the DID replication rule: https://github.com/rucio/rucio/blob/90116458e295ae828c9e05ebd6839eed1a5a1bb3/lib/rucio/client/ruleclient.py#L34-L55 MSPileupI'm not too sure how it is used in MSPileup. Could it be in MSPileupTasks.py activeTask?
|
886f19c
to
398663b
Compare
Jenkins results:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@d-ylee thank you for these changes. I am almost sure that we can remove the use of minNeeded
in the pickRSE()
method, but let us first run this through the DM team.
A short summary of your findings are (please correct me if I make any mistake):
- MSTransferor: input data placement is done with an intersection of RSE names according to workflow site lists, campaign, pileup, etc. Such that the actual place to put data in is decided by Rucio with the RSE attribute (now dm_weight)
- MSOutput: we actually calculate if a Tape endpoint has enough space to fit in the total output data. I would suggest to not check it anymore, simply get a weighted RSE name (based on dm_weight attribute) and create the relevant rules
- MSPileup: apparently none of these RSE attributes are used. It does get the account usage and remaining bytes (getAccountUsage()) to calculate if the pileup data fits in there. I would like to simplify it, but we might actually need it at some point, so perhaps we leave it around.
@haozturk @Panos512 do you think we should check if a given Tape endpoint can receive a container (i.e. check if the wmcore_output account still has enough bytes_remaining
at the relevant endpoint)? I am in favor of simply picking a Tape RSE out of the weighted random choice (based on the dm_weight
attribute). Thanks
Jenkins results:
|
dac145e
to
6ae3947
Compare
Jenkins results:
|
Jenkins results:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@d-ylee , these changes are looking good to me.
However, before merging them, I would like to hear from the DM team. I created this thread in mattermost.
Meanwhile, can you please squash the commits accordingly? Thanks
UPDATE: Please also link any configuration/external PRs in the initial PR description
Refactored pickRSE Removed minNeeded in pickRSE
9ad8bea
to
66702cf
Compare
Jenkins results:
|
Hi @amaltaro @d-ylee Thank you.
In short, as it stands this PR will not change any functionality. If the question is whether WM should additionally check if size(dataset) < bytes_remaining_destination, I don't have a definitive answer to this. I'd suggest discussing it at [1] https://github.com/dmwm/WMCore/blob/master/src/python/WMCore/MicroService/MSOutput/MSOutput.py#L465 |
Also added a deprecation warning
Fixes #12055
Status
In development
Description
Changes the rseAttribute used for RSE quota from ddm_quota to dm_weight
Is it backward compatible (if not, which system it affects?)
YES
Related PRs
N/A
External dependencies / deployment changes
N/A