使用 wmi 可行否?有尝试使用:
package main
import (
"fmt"
"github.com/StackExchange/wmi"
"log"
"time"
)
type Win32_Process struct {
Name string
TimeStamp_Sys100NS uint64
PercentProcessorTime uint64
}
func main() {
var dst []Win32_Process
var N1 uint64 = 0
var D1 uint64 = 0
for ; ; time.Sleep(time.Second) {
str := "SELECT * FROM Win32_PerfFormattedData_PerfProc_Process WHERE Name = 'cpu-test'"
err := wmi.Query(str, &dst)
if err != nil {
log.Fatal(err)
}
N2 := dst[0].PercentProcessorTime
D2 := dst[0].TimeStamp_Sys100NS
// D1/D2 一直是0
fmt.Println(D1, D2, N1, N2)
N1 = dst[0].PercentProcessorTime
D1 = dst[0].TimeStamp_Sys100NS
}
}
好像说这两个值可以计算CPU占用率?可是要怎么算呢?
返回的错误需要自己处理一下,这里为了演示方便不进行处理了。