| | |
| | | package sys |
| | | |
| | | import ( |
| | | "errors" |
| | | "fmt" |
| | | "io/ioutil" |
| | | "os" |
| | |
| | | "vamicro/extend/util" |
| | | |
| | | "basic.com/valib/gogpu.git" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/shirou/gopsutil/cpu" |
| | | "github.com/shirou/gopsutil/disk" |
| | | "github.com/shirou/gopsutil/host" |
| | |
| | | return util.Struct2Map(Stat) |
| | | } |
| | | |
| | | func GetGpu(key string) (vGpu []string, err error) { |
| | | resultMsg, e := util.ExeCmd("dlsmi --query-gpu=" + key) |
| | | if e != nil { |
| | | return vGpu, errors.New("无可用GPU!请检查是否正常安显卡及显卡驱动,通过dlsmi查询状态") |
| | | } |
| | | vGpu = strings.Split(string(resultMsg), "\n") |
| | | if len(vGpu) == 0 { |
| | | return vGpu, errors.New("无可用GPU!请检查是否正常安显卡及显卡驱动,通过dlsmi查询状态") |
| | | } |
| | | return vGpu, nil |
| | | } |
| | | |
| | | func GetDeviceInfo() map[string]interface{} { |
| | | cmd := exec.Command("/bin/sh", "-c", "lsblk -d | grep -v part | grep -v SWAP | grep -v M | grep disk | awk '{printf $4\" \"}'") |
| | | disks, _ := cmd.Output() |
| | | cpu, _ := cpu.Info() |
| | | gpuInfo, err := gogpu.Info() |
| | | var gpuMemTotal int64 |
| | | if err == nil { |
| | | for _, gpu := range gpuInfo.Info { |
| | | gpuMemTotal = gpuMemTotal + gpu.GpuMemoryTotal |
| | | |
| | | var gpuStr string |
| | | |
| | | //获取型号 |
| | | gpuName, _ := GetGpu("name") |
| | | if len(gpuName) > 0 { |
| | | var gpuArr []string = []string{} |
| | | gpuTotal, _ := GetGpu("memory.total") |
| | | for i, name := range gpuName { |
| | | //i>0跳过header |
| | | if i > 0 && len(name) > 0 { |
| | | gpuArr = append(gpuArr, fmt.Sprintf("%s %s", name, gpuTotal[i])) |
| | | } |
| | | } |
| | | } else { |
| | | logger.Debug("gpu error " + err.Error()) |
| | | gpuStr = strings.Join(gpuArr, ",") |
| | | } |
| | | gpu := gpuMemTotal |
| | | |
| | | mem, _ := mem.VirtualMemory() |
| | | host, _ := host.Info() |
| | | |
| | | return util.Struct2Map(map[string]interface{}{ |
| | | "cpu": cpu, |
| | | "gpu": gpu, |
| | | "gpu": gpuStr, |
| | | "mem": mem, |
| | | "host": host, |
| | | "disk": string(disks), |