Fix potential CPU leak
This commit is contained in:
parent
dfbf55883d
commit
a79004388f
@ -148,28 +148,9 @@ func (p *process) Resume() error {
|
||||
func (p *process) CPU() (*CPUInfo, error) {
|
||||
var diff float64
|
||||
|
||||
for {
|
||||
p.lock.RLock()
|
||||
nTicks := p.nTicks
|
||||
p.lock.RUnlock()
|
||||
|
||||
if nTicks < 2 {
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
continue
|
||||
}
|
||||
|
||||
break
|
||||
}
|
||||
|
||||
p.lock.RLock()
|
||||
defer p.lock.RUnlock()
|
||||
|
||||
if p.hasCgroup && p.cpuLimit > 0 {
|
||||
diff = float64(p.cpuLimit) * (p.statCurrentTime.Sub(p.statPreviousTime)).Seconds() / 1e9
|
||||
} else {
|
||||
diff = p.statCurrentTime.Sub(p.statPreviousTime).Seconds() * p.ncpu
|
||||
}
|
||||
|
||||
s := &CPUInfo{
|
||||
System: 0,
|
||||
User: 0,
|
||||
@ -177,6 +158,16 @@ func (p *process) CPU() (*CPUInfo, error) {
|
||||
Other: 0,
|
||||
}
|
||||
|
||||
if p.nTicks < 2 {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
if p.hasCgroup && p.cpuLimit > 0 {
|
||||
diff = float64(p.cpuLimit) * (p.statCurrentTime.Sub(p.statPreviousTime)).Seconds() / 1e9
|
||||
} else {
|
||||
diff = p.statCurrentTime.Sub(p.statPreviousTime).Seconds() * p.ncpu
|
||||
}
|
||||
|
||||
if diff <= 0 {
|
||||
return s, nil
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user