@@ -162,15 +162,9 @@ impl WorkloadGroupResourceManagerInner {
162162 workload_resource. meta . quotas . get ( MEMORY_QUOTA_KEY )
163163 {
164164 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 ) ;
172165 }
173166
167+ self . update_mem_usage ( & online_workload_group) ;
174168 return Ok ( workload_resource) ;
175169 } ;
176170
@@ -182,46 +176,26 @@ impl WorkloadGroupResourceManagerInner {
182176 let old_percentage = old_workload_group. meta . quotas . get ( MEMORY_QUOTA_KEY ) ;
183177
184178 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- }
192179 ( None , Some ( QuotaValue :: Percentage ( v) ) ) => {
193180 self . percent_normalizer . update ( * v) ;
194- self . update_mem_usage ( & online_workload_group) ;
195181 }
196182 ( Some ( QuotaValue :: Percentage ( v) ) , None ) => {
197183 self . percent_normalizer . remove ( * v) ;
198- self . update_mem_usage ( & online_workload_group) ;
199184 }
200185 ( Some ( QuotaValue :: Percentage ( v) ) , Some ( QuotaValue :: Bytes ( _) ) ) => {
201186 self . percent_normalizer . remove ( * v) ;
202- self . update_mem_usage ( & online_workload_group) ;
203187 }
204188 ( Some ( QuotaValue :: Percentage ( old) ) , Some ( QuotaValue :: Percentage ( new) ) ) => {
205189 self . percent_normalizer . remove ( * old) ;
206190 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) ;
214191 }
215192 ( Some ( QuotaValue :: Bytes ( _) ) , Some ( QuotaValue :: Percentage ( v) ) ) => {
216193 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) ;
222194 }
223195 _ => { }
224196 }
197+
198+ self . update_mem_usage ( & online_workload_group) ;
225199 }
226200
227201 Ok ( workload_resource)
@@ -259,7 +233,17 @@ impl WorkloadGroupResourceManagerInner {
259233 . max_memory_usage
260234 . store ( memory_usage, Ordering :: Relaxed ) ;
261235 } 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 )
263247 }
264248 }
265249 }
0 commit comments