in pkg/noderesourcetopology/plugin.go [65:96]
func subtractFromNUMAs(resources v1.ResourceList, numaNodes NUMANodeList, nodes ...int) {
for resName, quantity := range resources {
for _, node := range nodes {
// quantity is zero no need to iterate through another NUMA node, go to another resource
if quantity.IsZero() {
break
}
nRes := numaNodes[node].Resources
if available, ok := nRes[resName]; ok {
switch quantity.Cmp(available) {
case 0: // the same
// basically zero container resources
quantity.Sub(available)
// zero NUMA quantity
nRes[resName] = resource.Quantity{}
case 1: // container wants more resources than available in this NUMA zone
// substract NUMA resources from container request, to calculate how much is missing
quantity.Sub(available)
// zero NUMA quantity
nRes[resName] = resource.Quantity{}
case -1: // there are more resources available in this NUMA zone than container requests
// substract container resources from resources available in this NUMA node
available.Sub(quantity)
// zero container quantity
quantity = resource.Quantity{}
nRes[resName] = available
}
}
}
}
}