From 87b55a899bc1b4bc7d5a0f8d6ad1a1ede233ebd1 Mon Sep 17 00:00:00 2001
From: qixiaoning <jony.kee@outlook.com>
Date: 星期四, 04 九月 2025 17:35:24 +0800
Subject: [PATCH] 系统监控模型进程统计实时监控摄像机名称为空问题修复

---
 sysinfo-service/service/proc.go |  129 ++++++++++++++++++++++++++++++------------
 1 files changed, 91 insertions(+), 38 deletions(-)

diff --git a/sysinfo-service/service/proc.go b/sysinfo-service/service/proc.go
index 482e4a9..bfe0d51 100644
--- a/sysinfo-service/service/proc.go
+++ b/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":       "瑙嗛瑙g爜鏈嶅姟",
 	"elasticsearch": "鍒嗗竷寮忔暟鎹悳绱㈠紩鎿�",
-	"faceDetect":    "浜鸿劯璇嗗埆鏈嶅姟",
-	"file-service":  "鏂囦欢鏈嶅姟",
-	"pollcontrol":   "杞绠$悊",
-	"ruleServer":    "瑙勫垯澶勭悊鍗曞厓",
-	"dataProcess":   "瑙勫垯澶勭悊鍗曞厓",
-	"schedule":      "璋冨害杩涚▼",
-	"sdkCompare":    "浜鸿劯姣斿鏈嶅姟",
-	"sshd":          "ssh鏈嶅姟绔�",
-	"videopublish":  "瀹炴椂瑙嗛鎺ㄦ祦鏈嶅姟",
-	"videosvr.out":  "鍥芥爣涓婄骇鏈嶅姟",
-	"weed":          "鍒嗗竷寮忔枃浠剁郴缁�",
+	// "faceDetect":    "浜鸿劯璇嗗埆鏈嶅姟",
+	"file-service": "鏂囦欢鏈嶅姟",
+	"pollcontrol":  "杞绠$悊",
+	"pushServer":   "瑙勫垯澶勭悊鍗曞厓",
+	// "dataProcess":   "瑙勫垯澶勭悊鍗曞厓",
+	"schedule": "璋冨害杩涚▼",
+	// "sdkCompare":    "浜鸿劯姣斿鏈嶅姟",
+	"sshd":         "ssh鏈嶅姟绔�",
+	"videopublish": "瀹炴椂瑙嗛鎺ㄦ祦鏈嶅姟",
+	"videosvr.out": "鍥芥爣涓婄骇鏈嶅姟",
+	"weed":         "鍒嗗竷寮忔枃浠剁郴缁�",
+}
+
+var ModleProc = map[string]string{
+	"python smart_detect.py":         "鐩爣妫�娴嬫ā鍨�",
+	"/usr/bin/python qwen_detect.py": "鍥剧墖瑙f瀽妯″瀷",
+	"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 {
-						proc := Proc{
-							Name: match[0][1],
-							Pid:  p.Pid,
-							Desc: match[0][1],
-						}
+	for k, v := range ModleProc {
+		proc := Proc{
+			Name: k,
+			Desc: v,
+		}
 
-						proc.Cpu, _ = p.CPUPercent()
-						proc.Mem, _ = p.MemoryPercent()
-						proc.Gpu = gpuPer.Get(int(p.Pid))
-
-						procs = append(procs, proc)
-					}
+		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))
+					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

--
Gitblit v1.8.0