From f26a0cab5bca17b7eab57f6330e576271e17a17f Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期三, 13 十一月 2019 19:12:08 +0800 Subject: [PATCH] update ynSwagger,sync to master --- extend/sys/sysinfo.go | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 58 insertions(+), 0 deletions(-) diff --git a/extend/sys/sysinfo.go b/extend/sys/sysinfo.go index 96e89f9..208be3e 100644 --- a/extend/sys/sysinfo.go +++ b/extend/sys/sysinfo.go @@ -1 +1,59 @@ 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) +} -- Gitblit v1.8.0