in pkg/noderesourcetopology/numaresources.go [145:182]
func subtractResourcesFromNUMANodeList(lh logr.Logger, nodes NUMANodeList, numaID int, qos corev1.PodQOSClass, containerRes corev1.ResourceList) error {
logEntries := []any{"numaCell", numaID}
for _, node := range nodes {
if node.NUMAID != numaID {
continue
}
lh.V(5).Info("NUMA resources before", append(logEntries, stringify.ResourceListToLoggable(node.Resources)...)...)
for resName, resQty := range containerRes {
isAffine := isNUMAAffineResource(resName)
if qos != corev1.PodQOSGuaranteed && isAffine {
lh.V(4).Info("ignoring QoS-depending exclusive request", "resource", resName, "QoS", qos)
continue
}
if resQty.IsZero() {
lh.V(4).Info("ignoring zero-valued request", "resource", resName)
continue
}
nResQ, ok := node.Resources[resName]
if !ok {
lh.V(4).Info("ignoring missing resource", "resource", resName, "affine", isAffine, "request", resQty.String())
continue
}
nodeResQty := nResQ.DeepCopy()
nodeResQty.Sub(resQty)
if nodeResQty.Sign() < 0 {
lh.V(1).Info("resource quantity should not be a negative value", "numaCell", numaID, "resource", resName, "quantity", nResQ.String(), "request", resQty.String())
return fmt.Errorf("resource %q request %s exceeds NUMA %d availability %s", string(resName), resQty.String(), numaID, nResQ.String())
}
node.Resources[resName] = nodeResQty
}
lh.V(5).Info("NUMA resources after", append(logEntries, stringify.ResourceListToLoggable(node.Resources)...)...)
}
return nil
}