| | |
| | | Stat.Mem = *meminfo |
| | | } |
| | | |
| | | |
| | | // Gpu |
| | | // agxGpuProcIface := "/sys/devices/gpu.0/load" |
| | | |
| | | // if Exists(agxGpuProcIface) { |
| | | // fd, err1 := os.Open(agxGpuProcIface) |
| | | // if err1 == nil { |
| | | // var load int64 |
| | | // fmt.Fscanf(fd, "%d", &load) |
| | | // // 模拟nvidia库的输出 |
| | | // Stat.Gpu = append(Stat.Gpu, gogpu.GpuUnitInfo{ |
| | | // GpuMemoryTotal: 1000, |
| | | // GpuMemoryUsed: load, |
| | | // }) |
| | | // fd.Close() |
| | | // } |
| | | // } else { |
| | | // if gpuInfo, err := gogpu.Info(); err == nil { |
| | | // sort.Sort(gogpu.GPURank(gpuInfo.Info)) |
| | | // Stat.Gpu = Stat.Gpu[0:0] |
| | | // for _, v := range gpuInfo.Info { |
| | | // Stat.Gpu = append(Stat.Gpu, v) |
| | | // } |
| | | // } |
| | | // } |
| | | |
| | | // Gpu |
| | | agxGpuProcIface := "/sys/devices/gpu.0/load" |
| | | if _, err := os.Stat(agxGpuProcIface); !os.IsExist(err) { |
| | | if Exists(agxGpuProcIface){ |
| | | fd, err1 := os.Open(agxGpuProcIface) |
| | | if err1 == nil { |
| | | var load int64 |
| | |
| | | |
| | | return Stat |
| | | } |
| | | |
| | | func Exists(path string) bool { |
| | | _, err := os.Stat(path) //os.Stat获取文件信息 |
| | | if err != nil { |
| | | if os.IsExist(err) { |
| | | return true |
| | | } |
| | | return false |
| | | } |
| | | return true |
| | | } |
| | |
| | | |
| | | if diff { |
| | | // 同步设备信息到商城 |
| | | if util.GetShopUrl() != "" { |
| | | body := util.Struct2Map(i) |
| | | url := "http://" + util.GetShopUrl() + "/data/api-d/device/syncDevToCloud" |
| | | header := map[string]string{ |
| | | "Authorization": token, |
| | | } |
| | | data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) |
| | | if err != nil { |
| | | logger.Error("send devInfo to cloud err:", err) |
| | | return |
| | | } |
| | | logger.Debug("syncDevToCloud result:", string(data)) |
| | | var result bhomedbapi.Result |
| | | err = json.Unmarshal(data, &result) |
| | | if err != nil { |
| | | logger.Error("unmarshal err:", err) |
| | | return |
| | | } |
| | | if result.Success { |
| | | lstSync = &i |
| | | } else { |
| | | logger.Error("syncDevToCloud result:", result) |
| | | } |
| | | } |
| | | // if util.GetShopUrl() != "" { |
| | | // body := util.Struct2Map(i) |
| | | // url := "http://" + util.GetShopUrl() + "/data/api-d/device/syncDevToCloud" |
| | | // header := map[string]string{ |
| | | // "Authorization": token, |
| | | // } |
| | | // data, err := util.DoPostRequest(url, util.CONTENT_TYPE_JSON, body, nil, header, 10*time.Second) |
| | | // if err != nil { |
| | | // logger.Error("send devInfo to cloud err:", err) |
| | | // return |
| | | // } |
| | | // logger.Debug("syncDevToCloud result:", string(data)) |
| | | // var result bhomedbapi.Result |
| | | // err = json.Unmarshal(data, &result) |
| | | // if err != nil { |
| | | // logger.Error("unmarshal err:", err) |
| | | // return |
| | | // } |
| | | // if result.Success { |
| | | // lstSync = &i |
| | | // } else { |
| | | // logger.Error("syncDevToCloud result:", result) |
| | | // } |
| | | // } |
| | | |
| | | //查看是否有管理节点管理着此台设备 |
| | | syncToDevManager(i) |
| | |
| | | return nil |
| | | } |
| | | |
| | | //计算持续时长 |
| | | // 计算持续时长 |
| | | func timeSpan(startTime time.Time) string { |
| | | sp := time.Since(startTime) |
| | | day := strconv.Itoa(int(sp.Hours() / 24)) //天数 |