| | |
| | | package sys |
| | | |
| | | import ( |
| | | "sort" |
| | | "time" |
| | | "webserver/extend/util" |
| | | |
| | | "basic.com/valib/gogpu.git" |
| | | |
| | | "github.com/shirou/gopsutil/cpu" |
| | | "github.com/shirou/gopsutil/disk" |
| | | "github.com/shirou/gopsutil/mem" |
| | | ) |
| | | |
| | | type SummaryInfo struct { |
| | | Cpu []float64 `json:"cpu" example:"cpu使用率"` |
| | | Gpu []gogpu.GpuUnitInfo `json:"gpu" example:"gpu使用率"` |
| | | Mem mem.VirtualMemoryStat `json:"mem" example:"内存使用率"` |
| | | Disk disk.UsageStat `json:"disk" example:"磁盘空间"` |
| | | } |
| | | |
| | | const Interval time.Duration = time.Second * 60 |
| | | |
| | | var Stat = &SummaryInfo{} |
| | | |
| | | func GatherStat() { |
| | | for range time.Tick(Interval) { |
| | | // Cpu |
| | | if cpuUsedPercent, err := cpu.Percent(time.Second, true); err == nil { |
| | | Stat.Cpu = Stat.Cpu[0:0] |
| | | for _, v := range cpuUsedPercent { |
| | | Stat.Cpu = append(Stat.Cpu, v) |
| | | } |
| | | } |
| | | |
| | | // Memory |
| | | if meminfo, err := mem.VirtualMemory(); err == nil { |
| | | Stat.Mem = *meminfo |
| | | } |
| | | |
| | | // Disk |
| | | if disk, err := disk.Usage("/"); err == nil { |
| | | Stat.Disk = *disk |
| | | } |
| | | |
| | | // Gpu |
| | | 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) |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | func GetSysInfo() map[string]interface{} { |
| | | return util.Struct2Map(Stat) |
| | | } |