123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package gupta
- import (
- "fmt"
- "strconv"
- "strings"
- )
- const version = "0.0.1"
- func Hello() string {
- return fmt.Sprintf("Welcome to gupta version %s", version)
- }
- func Run(load, cpu, memory bool, partition, networkInterface string) (cpuLoad, cpuUsage, memoryUsage float64) {
- cpuLoad = 0.2
- cpuUsage = 0.2
- memoryUsage = 70.0
- return cpuLoad, cpuUsage, memoryUsage
- }
- type GuptaReport struct {
- cpuLoad float64
- cpuUsage float64
- memoryUsage float64
- }
- func (g *GuptaReport) GetCPULoad() string {
- return fmt.Sprintf("%.2f", g.cpuLoad)
- }
- // collect all CPU stat from /proc/cpustat
- type CPUStat struct {
- user uint64
- nice uint64
- system uint64
- idle uint64
- iowait uint64
- irq uint64
- softirq uint64
- steal uint64
- guest uint64
- guest_nice uint64
- }
- // parse the first line of /proc/cpustat
- func (c *CPUStat) ReadInfo(rawInfo []string) {
- if s, err := strconv.ParseUint(rawInfo[0], 10, 64); err == nil {
- c.user = s
- }
- if s, err := strconv.ParseUint(rawInfo[1], 10, 64); err == nil {
- c.nice = s
- }
- if s, err := strconv.ParseUint(rawInfo[2], 10, 64); err == nil {
- c.system = s
- }
- if s, err := strconv.ParseUint(rawInfo[3], 10, 64); err == nil {
- c.idle = s
- }
- if s, err := strconv.ParseUint(rawInfo[4], 10, 64); err == nil {
- c.iowait = s
- }
- if s, err := strconv.ParseUint(rawInfo[5], 10, 64); err == nil {
- c.irq = s
- }
- if s, err := strconv.ParseUint(rawInfo[6], 10, 64); err == nil {
- c.softirq = s
- }
- if s, err := strconv.ParseUint(rawInfo[7], 10, 64); err == nil {
- c.steal = s
- }
- if s, err := strconv.ParseUint(rawInfo[8], 10, 64); err == nil {
- c.guest = s
- }
- if s, err := strconv.ParseUint(rawInfo[9], 10, 64); err == nil {
- c.guest_nice = s
- }
- }
- func (c *CPUStat) TotalTime() uint64 {
- return c.user + c.nice + c.system + c.idle + c.iowait + c.irq + c.softirq + c.steal
- }
- func (c *CPUStat) IdleTime() uint64 {
- return c.idle + c.iowait
- }
- func NewCPUStat(procstatline string) CPUStat {
- cpustat := CPUStat{}
- statline := strings.Fields(procstatline)
- cpustat.ReadInfo(statline[1:])
- return cpustat
- }
|