|
|
|
@ -13,7 +13,7 @@ import (
|
|
|
|
|
"github.com/shirou/gopsutil/internal/common"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var CPUTick = float64(100)
|
|
|
|
|
var ClocksPerSec = float64(100)
|
|
|
|
|
|
|
|
|
|
func init() {
|
|
|
|
|
getconf, err := exec.LookPath("getconf")
|
|
|
|
@ -25,7 +25,7 @@ func init() {
|
|
|
|
|
if err == nil {
|
|
|
|
|
i, err := strconv.ParseFloat(strings.TrimSpace(string(out)), 64)
|
|
|
|
|
if err == nil {
|
|
|
|
|
CPUTick = i
|
|
|
|
|
ClocksPerSec = i
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -250,34 +250,34 @@ func parseStatLine(line string) (*TimesStat, error) {
|
|
|
|
|
|
|
|
|
|
ct := &TimesStat{
|
|
|
|
|
CPU: cpu,
|
|
|
|
|
User: user / CPUTick,
|
|
|
|
|
Nice: nice / CPUTick,
|
|
|
|
|
System: system / CPUTick,
|
|
|
|
|
Idle: idle / CPUTick,
|
|
|
|
|
Iowait: iowait / CPUTick,
|
|
|
|
|
Irq: irq / CPUTick,
|
|
|
|
|
Softirq: softirq / CPUTick,
|
|
|
|
|
User: user / ClocksPerSec,
|
|
|
|
|
Nice: nice / ClocksPerSec,
|
|
|
|
|
System: system / ClocksPerSec,
|
|
|
|
|
Idle: idle / ClocksPerSec,
|
|
|
|
|
Iowait: iowait / ClocksPerSec,
|
|
|
|
|
Irq: irq / ClocksPerSec,
|
|
|
|
|
Softirq: softirq / ClocksPerSec,
|
|
|
|
|
}
|
|
|
|
|
if len(fields) > 8 { // Linux >= 2.6.11
|
|
|
|
|
steal, err := strconv.ParseFloat(fields[8], 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ct.Steal = steal / CPUTick
|
|
|
|
|
ct.Steal = steal / ClocksPerSec
|
|
|
|
|
}
|
|
|
|
|
if len(fields) > 9 { // Linux >= 2.6.24
|
|
|
|
|
guest, err := strconv.ParseFloat(fields[9], 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ct.Guest = guest / CPUTick
|
|
|
|
|
ct.Guest = guest / ClocksPerSec
|
|
|
|
|
}
|
|
|
|
|
if len(fields) > 10 { // Linux >= 3.2.0
|
|
|
|
|
guestNice, err := strconv.ParseFloat(fields[10], 64)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
ct.GuestNice = guestNice / CPUTick
|
|
|
|
|
ct.GuestNice = guestNice / ClocksPerSec
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return ct, nil
|
|
|
|
|