Merge pull request #106840 from Nordix/multi-numa

ReservedMemory Configuration for NUMA
This commit is contained in:
Kubernetes Prow Robot 2022-01-27 06:46:25 -08:00 committed by GitHub
commit f90267f062
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 53 additions and 35 deletions

View File

@ -188,16 +188,16 @@ func (v *ReservedMemoryVar) Set(s string) error {
return nil return nil
} }
numaNodeReservation := strings.Split(s, ":") numaNodeReservations := strings.Split(s, ";")
for _, reservation := range numaNodeReservations {
numaNodeReservation := strings.Split(reservation, ":")
if len(numaNodeReservation) != 2 { if len(numaNodeReservation) != 2 {
return fmt.Errorf("the reserved memory has incorrect format, expected numaNodeID:type=quantity[,type=quantity...], got %s", s) return fmt.Errorf("the reserved memory has incorrect format, expected numaNodeID:type=quantity[,type=quantity...], got %s", reservation)
} }
memoryTypeReservations := strings.Split(numaNodeReservation[1], ",") memoryTypeReservations := strings.Split(numaNodeReservation[1], ",")
if len(memoryTypeReservations) < 1 { if len(memoryTypeReservations) < 1 {
return fmt.Errorf("the reserved memory has incorrect format, expected numaNodeID:type=quantity[,type=quantity...], got %s", s) return fmt.Errorf("the reserved memory has incorrect format, expected numaNodeID:type=quantity[,type=quantity...], got %s", reservation)
} }
numaNodeID, err := strconv.Atoi(numaNodeReservation[0]) numaNodeID, err := strconv.Atoi(numaNodeReservation[0])
if err != nil { if err != nil {
return fmt.Errorf("failed to convert the NUMA node ID, exptected integer, got %s", numaNodeReservation[0]) return fmt.Errorf("failed to convert the NUMA node ID, exptected integer, got %s", numaNodeReservation[0])
@ -208,10 +208,10 @@ func (v *ReservedMemoryVar) Set(s string) error {
Limits: map[v1.ResourceName]resource.Quantity{}, Limits: map[v1.ResourceName]resource.Quantity{},
} }
for _, reservation := range memoryTypeReservations { for _, memoryTypeReservation := range memoryTypeReservations {
limit := strings.Split(reservation, "=") limit := strings.Split(memoryTypeReservation, "=")
if len(limit) != 2 { if len(limit) != 2 {
return fmt.Errorf("the reserved limit has incorrect value, expected type=quantatity, got %s", reservation) return fmt.Errorf("the reserved limit has incorrect value, expected type=quantatity, got %s", memoryTypeReservation)
} }
resourceName := v1.ResourceName(limit[0]) resourceName := v1.ResourceName(limit[0])
@ -226,9 +226,8 @@ func (v *ReservedMemoryVar) Set(s string) error {
memoryReservation.Limits[v1.ResourceName(limit[0])] = q memoryReservation.Limits[v1.ResourceName(limit[0])] = q
} }
*v.Value = append(*v.Value, memoryReservation) *v.Value = append(*v.Value, memoryReservation)
}
return nil return nil
} }

View File

@ -224,6 +224,25 @@ func TestReservedMemoryVar(t *testing.T) {
}, },
}, },
}, },
{
desc: "valid input with ';' as separator for multiple reserved-memory arguments",
argc: "blah --reserved-memory=0:memory=1Gi,hugepages-1Gi=1Gi;1:memory=1Gi",
expectVal: []kubeletconfig.MemoryReservation{
{
NumaNode: 0,
Limits: v1.ResourceList{
v1.ResourceMemory: memory1Gi,
resourceNameHugepages1Gi: memory1Gi,
},
},
{
NumaNode: 1,
Limits: v1.ResourceList{
v1.ResourceMemory: memory1Gi,
},
},
},
},
{ {
desc: "invalid input", desc: "invalid input",
argc: "blah --reserved-memory=bad-input", argc: "blah --reserved-memory=bad-input",