@@ -9,24 +9,32 @@ client = Client()
99# https://cmsdmops.docs.cern.ch/Operators/ManageDMWeight/
1010
1111DRY_RUN = False
12- MAX_DM_WEIGHT = 100
13- MIN_DM_WEIGHT = 1
12+ TOTAL_DM_WEIGHT = 100
1413stats = {}
1514
1615def print_results ():
17- headers = ['RSE' , 'PLEDGE (PB)' , 'FREE SPACE (PB)' , "RELATIVE FREE (%)" , "DM WEIGHT COEFFICIENT" , "DM_WEIGHT" ]
16+ headers = ['RSE' , 'PLEDGE (PB)' , 'FREE SPACE (PB)' , 'EXPIRED SPACE (PB)' , 'RELATIVE PLEDGE (%)' , "RELATIVE FREE (%)" , "RELATIVE EXPIRED (%)" , "DM WEIGHT COEFFICIENT" , "DM_WEIGHT" ]
1817 table_disk = []
1918 table_tape = []
2019 for rse , values in stats .items ():
2120 pledge = values ["pledge" ] / 1e15
2221 free = values ["free" ] / 1e15
22+ expired = values ["expired" ] / 1e15
23+
2324 relative_free = (free / pledge ) * 100
25+ relative_expired = (expired / pledge ) * 100
26+ relative_pledge = values ["relative_pledge" ] * 100
27+
2428 dm_weight_coefficient = values ["dm_weight_coefficient" ]
2529 dm_weight = values ["dm_weight" ]
2630 if "Tape" in rse :
27- table_tape .append ([rse ,pledge ,free ,relative_free ,dm_weight_coefficient , dm_weight ])
31+ table_tape .append ([rse ,pledge ,free ,expired , relative_pledge , relative_free , relative_expired ,dm_weight_coefficient , dm_weight ])
2832 else :
29- table_disk .append ([rse ,pledge ,free ,relative_free ,dm_weight_coefficient , dm_weight ])
33+ table_disk .append ([rse ,pledge ,free ,expired ,relative_pledge ,relative_free ,relative_expired ,dm_weight_coefficient , dm_weight ])
34+
35+ # Sort tables by DM_WEIGHT (column 8) in descending order
36+ table_disk .sort (key = lambda x : x [8 ], reverse = True )
37+ table_tape .sort (key = lambda x : x [8 ], reverse = True )
3038
3139 print (tabulate (table_disk , headers = headers ))
3240 print (tabulate (table_tape , headers = headers ))
@@ -40,6 +48,8 @@ def get_sum_of_all_rse_statics(rse_expression):
4048 result += static
4149 return result
4250
51+ def get_min_free_space (rse ):
52+ return client .get_rse_limits (rse )["MinFreeSpace" ]
4353
4454def get_rse_usage (rse ):
4555 rse_usage = list (client .get_rse_usage (rse ))
@@ -70,12 +80,17 @@ def calculate_dm_weights(rse_expression, static_weight, free_weight, expired_wei
7080
7181 for rse in rses :
7282 static , rucio , expired = get_rse_usage (rse )
83+ try :
84+ min_free_space = get_min_free_space (rse )
85+ except Exception as e :
86+ print (f"Error getting min free space for { rse } : { e } " )
87+ min_free_space = 0
7388
7489 # Normalise
7590 if static == 0 :
7691 continue # Skip if static is 0
7792
78- free = static - rucio
93+ free = static - rucio - min_free_space
7994
8095 # Control dm_weight for specially configured rses
8196 rse_attributes = client .list_rse_attributes (rse )
@@ -108,7 +123,9 @@ def calculate_dm_weights(rse_expression, static_weight, free_weight, expired_wei
108123
109124 stats [rse ] = {
110125 "pledge" : static ,
126+ "relative_pledge" : static / total_static ,
111127 "free" : free ,
128+ "expired" : expired ,
112129 "dm_weight_coefficient" : dm_weight_coefficient ,
113130 }
114131 dm_weights [rse ] = dm_weight
@@ -120,16 +137,7 @@ def normalize_dm_weights(dm_weights):
120137 min_positive_weight = min ([n for n in weights if n > 0 ])
121138 for rse , weight in dm_weights .items ():
122139
123- # Don't take 0 weights into normalization, since they are manually overriden
124- if weight == 0 :
125- dm_weight = weight
126- else :
127- # This normalization sets the lowest dm_weight to 0
128- dm_weight = int (((weight - min_positive_weight ) / (max (weights ) - min_positive_weight )) * MAX_DM_WEIGHT )
129- # Make the lowest dm_weight non-zero
130- if dm_weight == 0 :
131- dm_weight = MIN_DM_WEIGHT
132- #dm_weight = int((weight/sum(weights)) * MAX_DM_WEIGHT)
140+ dm_weight = (weight / sum (weights )) * TOTAL_DM_WEIGHT
133141 dm_weights [rse ] = dm_weight
134142 stats [rse ]["dm_weight" ] = dm_weight
135143
@@ -166,8 +174,8 @@ def main():
166174 # T3s do not have the "static" usage set, they are quasi-static
167175
168176 run (rse_expression = "rse_type=DISK&cms_type=real&tier<3&tier>0" ,
169- static_weight = 0.2 ,
170- free_weight = 0.5 ,
177+ static_weight = 0.35 ,
178+ free_weight = 0.35 ,
171179 expired_weight = 0.3 ,
172180 make_quadratic = True )
173181
0 commit comments