-
Notifications
You must be signed in to change notification settings - Fork 0
/
hostengine_status.go
41 lines (33 loc) · 980 Bytes
/
hostengine_status.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package dcgm
/*
#include "dcgm_agent.h"
#include "dcgm_structs.h"
*/
import "C"
import (
"unsafe"
)
type DcgmStatus struct {
Memory int64
CPU float64
}
func introspect() (engine DcgmStatus, err error) {
var memory C.dcgmIntrospectMemory_t
memory.version = makeVersion1(unsafe.Sizeof(memory))
waitIfNoData := 1
result := C.dcgmIntrospectGetHostengineMemoryUsage(handle.handle, &memory, C.int(waitIfNoData))
if err = errorString(result); err != nil {
return engine, &DcgmError{msg: C.GoString(C.errorString(result)), Code: result}
}
var cpu C.dcgmIntrospectCpuUtil_t
cpu.version = makeVersion1(unsafe.Sizeof(cpu))
result = C.dcgmIntrospectGetHostengineCpuUtilization(handle.handle, &cpu, C.int(waitIfNoData))
if err = errorString(result); err != nil {
return engine, &DcgmError{msg: C.GoString(C.errorString(result)), Code: result}
}
engine = DcgmStatus{
Memory: toInt64(memory.bytesUsed) / 1024,
CPU: *dblToFloat(cpu.total) * 100,
}
return
}