add files
This commit is contained in:
53
server/gpu.go
Normal file
53
server/gpu.go
Normal file
@@ -0,0 +1,53 @@
|
||||
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"`
|
||||
}
|
||||
|
||||
// Gets GPU information by calling nvidia-smi
|
||||
// in XML output
|
||||
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
|
||||
}
|
||||
Reference in New Issue
Block a user