I am trying to query the process statistics against the runtime in Windows so I can monitor it's utilisation.
First, I get the process handle for the runtime: // GetCurrentProcess will return our process handle with the appropriate information. func GetCurrentProcess() (syscall.Handle, error) { myProcess, err := syscall.GetCurrentProcess() if err != nil { return syscall.Handle(0), err } return syscall.Handle(myHandle), err } Then, I sleep for one second to make sure the process has been running for at least one second, so no counters will be 0. After that, I call `syscall.GetProcessTimes()`: func (p *ProcInfo) GetProcessTimes() error { lpCreationTime := new(syscall.Filetime) lpExitTime := new(syscall.Filetime) lpKernelTime := new(syscall.Filetime) lpUserTime := new(syscall.Filetime) if err := syscall.GetProcessTimes(p.handle, lpCreationTime, lpExitTime, lpKernelTime, lpUserTime); err != nil { return err } p.CreationTime = lpCreationTime p.ExitTime = lpExitTime p.KernelTime = lpKernelTime p.UserTime = lpUserTime return nil } Once that is done, I print out the values: func main() { me, err := GetCurrentProcess() if err != nil { fmt.Println(err) os.Exit(1) } proc := &ProcInfo{handle: me} time.Sleep(time.Duration(time.Second * 1)) err = proc.GetProcessTimes() if err != nil { fmt.Println(err) os.Exit(1) } fmt.Printf("%#v\n", proc) fmt.Printf("kernel low time: %d\n", proc.KernelTime.LowDateTime) fmt.Printf("kernel high time: %d\n", proc.KernelTime.HighDateTime) fmt.Printf("user low time: %d\n", proc.UserTime.LowDateTime) fmt.Printf("user high time: %d\n", proc.UserTime.HighDateTime) } I've been reading through the Windows API documentation <https://msdn.microsoft.com/en-us/library/windows/desktop/ms683223(v=vs.85).aspx> and it should return the value in 100-nanosecond units the process has spent in user and/or kernel space. However, even thought I'm sleeping my little test program for 1 second, all the counters from `syscall.GetProcessTimes()` are 0. They should at least be in the millions since the program slept for 1 second. Here is the full code: https://play.golang.org/p/_Z3o4H2WwR Is this a bug or am I not using it correctly? -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.