51 lines
916 B
Go
51 lines
916 B
Go
package server
|
|
|
|
import (
|
|
"encoding/xml"
|
|
"os/exec"
|
|
)
|
|
|
|
type Query struct {
|
|
DriveVersion string `xml:"driver_version"`
|
|
Gpu Gpu `xml:"gpu"`
|
|
}
|
|
|
|
type Gpu struct{
|
|
GpuName string `xml:"product_name"`
|
|
BiosVersion string `xml:"vbios_version"`
|
|
FanSpeed string `xml:"fan_speed"`
|
|
Utilization GpuUtilization `xml:"utilization"`
|
|
Temperature GpuTemperature `xml:"temperature"`
|
|
Clock GpuClock `xml:"clocks"`
|
|
}
|
|
|
|
type GpuUtilization struct {
|
|
GpuUsage string `xml:"gpu_util"`
|
|
MemoryUsage string `xml:"memory_util"`
|
|
}
|
|
|
|
type GpuTemperature struct {
|
|
GpuTemp string `xml:"gpu_temp"`
|
|
}
|
|
|
|
type GpuClock struct {
|
|
GpuClock string `xml:"graphics_clock"`
|
|
GpuMemClock string `xml:"mem_clock"`
|
|
}
|
|
|
|
func GPUInfo()(*Query,error) {
|
|
out, err := exec.Command("nvidia-smi", "-q", "-x").Output()
|
|
|
|
if err != nil {
|
|
return nil,err
|
|
}
|
|
|
|
var gpu Query
|
|
err = xml.Unmarshal(out, &gpu)
|
|
|
|
if err != nil {
|
|
return nil,err
|
|
}
|
|
|
|
return &gpu,nil
|
|
} |