@@ -143,7 +143,7 @@ func (m *kubeGenericRuntimeManager) generateLinuxContainerResources(pod *v1.Pod,
143
143
lcr .OomScoreAdj = int64 (qos .GetContainerOOMScoreAdjust (pod , container ,
144
144
int64 (m .machineInfo .MemoryCapacity )))
145
145
146
- lcr .HugepageLimits = GetHugepageLimitsFromResources (pod , container .Resources )
146
+ lcr .HugepageLimits = GetHugepageLimitsFromResources (container .Resources )
147
147
148
148
// Configure swap for the container
149
149
m .configureContainerSwapResources (lcr , pod , container )
@@ -300,7 +300,7 @@ func (m *kubeGenericRuntimeManager) calculateLinuxResources(cpuRequest, cpuLimit
300
300
}
301
301
302
302
// 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 {
304
304
var hugepageLimits []* runtimeapi.HugepageLimit
305
305
306
306
// For each page size, limit to 0.
@@ -312,20 +312,23 @@ func GetHugepageLimitsFromResources(pod *v1.Pod, resources v1.ResourceRequiremen
312
312
}
313
313
314
314
requiredHugepageLimits := map [string ]uint64 {}
315
+ for resourceObj , amountObj := range resources .Limits {
316
+ if ! v1helper .IsHugePageResourceName (resourceObj ) {
317
+ continue
318
+ }
315
319
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
322
324
}
323
- }
324
325
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 ())
329
332
}
330
333
331
334
for _ , hugepageLimit := range hugepageLimits {
@@ -337,25 +340,6 @@ func GetHugepageLimitsFromResources(pod *v1.Pod, resources v1.ResourceRequiremen
337
340
return hugepageLimits
338
341
}
339
342
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
-
359
343
func toKubeContainerResources (statusResources * runtimeapi.ContainerResources ) * kubecontainer.ContainerResources {
360
344
var cStatusResources * kubecontainer.ContainerResources
361
345
runtimeStatusResources := statusResources .GetLinux ()
0 commit comments