Skip to content

Commit

Permalink
Revert "refactor(sysadvisor): refine memory guard" (#535)
Browse files Browse the repository at this point in the history
  • Loading branch information
zzzzhhb committed Apr 8, 2024
1 parent e717ecc commit c025c06
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 169 deletions.
144 changes: 40 additions & 104 deletions pkg/agent/sysadvisor/plugin/qosaware/resource/memory/advisor_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -175,7 +175,7 @@ type containerNUMAMetric struct {
metricValue metricutil.MetricData
podUID string
containerName string
numaID int
numdID int
}

type cgroupMetric struct {
Expand All @@ -184,13 +184,6 @@ type cgroupMetric struct {
cgroupPath string
}

type cgroupNUMAMetric struct {
metricName string
metricValue metricutil.MetricData
numaID int
cgroupPath string
}

var defaultPodList = []*v1.Pod{
{
ObjectMeta: metav1.ObjectMeta{
Expand Down Expand Up @@ -395,33 +388,6 @@ var cgroupMetrics = []cgroupMetric{
},
}

var cgroupNUMAMetrics = []cgroupNUMAMetric{
{
metricName: coreconsts.MetricsMemTotalPerNumaCgroup,
numaID: 0,
cgroupPath: "/kubepods/besteffort",
metricValue: metricutil.MetricData{Value: 6 << 30},
},
{
metricName: coreconsts.MetricsMemTotalPerNumaCgroup,
numaID: 1,
cgroupPath: "/kubepods/besteffort",
metricValue: metricutil.MetricData{Value: 6 << 30},
},
{
metricName: coreconsts.MetricsMemTotalPerNumaCgroup,
numaID: 2,
cgroupPath: "/kubepods/besteffort",
metricValue: metricutil.MetricData{Value: 6 << 30},
},
{
metricName: coreconsts.MetricsMemTotalPerNumaCgroup,
numaID: 3,
cgroupPath: "/kubepods/besteffort",
metricValue: metricutil.MetricData{Value: 6 << 30},
},
}

func TestUpdate(t *testing.T) {
t.Parallel()

Expand All @@ -439,7 +405,6 @@ func TestUpdate(t *testing.T) {
containerMetrics []containerMetric
containerNUMAMetrics []containerNUMAMetric
cgroupMetrics []cgroupMetric
cgroupNUMAMetrics []cgroupNUMAMetric
metricsFetcherSynced *bool
wantAdviceResult types.InternalMemoryCalculationResult
}{
Expand Down Expand Up @@ -683,42 +648,42 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 10 << 20},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemFilePerNumaContainer,
metricValue: metricutil.MetricData{Value: 9 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemFilePerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid3",
containerName: "c3",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemFilePerNumaContainer,
metricValue: metricutil.MetricData{Value: 10 << 20},
podUID: "uid1",
containerName: "c1",
numaID: 1,
numdID: 1,
},
{
metricName: coreconsts.MetricsMemFilePerNumaContainer,
metricValue: metricutil.MetricData{Value: 9 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 1,
numdID: 1,
},
{
metricName: coreconsts.MetricsMemFilePerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid3",
containerName: "c3",
numaID: 1,
numdID: 1,
},
},
wantAdviceResult: types.InternalMemoryCalculationResult{
Expand All @@ -737,39 +702,7 @@ func TestUpdate(t *testing.T) {
},
},
{
name: "set reclaimed group memory limit(succeeded)",
pools: map[string]*types.PoolInfo{
state.PoolNameReserve: {
PoolName: state.PoolNameReserve,
TopologyAwareAssignments: map[int]machine.CPUSet{
0: machine.MustParse("0"),
1: machine.MustParse("24"),
},
OriginalTopologyAwareAssignments: map[int]machine.CPUSet{
0: machine.MustParse("0"),
1: machine.MustParse("24"),
},
},
},
reclaimedEnable: true,
needRecvAdvices: true,
wantHeadroom: *resource.NewQuantity(996<<30, resource.DecimalSI),
nodeMetrics: defaultNodeMetrics,
numaMetrics: defaultNumaMetrics,
cgroupMetrics: cgroupMetrics,
cgroupNUMAMetrics: cgroupNUMAMetrics,
plugins: []types.MemoryAdvisorPluginName{memadvisorplugin.MemoryGuard},
wantAdviceResult: types.InternalMemoryCalculationResult{
ExtraEntries: []types.ExtraMemoryAdvices{
{
CgroupPath: "/kubepods/besteffort",
Values: map[string]string{string(memoryadvisor.ControlKnobKeyMemoryLimitInBytes): strconv.Itoa(240 << 30)},
},
},
},
},
{
name: "set reclaimed group memory limit(failed)",
name: "set reclaimed group memory limit",
pools: map[string]*types.PoolInfo{
state.PoolNameReserve: {
PoolName: state.PoolNameReserve,
Expand All @@ -788,9 +721,15 @@ func TestUpdate(t *testing.T) {
wantHeadroom: *resource.NewQuantity(996<<30, resource.DecimalSI),
nodeMetrics: defaultNodeMetrics,
numaMetrics: defaultNumaMetrics,
cgroupMetrics: cgroupMetrics,
plugins: []types.MemoryAdvisorPluginName{memadvisorplugin.MemoryGuard},
wantAdviceResult: types.InternalMemoryCalculationResult{
ExtraEntries: []types.ExtraMemoryAdvices{},
ExtraEntries: []types.ExtraMemoryAdvices{
{
CgroupPath: "/kubepods/besteffort",
Values: map[string]string{string(memoryadvisor.ControlKnobKeyMemoryLimitInBytes): strconv.Itoa(375 << 30)},
},
},
},
},
{
Expand Down Expand Up @@ -1188,28 +1127,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid3",
containerName: "c3",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid4",
containerName: "c4",
numaID: 0,
numdID: 0,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1347,28 +1286,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 10},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 10},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 10},
podUID: "uid3",
containerName: "c3",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 512 << 10},
podUID: "uid4",
containerName: "c4",
numaID: 0,
numdID: 0,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1473,28 +1412,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid3",
containerName: "c3",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 512 << 20},
podUID: "uid4",
containerName: "c4",
numaID: 0,
numdID: 0,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1632,28 +1571,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid3",
containerName: "c3",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid4",
containerName: "c4",
numaID: 0,
numdID: 0,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1766,28 +1705,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 2,
numdID: 2,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid4",
containerName: "c4",
numaID: 2,
numdID: 2,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1898,28 +1837,28 @@ func TestUpdate(t *testing.T) {
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid2",
containerName: "c2",
numaID: 0,
numdID: 0,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 2 << 30},
podUID: "uid1",
containerName: "c1",
numaID: 2,
numdID: 2,
},
{
metricName: coreconsts.MetricsMemAnonPerNumaContainer,
metricValue: metricutil.MetricData{Value: 1 << 30},
podUID: "uid4",
containerName: "c4",
numaID: 2,
numdID: 2,
},
},
wantHeadroom: *resource.NewQuantity(980<<30, resource.DecimalSI),
Expand Down Expand Up @@ -1957,14 +1896,11 @@ func TestUpdate(t *testing.T) {
metricsFetcher.SetContainerMetric(containerMetric.podUID, containerMetric.containerName, containerMetric.metricName, containerMetric.metricValue)
}
for _, containerNUMAMetric := range tt.containerNUMAMetrics {
metricsFetcher.SetContainerNumaMetric(containerNUMAMetric.podUID, containerNUMAMetric.containerName, strconv.Itoa(containerNUMAMetric.numaID), containerNUMAMetric.metricName, containerNUMAMetric.metricValue)
metricsFetcher.SetContainerNumaMetric(containerNUMAMetric.podUID, containerNUMAMetric.containerName, strconv.Itoa(containerNUMAMetric.numdID), containerNUMAMetric.metricName, containerNUMAMetric.metricValue)
}
for _, qosClassMetric := range tt.cgroupMetrics {
metricsFetcher.SetCgroupMetric(qosClassMetric.cgroupPath, qosClassMetric.metricName, qosClassMetric.metricValue)
}
for _, cgroupNUMAMetric := range tt.cgroupNUMAMetrics {
metricsFetcher.SetCgroupNumaMetric(cgroupNUMAMetric.cgroupPath, cgroupNUMAMetric.numaID, cgroupNUMAMetric.metricName, cgroupNUMAMetric.metricValue)
}
if tt.metricsFetcherSynced != nil {
metricsFetcher.SetSynced(*tt.metricsFetcherSynced)
}
Expand Down
Loading

0 comments on commit c025c06

Please sign in to comment.