@@ -162,15 +162,9 @@ impl WorkloadGroupResourceManagerInner {
162
162
workload_resource. meta . quotas . get ( MEMORY_QUOTA_KEY )
163
163
{
164
164
self . percent_normalizer . update ( * v) ;
165
- self . update_mem_usage ( & online_workload_group) ;
166
- } else if let Some ( QuotaValue :: Bytes ( v) ) =
167
- workload_resource. meta . quotas . get ( MEMORY_QUOTA_KEY )
168
- {
169
- workload_resource
170
- . max_memory_usage
171
- . store ( * v, Ordering :: Relaxed ) ;
172
165
}
173
166
167
+ self . update_mem_usage ( & online_workload_group) ;
174
168
return Ok ( workload_resource) ;
175
169
} ;
176
170
@@ -182,46 +176,26 @@ impl WorkloadGroupResourceManagerInner {
182
176
let old_percentage = old_workload_group. meta . quotas . get ( MEMORY_QUOTA_KEY ) ;
183
177
184
178
match ( old_percentage, new_percentage) {
185
- ( None , None ) => {
186
- return Ok ( workload_resource) ;
187
- }
188
- ( None , Some ( QuotaValue :: Bytes ( _v) ) ) => {
189
- self . update_mem_usage ( & online_workload_group) ;
190
- return Ok ( workload_resource) ;
191
- }
192
179
( None , Some ( QuotaValue :: Percentage ( v) ) ) => {
193
180
self . percent_normalizer . update ( * v) ;
194
- self . update_mem_usage ( & online_workload_group) ;
195
181
}
196
182
( Some ( QuotaValue :: Percentage ( v) ) , None ) => {
197
183
self . percent_normalizer . remove ( * v) ;
198
- self . update_mem_usage ( & online_workload_group) ;
199
184
}
200
185
( Some ( QuotaValue :: Percentage ( v) ) , Some ( QuotaValue :: Bytes ( _) ) ) => {
201
186
self . percent_normalizer . remove ( * v) ;
202
- self . update_mem_usage ( & online_workload_group) ;
203
187
}
204
188
( Some ( QuotaValue :: Percentage ( old) ) , Some ( QuotaValue :: Percentage ( new) ) ) => {
205
189
self . percent_normalizer . remove ( * old) ;
206
190
self . percent_normalizer . update ( * new) ;
207
- self . update_mem_usage ( & online_workload_group) ;
208
- }
209
- ( Some ( QuotaValue :: Bytes ( _) ) , None ) => {
210
- workload_resource
211
- . max_memory_usage
212
- . store ( 0 , Ordering :: Relaxed ) ;
213
- return Ok ( workload_resource) ;
214
191
}
215
192
( Some ( QuotaValue :: Bytes ( _) ) , Some ( QuotaValue :: Percentage ( v) ) ) => {
216
193
self . percent_normalizer . update ( * v) ;
217
- self . update_mem_usage ( & online_workload_group) ;
218
- }
219
- ( Some ( QuotaValue :: Bytes ( _old) ) , Some ( QuotaValue :: Bytes ( _new) ) ) => {
220
- self . update_mem_usage ( & online_workload_group) ;
221
- return Ok ( workload_resource) ;
222
194
}
223
195
_ => { }
224
196
}
197
+
198
+ self . update_mem_usage ( & online_workload_group) ;
225
199
}
226
200
227
201
Ok ( workload_resource)
@@ -259,7 +233,17 @@ impl WorkloadGroupResourceManagerInner {
259
233
. max_memory_usage
260
234
. store ( memory_usage, Ordering :: Relaxed ) ;
261
235
} else {
262
- workload_group. max_memory_usage . store ( 0 , Ordering :: Relaxed )
236
+ let limit = self . global_mem_stat . get_limit ( ) ;
237
+ let usage_ratio = workload_group. meta . get_max_memory_usage_ratio ( ) ;
238
+ let mut memory_usage = 0 ;
239
+
240
+ if limit > 0 {
241
+ memory_usage = limit as usize / 100 * usage_ratio;
242
+ }
243
+
244
+ workload_group
245
+ . max_memory_usage
246
+ . store ( memory_usage, Ordering :: Relaxed )
263
247
}
264
248
}
265
249
}
0 commit comments