@@ -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