mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 04:27:54 +00:00
fix: fix state validate error after memorymanager with static policy start
(cherry picked from commit b91951f847d0b159c9d8ef32688cc96489ac1884)
This commit is contained in:
parent
0a124e28b6
commit
39726b119f
@ -18,7 +18,6 @@ package memorymanager
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"reflect"
|
||||
"sort"
|
||||
|
||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||
@ -682,10 +681,37 @@ func areMachineStatesEqual(ms1, ms2 state.NUMANodeMap) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(*memoryState1, *memoryState2) {
|
||||
if memoryState1.TotalMemSize != memoryState2.TotalMemSize {
|
||||
klog.ErrorS(nil, "Memory states for the NUMA node and resource are different", "node", nodeID, "resource", resourceName, "memoryState1", *memoryState1, "memoryState2", *memoryState2)
|
||||
return false
|
||||
}
|
||||
|
||||
if memoryState1.SystemReserved != memoryState2.SystemReserved {
|
||||
klog.ErrorS(nil, "Memory states for the NUMA node and resource are different", "node", nodeID, "resource", resourceName, "memoryState1", *memoryState1, "memoryState2", *memoryState2)
|
||||
return false
|
||||
}
|
||||
|
||||
if memoryState1.Allocatable != memoryState2.Allocatable {
|
||||
klog.ErrorS(nil, "Memory states for the NUMA node and resource are different", "node", nodeID, "resource", resourceName, "memoryState1", *memoryState1, "memoryState2", *memoryState2)
|
||||
return false
|
||||
}
|
||||
|
||||
totalFree1 := uint64(0)
|
||||
totalReserved1 := uint64(0)
|
||||
totalFree2 := uint64(0)
|
||||
totalReserved2 := uint64(0)
|
||||
for _, nodeId := range nodeState1.Cells {
|
||||
totalFree1 += ms1[nodeId].MemoryMap[resourceName].Free
|
||||
totalReserved1 += ms1[nodeId].MemoryMap[resourceName].Reserved
|
||||
totalFree2 += ms2[nodeId].MemoryMap[resourceName].Free
|
||||
totalReserved2 += ms2[nodeId].MemoryMap[resourceName].Reserved
|
||||
}
|
||||
|
||||
if totalFree1 != totalFree2 || totalReserved1 != totalReserved2 {
|
||||
klog.ErrorS(nil, "Memory states for the NUMA node and resource are different", "node", nodeID, "resource", resourceName, "memoryState1", *memoryState1, "memoryState2", *memoryState2)
|
||||
return false
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return true
|
||||
|
@ -1024,6 +1024,125 @@ func TestStaticPolicyStart(t *testing.T) {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
description: "shoud equal",
|
||||
expectedAssignments: state.ContainerMemoryAssignments{
|
||||
"pod1": map[string][]state.Block{
|
||||
"container1": {
|
||||
{
|
||||
NUMAAffinity: []int{0, 1},
|
||||
Type: v1.ResourceMemory,
|
||||
Size: 240 * mb,
|
||||
},
|
||||
},
|
||||
},
|
||||
"pod2": map[string][]state.Block{
|
||||
"container2": {
|
||||
{
|
||||
NUMAAffinity: []int{0, 1},
|
||||
Type: v1.ResourceMemory,
|
||||
Size: 10 * mb,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
assignments: state.ContainerMemoryAssignments{
|
||||
"pod1": map[string][]state.Block{
|
||||
"container1": {
|
||||
{
|
||||
NUMAAffinity: []int{0, 1},
|
||||
Type: v1.ResourceMemory,
|
||||
Size: 240 * mb,
|
||||
},
|
||||
},
|
||||
},
|
||||
"pod2": map[string][]state.Block{
|
||||
"container2": {
|
||||
{
|
||||
NUMAAffinity: []int{0, 1},
|
||||
Type: v1.ResourceMemory,
|
||||
Size: 10 * mb,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
expectedMachineState: state.NUMANodeMap{
|
||||
0: &state.NUMANodeState{
|
||||
MemoryMap: map[v1.ResourceName]*state.MemoryTable{
|
||||
v1.ResourceMemory: {
|
||||
Allocatable: 220 * mb,
|
||||
Free: 30 * mb,
|
||||
Reserved: 190 * mb,
|
||||
SystemReserved: 20 * mb,
|
||||
TotalMemSize: 240 * mb,
|
||||
},
|
||||
},
|
||||
Cells: []int{0, 1},
|
||||
NumberOfAssignments: 2,
|
||||
},
|
||||
1: &state.NUMANodeState{
|
||||
MemoryMap: map[v1.ResourceName]*state.MemoryTable{
|
||||
v1.ResourceMemory: {
|
||||
Allocatable: 220 * mb,
|
||||
Free: 160 * mb,
|
||||
Reserved: 60 * mb,
|
||||
SystemReserved: 20 * mb,
|
||||
TotalMemSize: 240 * mb,
|
||||
},
|
||||
},
|
||||
Cells: []int{0, 1},
|
||||
NumberOfAssignments: 2,
|
||||
},
|
||||
},
|
||||
machineState: state.NUMANodeMap{
|
||||
0: &state.NUMANodeState{
|
||||
MemoryMap: map[v1.ResourceName]*state.MemoryTable{
|
||||
v1.ResourceMemory: {
|
||||
Allocatable: 220 * mb,
|
||||
Free: 10 * mb,
|
||||
Reserved: 210 * mb,
|
||||
SystemReserved: 20 * mb,
|
||||
TotalMemSize: 240 * mb,
|
||||
},
|
||||
},
|
||||
Cells: []int{0, 1},
|
||||
NumberOfAssignments: 2,
|
||||
},
|
||||
1: &state.NUMANodeState{
|
||||
MemoryMap: map[v1.ResourceName]*state.MemoryTable{
|
||||
v1.ResourceMemory: {
|
||||
Allocatable: 220 * mb,
|
||||
Free: 180 * mb,
|
||||
Reserved: 40 * mb,
|
||||
SystemReserved: 20 * mb,
|
||||
TotalMemSize: 240 * mb,
|
||||
},
|
||||
},
|
||||
Cells: []int{0, 1},
|
||||
NumberOfAssignments: 2,
|
||||
},
|
||||
},
|
||||
systemReserved: systemReservedMemory{
|
||||
0: map[v1.ResourceName]uint64{
|
||||
v1.ResourceMemory: 20 * mb,
|
||||
},
|
||||
1: map[v1.ResourceName]uint64{
|
||||
v1.ResourceMemory: 20 * mb,
|
||||
},
|
||||
},
|
||||
machineInfo: &cadvisorapi.MachineInfo{
|
||||
Topology: []cadvisorapi.Node{
|
||||
{
|
||||
Id: 0,
|
||||
Memory: 240 * mb,
|
||||
},
|
||||
{
|
||||
Id: 1,
|
||||
Memory: 240 * mb,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
|
Loading…
Reference in New Issue
Block a user