mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 21:47:07 +00:00
Merge pull request #106840 from Nordix/multi-numa
ReservedMemory Configuration for NUMA
This commit is contained in:
commit
f90267f062
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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",
|
||||||
|
Loading…
Reference in New Issue
Block a user