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