pinggraph/cpu.go

50 lines
740 B
Go

package main
import (
"log"
"strconv"
"github.com/shirou/gopsutil/v3/cpu"
)
var cpuCount = 0
func init() {
count, err := cpu.Counts(true)
if err != nil {
panic(err)
}
cpuInfo.NoVals = count + 1
cpuCount = count
cpuInfo.ValTags = make([]string, count+1)
cpuInfo.ValTags[0] = "Avg"
for i := range cpuInfo.ValTags[1:] {
cpuInfo.ValTags[1+i] = "#" + strconv.Itoa(i+1)
}
}
var cpuInfo = provider{
NoVals: cpuCount + 1,
Fetch: func() []float64 {
var fs = make([]float64, cpuCount+1)
cper, err := cpu.Percent(0, true)
if err != nil {
log.Println(err)
return fs
}
var sum float64
for _, x := range cper {
sum += x
}
sum /= float64(len(cper))
fs[0] = sum
copy(fs[1:], cper)
return fs
},
}