From 17000bad0b9ce05f728b72da8863c76c7dac06c2 Mon Sep 17 00:00:00 2001 From: Seth Hoenig Date: Tue, 2 Aug 2022 16:54:50 -0500 Subject: [PATCH 1/6] ui: fix bug where allocation memory usage is always zero This PR fixes a bug where allocation memory usage is always zero on Linux systems where the kernel is configured to use cgroups v2. --- ui/app/utils/classes/allocation-stats-tracker.js | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/ui/app/utils/classes/allocation-stats-tracker.js b/ui/app/utils/classes/allocation-stats-tracker.js index 092357d18..41959d1a0 100644 --- a/ui/app/utils/classes/allocation-stats-tracker.js +++ b/ui/app/utils/classes/allocation-stats-tracker.js @@ -49,7 +49,13 @@ class AllocationStatsTracker extends EmberObject.extend(AbstractStatsTracker) { percent: percent(cpuUsed, this.reservedCPU), }); - const memoryUsed = frame.ResourceUsage.MemoryStats.RSS; + let memoryUsed = 0; + if (frame.ResourceUsage.MemoryStats.Usage) { + memoryUsed = frame.ResourceUsage.MemoryStats.Usage; + } else { + memoryUsed = frame.ResourceUsage.MemoryStats.RSS; + } + this.memory.pushObject({ timestamp, used: memoryUsed, @@ -80,7 +86,13 @@ class AllocationStatsTracker extends EmberObject.extend(AbstractStatsTracker) { percentStack: percentCpuTotal + aggregateCpu, }); - const taskMemoryUsed = taskFrame.ResourceUsage.MemoryStats.RSS; + let taskMemoryUsed = 0; + if (frame.ResourceUsage.MemoryStats.Usage) { + taskMemoryUsed = frame.ResourceUsage.MemoryStats.Usage; + } else { + taskMemoryUsed = frame.ResourceUsage.MemoryStats.RSS; + } + const percentMemoryTotal = percent( taskMemoryUsed / 1024 / 1024, this.reservedMemory From 85d9795134f25301ec5f2fcaf173cdee11978bea Mon Sep 17 00:00:00 2001 From: Phil Renaud Date: Wed, 3 Aug 2022 11:23:28 -0400 Subject: [PATCH 2/6] Temporary CI test to see missing state --- .../utils/allocation-stats-tracker-test.js | 78 ++++++++++++++++++- 1 file changed, 77 insertions(+), 1 deletion(-) diff --git a/ui/tests/unit/utils/allocation-stats-tracker-test.js b/ui/tests/unit/utils/allocation-stats-tracker-test.js index 3c319f0ff..fb0108997 100644 --- a/ui/tests/unit/utils/allocation-stats-tracker-test.js +++ b/ui/tests/unit/utils/allocation-stats-tracker-test.js @@ -251,7 +251,83 @@ module('Unit | Util | AllocationStatsTracker', function () { ], 'One frame of memory' ); - + const mockedTasks = [ + { + task: 'service', + reservedCPU: 100, + reservedMemory: 256, + cpu: [ + { + timestamp: makeDate(refDate + 1), + used: 51, + percent: 51 / 100, + percentStack: 51 / (100 + 50 + 50), + percentTotal: 51 / (100 + 50 + 50), + }, + ], + memory: [ + { + timestamp: makeDate(refDate + 1), + used: 101 * 1024 * 1024, + percent: 101 / 256, + percentStack: 101 / (256 + 128 + 128), + percentTotal: 101 / (256 + 128 + 128), + }, + ], + }, + { + task: 'sidecar', + reservedCPU: 50, + reservedMemory: 128, + cpu: [ + { + timestamp: makeDate(refDate + 100), + used: 27, + percent: 27 / 50, + percentStack: (27 + 51) / (100 + 50 + 50), + percentTotal: 27 / (100 + 50 + 50), + }, + ], + memory: [ + { + timestamp: makeDate(refDate + 100), + used: 52 * 1024 * 1024, + percent: 52 / 128, + percentStack: (52 + 101) / (256 + 128 + 128), + percentTotal: 52 / (256 + 128 + 128), + }, + ], + }, + { + task: 'log-shipper', + reservedCPU: 50, + reservedMemory: 128, + cpu: [ + { + timestamp: makeDate(refDate + 10), + used: 26, + percent: 26 / 50, + percentStack: (26 + 27 + 51) / (100 + 50 + 50), + percentTotal: 26 / (100 + 50 + 50), + }, + ], + memory: [ + { + timestamp: makeDate(refDate + 10), + used: 51 * 1024 * 1024, + percent: 51 / 128, + percentStack: (51 + 52 + 101) / (256 + 128 + 128), + percentTotal: 51 / (256 + 128 + 128), + }, + ], + }, + ]; + console.log('================================='); + console.log('CI test log'); + console.log(JSON.stringify(tracker.get('tasks'))); + console.log(JSON.stringify(mockedTasks)); + console.log('end CI test log'); + console.log('================================='); assert.deepEqual( tracker.get('tasks'), [ From 642d5cc2aab8a00371bb158b52938b3ef0f4e3ae Mon Sep 17 00:00:00 2001 From: Phil Renaud Date: Wed, 3 Aug 2022 12:05:45 -0400 Subject: [PATCH 3/6] Consolidate stats tracker consts, and add Usage to tracker test --- .../utils/classes/allocation-stats-tracker.js | 20 ++++++++----------- .../utils/allocation-stats-tracker-test.js | 4 ++++ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/ui/app/utils/classes/allocation-stats-tracker.js b/ui/app/utils/classes/allocation-stats-tracker.js index 41959d1a0..5977f684f 100644 --- a/ui/app/utils/classes/allocation-stats-tracker.js +++ b/ui/app/utils/classes/allocation-stats-tracker.js @@ -49,12 +49,10 @@ class AllocationStatsTracker extends EmberObject.extend(AbstractStatsTracker) { percent: percent(cpuUsed, this.reservedCPU), }); - let memoryUsed = 0; - if (frame.ResourceUsage.MemoryStats.Usage) { - memoryUsed = frame.ResourceUsage.MemoryStats.Usage; - } else { - memoryUsed = frame.ResourceUsage.MemoryStats.RSS; - } + const memoryUsed = + frame.ResourceUsage.MemoryStats.Usage || + frame.ResourceUsage.MemoryStats.RSS || + 0; this.memory.pushObject({ timestamp, @@ -86,12 +84,10 @@ class AllocationStatsTracker extends EmberObject.extend(AbstractStatsTracker) { percentStack: percentCpuTotal + aggregateCpu, }); - let taskMemoryUsed = 0; - if (frame.ResourceUsage.MemoryStats.Usage) { - taskMemoryUsed = frame.ResourceUsage.MemoryStats.Usage; - } else { - taskMemoryUsed = frame.ResourceUsage.MemoryStats.RSS; - } + const taskMemoryUsed = + frame.ResourceUsage.MemoryStats.Usage || + frame.ResourceUsage.MemoryStats.RSS || + 0; const percentMemoryTotal = percent( taskMemoryUsed / 1024 / 1024, diff --git a/ui/tests/unit/utils/allocation-stats-tracker-test.js b/ui/tests/unit/utils/allocation-stats-tracker-test.js index fb0108997..0126c39b4 100644 --- a/ui/tests/unit/utils/allocation-stats-tracker-test.js +++ b/ui/tests/unit/utils/allocation-stats-tracker-test.js @@ -54,6 +54,7 @@ module('Unit | Util | AllocationStatsTracker', function () { }, MemoryStats: { RSS: (step + 400) * 1024 * 1024, + Usage: (step + 400) * 1024 * 1024, }, }, Tasks: { @@ -64,6 +65,7 @@ module('Unit | Util | AllocationStatsTracker', function () { }, MemoryStats: { RSS: (step + 100) * 1024 * 1024, + Usage: (step + 100) * 1024 * 1024, }, }, Timestamp: refDate + step, @@ -75,6 +77,7 @@ module('Unit | Util | AllocationStatsTracker', function () { }, MemoryStats: { RSS: (step + 50) * 1024 * 1024, + Usage: (step + 50) * 1024 * 1024, }, }, Timestamp: refDate + step * 10, @@ -86,6 +89,7 @@ module('Unit | Util | AllocationStatsTracker', function () { }, MemoryStats: { RSS: (step + 51) * 1024 * 1024, + Usage: (step + 51) * 1024 * 1024, }, }, Timestamp: refDate + step * 100, From fdc736488fe4f5207b3153dae7d443386abae875 Mon Sep 17 00:00:00 2001 From: Phil Renaud Date: Wed, 3 Aug 2022 13:15:54 -0400 Subject: [PATCH 4/6] Taskframe, not frame --- ui/app/utils/classes/allocation-stats-tracker.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ui/app/utils/classes/allocation-stats-tracker.js b/ui/app/utils/classes/allocation-stats-tracker.js index 5977f684f..869eed000 100644 --- a/ui/app/utils/classes/allocation-stats-tracker.js +++ b/ui/app/utils/classes/allocation-stats-tracker.js @@ -85,8 +85,8 @@ class AllocationStatsTracker extends EmberObject.extend(AbstractStatsTracker) { }); const taskMemoryUsed = - frame.ResourceUsage.MemoryStats.Usage || - frame.ResourceUsage.MemoryStats.RSS || + taskFrame.ResourceUsage.MemoryStats.Usage || + taskFrame.ResourceUsage.MemoryStats.RSS || 0; const percentMemoryTotal = percent( From 67b495cda7c2acac86e8dfdf8295a21aa47b0042 Mon Sep 17 00:00:00 2001 From: Phil Renaud Date: Wed, 3 Aug 2022 13:35:36 -0400 Subject: [PATCH 5/6] Logs removed --- .../utils/allocation-stats-tracker-test.js | 77 ------------------- 1 file changed, 77 deletions(-) diff --git a/ui/tests/unit/utils/allocation-stats-tracker-test.js b/ui/tests/unit/utils/allocation-stats-tracker-test.js index 0126c39b4..e4f373108 100644 --- a/ui/tests/unit/utils/allocation-stats-tracker-test.js +++ b/ui/tests/unit/utils/allocation-stats-tracker-test.js @@ -255,83 +255,6 @@ module('Unit | Util | AllocationStatsTracker', function () { ], 'One frame of memory' ); - const mockedTasks = [ - { - task: 'service', - reservedCPU: 100, - reservedMemory: 256, - cpu: [ - { - timestamp: makeDate(refDate + 1), - used: 51, - percent: 51 / 100, - percentStack: 51 / (100 + 50 + 50), - percentTotal: 51 / (100 + 50 + 50), - }, - ], - memory: [ - { - timestamp: makeDate(refDate + 1), - used: 101 * 1024 * 1024, - percent: 101 / 256, - percentStack: 101 / (256 + 128 + 128), - percentTotal: 101 / (256 + 128 + 128), - }, - ], - }, - { - task: 'sidecar', - reservedCPU: 50, - reservedMemory: 128, - cpu: [ - { - timestamp: makeDate(refDate + 100), - used: 27, - percent: 27 / 50, - percentStack: (27 + 51) / (100 + 50 + 50), - percentTotal: 27 / (100 + 50 + 50), - }, - ], - memory: [ - { - timestamp: makeDate(refDate + 100), - used: 52 * 1024 * 1024, - percent: 52 / 128, - percentStack: (52 + 101) / (256 + 128 + 128), - percentTotal: 52 / (256 + 128 + 128), - }, - ], - }, - { - task: 'log-shipper', - reservedCPU: 50, - reservedMemory: 128, - cpu: [ - { - timestamp: makeDate(refDate + 10), - used: 26, - percent: 26 / 50, - percentStack: (26 + 27 + 51) / (100 + 50 + 50), - percentTotal: 26 / (100 + 50 + 50), - }, - ], - memory: [ - { - timestamp: makeDate(refDate + 10), - used: 51 * 1024 * 1024, - percent: 51 / 128, - percentStack: (51 + 52 + 101) / (256 + 128 + 128), - percentTotal: 51 / (256 + 128 + 128), - }, - ], - }, - ]; - console.log('================================='); - console.log('CI test log'); - console.log(JSON.stringify(tracker.get('tasks'))); - console.log(JSON.stringify(mockedTasks)); - console.log('end CI test log'); - console.log('================================='); assert.deepEqual( tracker.get('tasks'), [ From d1e14f160c459d06849c6b04fbc7ea84463e5ab9 Mon Sep 17 00:00:00 2001 From: Seth Hoenig Date: Wed, 3 Aug 2022 13:18:09 -0500 Subject: [PATCH 6/6] cl: update cl for 13670 --- .changelog/13670.txt | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .changelog/13670.txt diff --git a/.changelog/13670.txt b/.changelog/13670.txt new file mode 100644 index 000000000..04e3541e3 --- /dev/null +++ b/.changelog/13670.txt @@ -0,0 +1,3 @@ +```release-note:bug +ui: Fixed a bug where task memory was reported as zero on systems using cgroups v2 +```