Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 98e362c

Browse files
committedMar 20, 2025
Revert "Pod level hugepage for cgroup when unset in container"
This reverts commit f0a1473 and kuberuntime_container_linux_test.go change.
1 parent fd50d92 commit 98e362c

File tree

2 files changed

+17
-33
lines changed

2 files changed

+17
-33
lines changed
 

‎pkg/kubelet/kuberuntime/kuberuntime_container_linux.go

+16-32
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ func (m *kubeGenericRuntimeManager) generateLinuxContainerResources(pod *v1.Pod,
143143
lcr.OomScoreAdj = int64(qos.GetContainerOOMScoreAdjust(pod, container,
144144
int64(m.machineInfo.MemoryCapacity)))
145145

146-
lcr.HugepageLimits = GetHugepageLimitsFromResources(pod, container.Resources)
146+
lcr.HugepageLimits = GetHugepageLimitsFromResources(container.Resources)
147147

148148
// Configure swap for the container
149149
m.configureContainerSwapResources(lcr, pod, container)
@@ -300,7 +300,7 @@ func (m *kubeGenericRuntimeManager) calculateLinuxResources(cpuRequest, cpuLimit
300300
}
301301

302302
// GetHugepageLimitsFromResources returns limits of each hugepages from resources.
303-
func GetHugepageLimitsFromResources(pod *v1.Pod, resources v1.ResourceRequirements) []*runtimeapi.HugepageLimit {
303+
func GetHugepageLimitsFromResources(resources v1.ResourceRequirements) []*runtimeapi.HugepageLimit {
304304
var hugepageLimits []*runtimeapi.HugepageLimit
305305

306306
// For each page size, limit to 0.
@@ -312,20 +312,23 @@ func GetHugepageLimitsFromResources(pod *v1.Pod, resources v1.ResourceRequiremen
312312
}
313313

314314
requiredHugepageLimits := map[string]uint64{}
315+
for resourceObj, amountObj := range resources.Limits {
316+
if !v1helper.IsHugePageResourceName(resourceObj) {
317+
continue
318+
}
315319

316-
// When hugepage limits are specified at pod level, the container limit will
317-
// match the pod level limit, however if the container also specifies,
318-
// its limit will have precedence over the pod level limit
319-
if utilfeature.DefaultFeatureGate.Enabled(kubefeatures.PodLevelResources) && resourcehelper.IsPodLevelResourcesSet(pod) {
320-
for limitName, limitAmount := range pod.Spec.Resources.Limits {
321-
readAndDefineRequiredHugepageLimit(requiredHugepageLimits, limitName, limitAmount)
320+
pageSize, err := v1helper.HugePageSizeFromResourceName(resourceObj)
321+
if err != nil {
322+
klog.InfoS("Failed to get hugepage size from resource", "object", resourceObj, "err", err)
323+
continue
322324
}
323-
}
324325

325-
// If the container and the pod specify, the container will have precedence,
326-
// overriding the pod level limit
327-
for resourceObj, amountObj := range resources.Limits {
328-
readAndDefineRequiredHugepageLimit(requiredHugepageLimits, resourceObj, amountObj)
326+
sizeString, err := v1helper.HugePageUnitSizeFromByteSize(pageSize.Value())
327+
if err != nil {
328+
klog.InfoS("Size is invalid", "object", resourceObj, "err", err)
329+
continue
330+
}
331+
requiredHugepageLimits[sizeString] = uint64(amountObj.Value())
329332
}
330333

331334
for _, hugepageLimit := range hugepageLimits {
@@ -337,25 +340,6 @@ func GetHugepageLimitsFromResources(pod *v1.Pod, resources v1.ResourceRequiremen
337340
return hugepageLimits
338341
}
339342

340-
func readAndDefineRequiredHugepageLimit(requiredHugepageLimits map[string]uint64, resourceObj v1.ResourceName, amountObj resource.Quantity) {
341-
if !v1helper.IsHugePageResourceName(resourceObj) {
342-
return
343-
}
344-
345-
pageSize, err := v1helper.HugePageSizeFromResourceName(resourceObj)
346-
if err != nil {
347-
klog.InfoS("Failed to get hugepage size from resource", "object", resourceObj, "err", err)
348-
return
349-
}
350-
351-
sizeString, err := v1helper.HugePageUnitSizeFromByteSize(pageSize.Value())
352-
if err != nil {
353-
klog.InfoS("Size is invalid", "object", resourceObj, "err", err)
354-
return
355-
}
356-
requiredHugepageLimits[sizeString] = uint64(amountObj.Value())
357-
}
358-
359343
func toKubeContainerResources(statusResources *runtimeapi.ContainerResources) *kubecontainer.ContainerResources {
360344
var cStatusResources *kubecontainer.ContainerResources
361345
runtimeStatusResources := statusResources.GetLinux()

‎pkg/kubelet/kuberuntime/kuberuntime_container_linux_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -665,7 +665,7 @@ func TestGetHugepageLimitsFromResources(t *testing.T) {
665665
}
666666
}
667667

668-
results := GetHugepageLimitsFromResources(&v1.Pod{}, test.resources)
668+
results := GetHugepageLimitsFromResources(test.resources)
669669
if !reflect.DeepEqual(expectedHugepages, results) {
670670
t.Errorf("%s test failed. Expected %v but got %v", test.name, expectedHugepages, results)
671671
}

0 commit comments

Comments
 (0)
Please sign in to comment.