Skip to content

Commit 9f76193

Browse files
authored
Merge pull request #5190 from hashicorp/f-memory-usage
Track Basic Memory Usage as reported by cgroups
2 parents 256ac52 + b5c20aa commit 9f76193

File tree

19 files changed

+338
-308
lines changed

19 files changed

+338
-308
lines changed

api/tasks.go

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type MemoryStats struct {
1616
RSS uint64
1717
Cache uint64
1818
Swap uint64
19+
Usage uint64
1920
MaxUsage uint64
2021
KernelUsage uint64
2122
KernelMaxUsage uint64

client/allocrunner/taskrunner/task_runner.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -1118,14 +1118,14 @@ func (tr *TaskRunner) UpdateStats(ru *cstructs.TaskResourceUsage) {
11181118
//TODO Remove Backwardscompat or use tr.Alloc()?
11191119
func (tr *TaskRunner) setGaugeForMemory(ru *cstructs.TaskResourceUsage) {
11201120
if !tr.clientConfig.DisableTaggedMetrics {
1121-
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "rss"},
1122-
float32(ru.ResourceUsage.MemoryStats.RSS), tr.baseLabels)
11231121
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "rss"},
11241122
float32(ru.ResourceUsage.MemoryStats.RSS), tr.baseLabels)
11251123
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "cache"},
11261124
float32(ru.ResourceUsage.MemoryStats.Cache), tr.baseLabels)
11271125
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "swap"},
11281126
float32(ru.ResourceUsage.MemoryStats.Swap), tr.baseLabels)
1127+
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "usage"},
1128+
float32(ru.ResourceUsage.MemoryStats.Usage), tr.baseLabels)
11291129
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "max_usage"},
11301130
float32(ru.ResourceUsage.MemoryStats.MaxUsage), tr.baseLabels)
11311131
metrics.SetGaugeWithLabels([]string{"client", "allocs", "memory", "kernel_usage"},
@@ -1138,6 +1138,7 @@ func (tr *TaskRunner) setGaugeForMemory(ru *cstructs.TaskResourceUsage) {
11381138
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "rss"}, float32(ru.ResourceUsage.MemoryStats.RSS))
11391139
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "cache"}, float32(ru.ResourceUsage.MemoryStats.Cache))
11401140
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "swap"}, float32(ru.ResourceUsage.MemoryStats.Swap))
1141+
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "usage"}, float32(ru.ResourceUsage.MemoryStats.Usage))
11411142
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "max_usage"}, float32(ru.ResourceUsage.MemoryStats.MaxUsage))
11421143
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "kernel_usage"}, float32(ru.ResourceUsage.MemoryStats.KernelUsage))
11431144
metrics.SetGauge([]string{"client", "allocs", tr.alloc.Job.Name, tr.alloc.TaskGroup, tr.allocID, tr.taskName, "memory", "kernel_max_usage"}, float32(ru.ResourceUsage.MemoryStats.KernelMaxUsage))

client/logmon/proto/logmon.pb.go

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

client/structs/structs.go

