@@ -124,9 +124,6 @@ func (pa *ProvisionAssemblerCommon) assembleShareNB(r region.QoSRegion, result *
124
124
// available = NUMA Size - Reserved - ReservedForReclaimed when allowSharedCoresOverlapReclaimedCores == false
125
125
// available = NUMA Size - Reserved when allowSharedCoresOverlapReclaimedCores == true
126
126
available := getNUMAsResource (* pa .numaAvailable , r .GetBindingNumas ())
127
- if * pa .allowSharedCoresOverlapReclaimedCores {
128
- available += reservedForReclaim
129
- }
130
127
131
128
isolationRequirements , err := pa .getIsolationRequirements (r )
132
129
if err != nil {
@@ -189,7 +186,6 @@ func (pa *ProvisionAssemblerCommon) assembleIsolationNB(r region.QoSRegion, resu
189
186
_ , ok := result .GetPoolEntry (commonstate .PoolNameReclaim , regionNuma )
190
187
if ! ok {
191
188
available := getNUMAsResource (* pa .numaAvailable , r .GetBindingNumas ())
192
- reservedForReclaim := getNUMAsResource (* pa .reservedForReclaim , r .GetBindingNumas ())
193
189
194
190
isolationRegions := regionHelper .GetRegions (regionNuma , configapi .QoSRegionTypeIsolation )
195
191
isolationSizes := 0
@@ -200,7 +196,8 @@ func (pa *ProvisionAssemblerCommon) assembleIsolationNB(r region.QoSRegion, resu
200
196
}
201
197
isolationSizes += int (ck [configapi .ControlKnobNonReclaimedCPURequirementUpper ].Value )
202
198
}
203
- reclaimedCoresSize := general .Max (available - isolationSizes , 0 ) + reservedForReclaim
199
+ // todo
200
+ reclaimedCoresSize := general .Max (available - isolationSizes , 0 )
204
201
result .SetPoolEntry (commonstate .PoolNameReclaim , regionNuma , reclaimedCoresSize , - 1 )
205
202
}
206
203
}
@@ -224,26 +221,25 @@ func (pa *ProvisionAssemblerCommon) assembleDedicatedNE(r region.QoSRegion, resu
224
221
reclaimedCoresQuota := float64 (- 1 )
225
222
226
223
// fill in reclaim pool entry for dedicated numa exclusive regions
224
+ nonReclaimRequirement := int (controlKnob [configapi .ControlKnobNonReclaimedCPURequirement ].Value )
227
225
if ! r .EnableReclaim () {
228
- if cgroups .IsCgroup2UnifiedMode () {
229
- reclaimedCoresQuota = float64 (reservedForReclaim )
230
- reclaimedCoresSize = available + reservedForReclaim
231
- } else {
232
- reclaimedCoresSize = reservedForReclaim
226
+ nonReclaimRequirement = available
227
+ }
228
+ if cgroups .IsCgroup2UnifiedMode () {
229
+ reclaimedCoresSize = available
230
+ reclaimedCoresQuota = general .MaxFloat64 (float64 (reservedForReclaim ), float64 (available - nonReclaimRequirement ))
231
+
232
+ if quota , ok := controlKnob [configapi .ControlKnobReclaimedCPUQuota ]; ok {
233
+ reclaimedCoresQuota = general .MinFloat64 (reclaimedCoresQuota , quota .Value )
233
234
}
234
235
} else {
235
- nonReclaimRequirement := int (controlKnob [configapi .ControlKnobNonReclaimedCPURequirement ].Value )
236
- if cgroups .IsCgroup2UnifiedMode () {
237
- reclaimedCoresSize = available + reservedForReclaim
238
- reclaimedCoresQuota = float64 (available + reservedForReclaim - nonReclaimRequirement )
239
- } else {
240
- reclaimedCoresSize = available + reservedForReclaim - nonReclaimRequirement
241
- }
242
-
243
- klog .InfoS ("assemble info" , "regionName" , r .Name (), "reclaimedCoresSize" , reclaimedCoresSize ,
244
- "available" , available , "nonReclaimRequirement" , nonReclaimRequirement ,
245
- "reservedForReclaim" , reservedForReclaim )
236
+ reclaimedCoresSize = general .Max (reservedForReclaim , available - nonReclaimRequirement )
246
237
}
238
+
239
+ klog .InfoS ("assembleDedicatedNE info" , "regionName" , r .Name (), "reclaimedCoresSize" , reclaimedCoresSize ,
240
+ "available" , available , "nonReclaimRequirement" , nonReclaimRequirement ,
241
+ "reservedForReclaim" , reservedForReclaim , "controlKnob" , controlKnob )
242
+
247
243
result .SetPoolEntry (commonstate .PoolNameReclaim , regionNuma , reclaimedCoresSize , reclaimedCoresQuota )
248
244
return nil
249
245
}
@@ -256,9 +252,6 @@ func (pa *ProvisionAssemblerCommon) assembleShare(sharePoolRequirements, sharePo
256
252
isolationUppers := general .SumUpMapValues (isolationUpperSizes )
257
253
258
254
shareAndIsolatedPoolAvailable := getNUMAsResource (* pa .numaAvailable , * pa .nonBindingNumas )
259
- if * pa .allowSharedCoresOverlapReclaimedCores {
260
- shareAndIsolatedPoolAvailable += getNUMAsResource (* pa .reservedForReclaim , * pa .nonBindingNumas )
261
- }
262
255
263
256
isolationPoolSizes := isolationUpperSizes
264
257
@@ -385,6 +378,9 @@ func (pa *ProvisionAssemblerCommon) AssembleProvision() (types.InternalCPUCalcul
385
378
return types.InternalCPUCalculationResult {}, err
386
379
}
387
380
381
+ // nonReclaimRequirement和reclaim quota取个小的就行
382
+ // 如果canonical 没有返回值,rama会怎么处理?会直接使用rama的结果
383
+
388
384
switch r .Type () {
389
385
case configapi .QoSRegionTypeShare :
390
386
if r .IsNumaBinding () {
0 commit comments