Skip to content

Commit 44a904c

Browse files
committed
cli/command/container: collect(): split windows/unix branches
Use separate branches to handle windows/unix results to reduce intermediate variables, and make it more transparent what's set for each platform. Signed-off-by: Sebastiaan van Stijn <[email protected]>
1 parent a6c0d69 commit 44a904c

File tree

1 file changed

+30
-34
lines changed

1 file changed

+30
-34
lines changed

cli/command/container/stats_helpers.go

Lines changed: 30 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ func collect(ctx context.Context, s *Stats, cli client.ContainerAPIClient, strea
5353
var getFirst bool
5454

5555
defer func() {
56-
// if error happens and we get nothing of stats, release wait group whatever
56+
// if error happens, and we get nothing of stats, release wait group whatever
5757
if !getFirst {
5858
getFirst = true
5959
waitFirst.Done()
@@ -74,14 +74,7 @@ func collect(ctx context.Context, s *Stats, cli client.ContainerAPIClient, strea
7474
if ctx.Err() != nil {
7575
return
7676
}
77-
var (
78-
v *container.StatsResponse
79-
memPercent, cpuPercent float64
80-
blkRead, blkWrite uint64 // Only used on Linux
81-
mem, memLimit float64
82-
pidsStatsCurrent uint64
83-
)
84-
77+
var v container.StatsResponse
8578
if err := dec.Decode(&v); err != nil {
8679
dec = json.NewDecoder(io.MultiReader(dec.Buffered(), response.Body))
8780
u <- err
@@ -92,33 +85,36 @@ func collect(ctx context.Context, s *Stats, cli client.ContainerAPIClient, strea
9285
continue
9386
}
9487

95-
if daemonOSType != "windows" {
96-
cpuPercent = calculateCPUPercentUnix(v.PreCPUStats, v.CPUStats)
97-
blkRead, blkWrite = calculateBlockIO(v.BlkioStats)
98-
mem = calculateMemUsageUnixNoCache(v.MemoryStats)
99-
memLimit = float64(v.MemoryStats.Limit)
100-
memPercent = calculateMemPercentUnixNoCache(memLimit, mem)
101-
pidsStatsCurrent = v.PidsStats.Current
88+
if daemonOSType == "windows" {
89+
netRx, netTx := calculateNetwork(v.Networks)
90+
s.SetStatistics(StatsEntry{
91+
Name: v.Name,
92+
ID: v.ID,
93+
CPUPercentage: calculateCPUPercentWindows(&v),
94+
Memory: float64(v.MemoryStats.PrivateWorkingSet),
95+
NetworkRx: netRx,
96+
NetworkTx: netTx,
97+
BlockRead: float64(v.StorageStats.ReadSizeBytes),
98+
BlockWrite: float64(v.StorageStats.WriteSizeBytes),
99+
})
102100
} else {
103-
cpuPercent = calculateCPUPercentWindows(v)
104-
blkRead = v.StorageStats.ReadSizeBytes
105-
blkWrite = v.StorageStats.WriteSizeBytes
106-
mem = float64(v.MemoryStats.PrivateWorkingSet)
101+
memUsage := calculateMemUsageUnixNoCache(v.MemoryStats)
102+
netRx, netTx := calculateNetwork(v.Networks)
103+
blkRead, blkWrite := calculateBlockIO(v.BlkioStats)
104+
s.SetStatistics(StatsEntry{
105+
Name: v.Name,
106+
ID: v.ID,
107+
CPUPercentage: calculateCPUPercentUnix(v.PreCPUStats, v.CPUStats),
108+
Memory: memUsage,
109+
MemoryPercentage: calculateMemPercentUnixNoCache(float64(v.MemoryStats.Limit), memUsage),
110+
MemoryLimit: float64(v.MemoryStats.Limit),
111+
NetworkRx: netRx,
112+
NetworkTx: netTx,
113+
BlockRead: float64(blkRead),
114+
BlockWrite: float64(blkWrite),
115+
PidsCurrent: v.PidsStats.Current,
116+
})
107117
}
108-
netRx, netTx := calculateNetwork(v.Networks)
109-
s.SetStatistics(StatsEntry{
110-
Name: v.Name,
111-
ID: v.ID,
112-
CPUPercentage: cpuPercent,
113-
Memory: mem,
114-
MemoryPercentage: memPercent,
115-
MemoryLimit: memLimit,
116-
NetworkRx: netRx,
117-
NetworkTx: netTx,
118-
BlockRead: float64(blkRead),
119-
BlockWrite: float64(blkWrite),
120-
PidsCurrent: pidsStatsCurrent,
121-
})
122118
u <- nil
123119
if !streamStats {
124120
return

0 commit comments

Comments
 (0)