+2
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ type MemoryStats struct {
168168
RSS uint64
169169
Cache uint64
170170
Swap uint64
171+
Usage uint64
171172
MaxUsage uint64
172173
KernelUsage uint64
173174
KernelMaxUsage uint64
@@ -184,6 +185,7 @@ func (ms *MemoryStats) Add(other *MemoryStats) {
184185
ms.RSS += other.RSS
185186
ms.Cache += other.Cache
186187
ms.Swap += other.Swap
188+
ms.Usage += other.Usage
187189
ms.MaxUsage += other.MaxUsage
188190
ms.KernelUsage += other.KernelUsage
189191
ms.KernelMaxUsage += other.KernelMaxUsage

command/alloc_status.go

+2
Original file line numberDiff line numberDiff line change
@@ -557,6 +557,8 @@ func (c *AllocStatusCommand) outputVerboseResourceUsage(task string, resourceUsa
557557
measuredStats = append(measuredStats, humanize.IBytes(memoryStats.Cache))
558558
case "Swap":
559559
measuredStats = append(measuredStats, humanize.IBytes(memoryStats.Swap))
560+
case "Usage":
561+
measuredStats = append(measuredStats, humanize.IBytes(memoryStats.Usage))
560562
case "Max Usage":
561563
measuredStats = append(measuredStats, humanize.IBytes(memoryStats.MaxUsage))
562564
case "Kernel Usage":

drivers/docker/docklog/proto/docker_logger.pb.go

+6-6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

drivers/docker/driver.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ var (
4141
waitClient *docker.Client
4242

4343
// The statistics the Docker driver exposes
44-
DockerMeasuredMemStats = []string{"RSS", "Cache", "Swap", "Max Usage"}
44+
DockerMeasuredMemStats = []string{"RSS", "Cache", "Swap", "Usage", "Max Usage"}
4545
DockerMeasuredCpuStats = []string{"Throttled Periods", "Throttled Time", "Percent"}
4646

4747
// recoverableErrTimeouts returns a recoverable error if the error was due

drivers/docker/stats.go

+1
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ func dockerStatsToTaskResourceUsage(s *docker.Stats) *cstructs.TaskResourceUsage
134134
RSS: s.MemoryStats.Stats.Rss,
135135
Cache: s.MemoryStats.Stats.Cache,
136136
Swap: s.MemoryStats.Stats.Swap,
137+
Usage: s.MemoryStats.Usage,
137138
MaxUsage: s.MemoryStats.MaxUsage,
138139
Measured: DockerMeasuredMemStats,
139140
}

drivers/docker/stats_test.go

+2
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ func TestDriver_DockerStatsCollector(t *testing.T) {
2323
stats.MemoryStats.Stats.Rss = 6537216
2424
stats.MemoryStats.Stats.Cache = 1234
2525
stats.MemoryStats.Stats.Swap = 0
26+
stats.MemoryStats.Usage = 5651904
2627
stats.MemoryStats.MaxUsage = 6651904
2728

2829
go dockerStatsCollector(dst, src, time.Second)
@@ -38,6 +39,7 @@ func TestDriver_DockerStatsCollector(t *testing.T) {
3839
require.Equal(stats.MemoryStats.Stats.Rss, ru.ResourceUsage.MemoryStats.RSS)
3940
require.Equal(stats.MemoryStats.Stats.Cache, ru.ResourceUsage.MemoryStats.Cache)
4041
require.Equal(stats.MemoryStats.Stats.Swap, ru.ResourceUsage.MemoryStats.Swap)
42+
require.Equal(stats.MemoryStats.Usage, ru.ResourceUsage.MemoryStats.Usage)
4143
require.Equal(stats.MemoryStats.MaxUsage, ru.ResourceUsage.MemoryStats.MaxUsage)
4244
require.Equal(stats.CPUStats.ThrottlingData.ThrottledPeriods, ru.ResourceUsage.CpuStats.ThrottledPeriods)
4345
require.Equal(stats.CPUStats.ThrottlingData.ThrottledTime, ru.ResourceUsage.CpuStats.ThrottledTime)

drivers/shared/executor/executor_linux.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ const (
3939

4040
var (
4141
// ExecutorCgroupMeasuredMemStats is the list of memory stats captured by the executor
42-
ExecutorCgroupMeasuredMemStats = []string{"RSS", "Cache", "Swap", "Max Usage", "Kernel Usage", "Kernel Max Usage"}
42+
ExecutorCgroupMeasuredMemStats = []string{"RSS", "Cache", "Swap", "Usage", "Max Usage", "Kernel Usage", "Kernel Max Usage"}
4343

4444
// ExecutorCgroupMeasuredCpuStats is the list of CPU stats captures by the executor
4545
ExecutorCgroupMeasuredCpuStats = []string{"System Mode", "User Mode", "Throttled Periods", "Throttled Time", "Percent"}
@@ -400,6 +400,7 @@ func (l *LibcontainerExecutor) handleStats(ch chan *cstructs.TaskResourceUsage,
400400
RSS: rss,
401401
Cache: cache,
402402
Swap: swap.Usage,
403+
Usage: stats.MemoryStats.Usage.Usage,
403404
MaxUsage: maxUsage,
404405
KernelUsage: stats.MemoryStats.KernelUsage.Usage,
405406
KernelMaxUsage: stats.MemoryStats.KernelUsage.MaxUsage,

plugins/base/proto/base.pb.go

+11-11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)