gupta.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package gupta
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. const version = "0.0.1"
  7. func Hello() string {
  8. return fmt.Sprintf("Welcome to gupta version %s", version)
  9. }
  10. func Run(load, cpu, memory bool, partition, networkInterface string) (cpuLoad, cpuUsage, memoryUsage float64) {
  11. cpuLoad = 0.2
  12. cpuUsage = 0.2
  13. memoryUsage = 70.0
  14. return cpuLoad, cpuUsage, memoryUsage
  15. }
  16. type GuptaReport struct {
  17. cpuLoad float64
  18. cpuUsage float64
  19. memoryUsage float64
  20. }
  21. func (g *GuptaReport) GetCPULoad() string {
  22. return fmt.Sprintf("%.2f", g.cpuLoad)
  23. }
  24. // collect all CPU stat from /proc/cpustat
  25. type CPUStat struct {
  26. user uint64
  27. nice uint64
  28. system uint64
  29. idle uint64
  30. iowait uint64
  31. irq uint64
  32. softirq uint64
  33. steal uint64
  34. guest uint64
  35. guest_nice uint64
  36. }
  37. // parse the first line of /proc/cpustat
  38. func (c *CPUStat) ReadInfo(rawInfo []string) {
  39. if s, err := strconv.ParseUint(rawInfo[0], 10, 64); err == nil {
  40. c.user = s
  41. }
  42. if s, err := strconv.ParseUint(rawInfo[1], 10, 64); err == nil {
  43. c.nice = s
  44. }
  45. if s, err := strconv.ParseUint(rawInfo[2], 10, 64); err == nil {
  46. c.system = s
  47. }
  48. if s, err := strconv.ParseUint(rawInfo[3], 10, 64); err == nil {
  49. c.idle = s
  50. }
  51. if s, err := strconv.ParseUint(rawInfo[4], 10, 64); err == nil {
  52. c.idle = s
  53. }
  54. if s, err := strconv.ParseUint(rawInfo[5], 10, 64); err == nil {
  55. c.iowait = s
  56. }
  57. if s, err := strconv.ParseUint(rawInfo[6], 10, 64); err == nil {
  58. c.irq = s
  59. }
  60. if s, err := strconv.ParseUint(rawInfo[7], 10, 64); err == nil {
  61. c.softirq = s
  62. }
  63. if s, err := strconv.ParseUint(rawInfo[8], 10, 64); err == nil {
  64. c.softirq = s
  65. }
  66. if s, err := strconv.ParseUint(rawInfo[9], 10, 64); err == nil {
  67. c.steal = s
  68. }
  69. if s, err := strconv.ParseUint(rawInfo[10], 10, 64); err == nil {
  70. c.guest = s
  71. }
  72. if s, err := strconv.ParseUint(rawInfo[11], 10, 64); err == nil {
  73. c.guest_nice = s
  74. }
  75. }