qixiaoning
2025-09-04 87b55a899bc1b4bc7d5a0f8d6ad1a1ede233ebd1
sysinfo-service/service/proc.go
@@ -1,11 +1,11 @@
package service
import (
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/bhomedbapi.git"
   "regexp"
   "strings"
   "vamicro/sysinfo-service/models/gogpu"
   "basic.com/pubsub/protomsg.git"
   "basic.com/valib/bhomedbapi.git"
   "github.com/shirou/gopsutil/process"
)
@@ -13,21 +13,27 @@
const ProcName = "sysinfo-service"
var BasicProc = map[string]string{
   "analysis":      "算法处理单元",
   // "analysis":      "算法处理单元",
   "apiserver":     "basic接口服务",
   "decoder":       "视频解码服务",
   "elasticsearch": "分布式数据搜索引擎",
   "faceDetect":    "人脸识别服务",
   // "faceDetect":    "人脸识别服务",
   "file-service":  "文件服务",
   "pollcontrol":   "轮询管理",
   "ruleServer":    "规则处理单元",
   "dataProcess":   "规则处理单元",
   "pushServer":   "规则处理单元",
   // "dataProcess":   "规则处理单元",
   "schedule":      "调度进程",
   "sdkCompare":    "人脸比对服务",
   // "sdkCompare":    "人脸比对服务",
   "sshd":          "ssh服务端",
   "videopublish":  "实时视频推流服务",
   "videosvr.out":  "国标上级服务",
   "weed":          "分布式文件系统",
}
var ModleProc = map[string]string{
   "python smart_detect.py":         "目标检测模型",
   "/usr/bin/python qwen_detect.py": "图片解析模型",
   "python app.py":                  "对话检索模型",
}
type UsedMap map[int]int64
@@ -51,10 +57,9 @@
   Net  int32   `json:"net"`
}
func CollectAlgoProcess() []Proc {
   var procs []Proc
func CollectAlgoProcess() (rsp []Proc) {
   var gpuMemTotal int64
   var re = regexp.MustCompile(`-sdk=(\S+)`)
   // 统计gpu
   gpuPer := UsedMap{}
   gpuInfo, err := gogpu.Info()
@@ -74,35 +79,83 @@
   ps, _ := process.Processes()
   // 统计算法信息
   for _, p := range ps {
      if name, err := p.Name(); err == nil {
         if name == "analysis" {
            cmdLine, _ := p.Cmdline()
            if len(cmdLine) > 0 {
               match := re.FindAllStringSubmatch(cmdLine, -1)
               if len(match) > 0 && len(match[0]) > 1 {
   for k, v := range ModleProc {
                  proc := Proc{
                     Name: match[0][1],
                     Pid:  p.Pid,
                     Desc: match[0][1],
         Name: k,
         Desc: v,
                  }
      for _, p := range ps {
         if name, err := p.Cmdline(); err == nil {
            if name == k {
               proc.Pid = p.Pid
                  proc.Cpu, _ = p.CPUPercent()
                  proc.Mem, _ = p.MemoryPercent()
                  proc.Gpu = gpuPer.Get(int(p.Pid))
                  procs = append(procs, proc)
               }
               break
            }
         }
      }
      rsp = append(rsp, proc)
   }
   return procs
   return
}
// func CollectAlgoProcess() []Proc {
//    var procs []Proc
//    var gpuMemTotal int64
//    var re = regexp.MustCompile(`-sdk=(\S+)`)
//    gpuPer := UsedMap{}
//    gpuInfo, err := gogpu.Info()
//    if err == nil {
//       for _, gpu := range gpuInfo.Info {
//          gpuMemTotal = gpuMemTotal + gpu.GpuMemoryTotal
//       }
//       for _, proc := range gpuInfo.Processes {
//          if _, ok := gpuPer[proc.Pid]; ok {
//             gpuPer[proc.Pid] = gpuPer[proc.Pid] + int64(proc.UsedMem)
//          } else {
//             gpuPer[proc.Pid] = int64(proc.UsedMem)
//          }
//       }
//    }
//    ps, _ := process.Processes()
//    // 统计算法信息
//    for _, p := range ps {
//       if name, err := p.Name(); err == nil {
//          if name == "analysis" {
//             cmdLine, _ := p.Cmdline()
//             if len(cmdLine) > 0 {
//                match := re.FindAllStringSubmatch(cmdLine, -1)
//                if len(match) > 0 && len(match[0]) > 1 {
//                   proc := Proc{
//                      Name: match[0][1],
//                      Pid:  p.Pid,
//                      Desc: match[0][1],
//                   }
//                   proc.Cpu, _ = p.CPUPercent()
//                   proc.Mem, _ = p.MemoryPercent()
//                   proc.Gpu = gpuPer.Get(int(p.Pid))
//                   procs = append(procs, proc)
//                }
//             }
//          }
//       }
//    }
//    return procs
// }
func CollectAppProcess() []Proc {
   var procs []Proc
   var gpuMemTotal int64