syncthing/cmd/syncthing/gui_unix.go

32 lines
688 B
Go
Raw Normal View History

2014-03-02 23:58:14 +01:00
//+build !windows,!solaris
package main
import (
"syscall"
"time"
)
func init() {
go trackCPUUsage()
}
func trackCPUUsage() {
var prevUsage int64
var prevTime = time.Now().UnixNano()
var rusage syscall.Rusage
2014-04-14 12:02:40 +02:00
for _ = range time.NewTicker(time.Second).C {
2014-03-02 23:58:14 +01:00
syscall.Getrusage(syscall.RUSAGE_SELF, &rusage)
curTime := time.Now().UnixNano()
timeDiff := curTime - prevTime
curUsage := rusage.Utime.Nano() + rusage.Stime.Nano()
usageDiff := curUsage - prevUsage
cpuUsageLock.Lock()
2014-04-14 12:02:40 +02:00
copy(cpuUsagePercent[1:], cpuUsagePercent[0:])
cpuUsagePercent[0] = 100 * float64(usageDiff) / float64(timeDiff)
2014-03-02 23:58:14 +01:00
cpuUsageLock.Unlock()
prevTime = curTime
prevUsage = curUsage
}
}