do not always allocate a new slice
This commit is contained in:
parent
bdc3ae7120
commit
7f542f2952
@ -49,11 +49,18 @@ func (self *containerStorage) updatePrevStats(stats *info.ContainerStats) {
|
||||
}
|
||||
// make a deep copy.
|
||||
self.prevStats.Timestamp = stats.Timestamp
|
||||
// copy the slice first.
|
||||
percpuSlice := self.prevStats.Cpu.Usage.PerCpu
|
||||
*self.prevStats.Cpu = *stats.Cpu
|
||||
self.prevStats.Cpu.Usage.PerCpu = make([]uint64, len(stats.Cpu.Usage.PerCpu))
|
||||
for i, perCpu := range stats.Cpu.Usage.PerCpu {
|
||||
self.prevStats.Cpu.Usage.PerCpu[i] = perCpu
|
||||
// If the old slice is enough to hold the new data, then don't allocate
|
||||
// a new slice.
|
||||
if len(percpuSlice) != len(stats.Cpu.Usage.PerCpu) {
|
||||
percpuSlice = make([]uint64, len(stats.Cpu.Usage.PerCpu))
|
||||
}
|
||||
for i, perCpu := range stats.Cpu.Usage.PerCpu {
|
||||
percpuSlice[i] = perCpu
|
||||
}
|
||||
self.prevStats.Cpu.Usage.PerCpu = percpuSlice
|
||||
*self.prevStats.Memory = *stats.Memory
|
||||
}
|
||||
|
||||
|
@ -44,6 +44,7 @@ func buildTrace(cpu, mem []uint64, duration time.Duration) []*info.ContainerStat
|
||||
stats.Cpu.Usage.Total = cpuTotalUsage
|
||||
stats.Cpu.Usage.User = stats.Cpu.Usage.Total
|
||||
stats.Cpu.Usage.System = 0
|
||||
stats.Cpu.Usage.PerCpu = []uint64{cpuUsage}
|
||||
|
||||
stats.Memory.Usage = mem[i]
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user