Skip to content

Commit d9b2515

Browse files
committed
feat: redefine numa avail
Signed-off-by: linzhecheng <[email protected]>
1 parent 5f1d78e commit d9b2515

File tree

2 files changed

+22
-30
lines changed

2 files changed

+22
-30
lines changed

pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/advisor_helper.go

+2-6
Original file line numberDiff line numberDiff line change
@@ -161,11 +161,7 @@ func (cra *cpuResourceAdvisor) updateNumasAvailableResource() {
161161
if cpuset, ok := reservePoolInfo.TopologyAwareAssignments[id]; ok {
162162
reservePoolNuma = cpuset.Size()
163163
}
164-
reservedForReclaimNuma := 0
165-
if v, ok := cra.reservedForReclaim[id]; ok {
166-
reservedForReclaimNuma = v
167-
}
168-
cra.numaAvailable[id] = cpusPerNuma - reservePoolNuma - reservedForReclaimNuma
164+
cra.numaAvailable[id] = cpusPerNuma - reservePoolNuma
169165
}
170166
}
171167

@@ -201,7 +197,7 @@ func (cra *cpuResourceAdvisor) getRegionMaxRequirement(r region.QoSRegion) float
201197
res = general.MaxFloat64(1, res)
202198
default:
203199
for _, numaID := range r.GetBindingNumas().ToSliceInt() {
204-
res += float64(cra.numaAvailable[numaID])
200+
res += float64(cra.numaAvailable[numaID] - cra.reservedForReclaim[numaID])
205201
}
206202
}
207203
return res

pkg/agent/sysadvisor/plugin/qosaware/resource/cpu/assembler/provisionassembler/assembler_common.go

+20-24
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,6 @@ func (pa *ProvisionAssemblerCommon) assembleShareNB(r region.QoSRegion, result *
124124
// available = NUMA Size - Reserved - ReservedForReclaimed when allowSharedCoresOverlapReclaimedCores == false
125125
// available = NUMA Size - Reserved when allowSharedCoresOverlapReclaimedCores == true
126126
available := getNUMAsResource(*pa.numaAvailable, r.GetBindingNumas())
127-
if *pa.allowSharedCoresOverlapReclaimedCores {
128-
available += reservedForReclaim
129-
}
130127

131128
isolationRequirements, err := pa.getIsolationRequirements(r)
132129
if err != nil {
@@ -189,7 +186,6 @@ func (pa *ProvisionAssemblerCommon) assembleIsolationNB(r region.QoSRegion, resu
189186
_, ok := result.GetPoolEntry(commonstate.PoolNameReclaim, regionNuma)
190187
if !ok {
191188
available := getNUMAsResource(*pa.numaAvailable, r.GetBindingNumas())
192-
reservedForReclaim := getNUMAsResource(*pa.reservedForReclaim, r.GetBindingNumas())
193189

194190
isolationRegions := regionHelper.GetRegions(regionNuma, configapi.QoSRegionTypeIsolation)
195191
isolationSizes := 0
@@ -200,7 +196,8 @@ func (pa *ProvisionAssemblerCommon) assembleIsolationNB(r region.QoSRegion, resu
200196
}
201197
isolationSizes += int(ck[configapi.ControlKnobNonReclaimedCPURequirementUpper].Value)
202198
}
203-
reclaimedCoresSize := general.Max(available-isolationSizes, 0) + reservedForReclaim
199+
// todo
200+
reclaimedCoresSize := general.Max(available-isolationSizes, 0)
204201
result.SetPoolEntry(commonstate.PoolNameReclaim, regionNuma, reclaimedCoresSize, -1)
205202
}
206203
}
@@ -224,26 +221,25 @@ func (pa *ProvisionAssemblerCommon) assembleDedicatedNE(r region.QoSRegion, resu
224221
reclaimedCoresQuota := float64(-1)
225222

226223
// fill in reclaim pool entry for dedicated numa exclusive regions
224+
nonReclaimRequirement := int(controlKnob[configapi.ControlKnobNonReclaimedCPURequirement].Value)
227225
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)
233234
}
234235
} 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)
246237
}
238+
239+
klog.InfoS("assembleDedicatedNE info", "regionName", r.Name(), "reclaimedCoresSize", reclaimedCoresSize,
240+
"available", available, "nonReclaimRequirement", nonReclaimRequirement,
241+
"reservedForReclaim", reservedForReclaim, "controlKnob", controlKnob)
242+
247243
result.SetPoolEntry(commonstate.PoolNameReclaim, regionNuma, reclaimedCoresSize, reclaimedCoresQuota)
248244
return nil
249245
}
@@ -256,9 +252,6 @@ func (pa *ProvisionAssemblerCommon) assembleShare(sharePoolRequirements, sharePo
256252
isolationUppers := general.SumUpMapValues(isolationUpperSizes)
257253

258254
shareAndIsolatedPoolAvailable := getNUMAsResource(*pa.numaAvailable, *pa.nonBindingNumas)
259-
if *pa.allowSharedCoresOverlapReclaimedCores {
260-
shareAndIsolatedPoolAvailable += getNUMAsResource(*pa.reservedForReclaim, *pa.nonBindingNumas)
261-
}
262255

263256
isolationPoolSizes := isolationUpperSizes
264257

@@ -385,6 +378,9 @@ func (pa *ProvisionAssemblerCommon) AssembleProvision() (types.InternalCPUCalcul
385378
return types.InternalCPUCalculationResult{}, err
386379
}
387380

381+
// nonReclaimRequirement和reclaim quota取个小的就行
382+
// 如果canonical 没有返回值,rama会怎么处理?会直接使用rama的结果
383+
388384
switch r.Type() {
389385
case configapi.QoSRegionTypeShare:
390386
if r.IsNumaBinding() {

0 commit comments

Comments
 (0)