cache.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package customcache
  2. import (
  3. "sync"
  4. )
  5. //var timeout *time.Ticker = time.NewTicker(time.Duration(10 * time.Second))
  6. type MlabCache struct {
  7. Cache map[string]map[string]float64
  8. Mux sync.Mutex
  9. }
  10. var LabCache MlabCache = MlabCache{
  11. Cache: map[string]map[string]float64{
  12. "kube-01": map[string]float64{
  13. "ipc": -1,
  14. "mem_read": -1,
  15. "mem_write": -1,
  16. "c6res": -1,
  17. },
  18. "kube-02": map[string]float64{
  19. "ipc": -1,
  20. "mem_read": -1,
  21. "mem_write": -1,
  22. "c6res": -1,
  23. },
  24. "kube-03": map[string]float64{
  25. "ipc": -1,
  26. "mem_read": -1,
  27. "mem_write": -1,
  28. "c6res": -1,
  29. },
  30. "kube-04": map[string]float64{
  31. "ipc": -1,
  32. "mem_read": -1,
  33. "mem_write": -1,
  34. "c6res": -1,
  35. },
  36. "kube-05": map[string]float64{
  37. "ipc": -1,
  38. "mem_read": -1,
  39. "mem_write": -1,
  40. "c6res": -1,
  41. },
  42. "kube-06": map[string]float64{
  43. "ipc": -1,
  44. "mem_read": -1,
  45. "mem_write": -1,
  46. "c6res": -1,
  47. },
  48. "kube-07": map[string]float64{
  49. "ipc": -1,
  50. "mem_read": -1,
  51. "mem_write": -1,
  52. "c6res": -1,
  53. },
  54. "kube-08": map[string]float64{
  55. "ipc": -1,
  56. "mem_read": -1,
  57. "mem_write": -1,
  58. "c6res": -1,
  59. },
  60. },
  61. }
  62. func (c *MlabCache) CleanCache() {
  63. c.Mux.Lock()
  64. c.Cache = map[string]map[string]float64{
  65. "kube-01": map[string]float64{
  66. "ipc": -1,
  67. "mem_read": -1,
  68. "mem_write": -1,
  69. "c6res": -1,
  70. },
  71. "kube-02": map[string]float64{
  72. "ipc": -1,
  73. "mem_read": -1,
  74. "mem_write": -1,
  75. "c6res": -1,
  76. },
  77. "kube-03": map[string]float64{
  78. "ipc": -1,
  79. "mem_read": -1,
  80. "mem_write": -1,
  81. "c6res": -1,
  82. },
  83. "kube-04": map[string]float64{
  84. "ipc": -1,
  85. "mem_read": -1,
  86. "mem_write": -1,
  87. "c6res": -1,
  88. },
  89. "kube-05": map[string]float64{
  90. "ipc": -1,
  91. "mem_read": -1,
  92. "mem_write": -1,
  93. "c6res": -1,
  94. },
  95. "kube-06": map[string]float64{
  96. "ipc": -1,
  97. "mem_read": -1,
  98. "mem_write": -1,
  99. "c6res": -1,
  100. },
  101. "kube-07": map[string]float64{
  102. "ipc": -1,
  103. "mem_read": -1,
  104. "mem_write": -1,
  105. "c6res": -1,
  106. },
  107. "kube-08": map[string]float64{
  108. "ipc": -1,
  109. "mem_read": -1,
  110. "mem_write": -1,
  111. "c6res": -1,
  112. },
  113. }
  114. c.Mux.Unlock()
  115. }
  116. func (c *MlabCache) UpdateCache(input map[string]float64, c6res float64, nodename string) error {
  117. c.Mux.Lock()
  118. c.Cache[nodename] = map[string]float64{
  119. "ipc": input["ipc"],
  120. "mem_read": input["mem_read"],
  121. "mem_write": input["mem_write"],
  122. "c6res": input["c6res"],
  123. }
  124. c.Mux.Unlock()
  125. return nil
  126. }
  127. func (c *MlabCache) AddAppMetrics(app map[string]float64, nodename string, numCores int) {
  128. c.Mux.Lock()
  129. c.Cache[nodename]["mem_read"] += app["mem_read"]
  130. c.Cache[nodename]["mem_write"] += app["mem_write"]
  131. //TODO
  132. // handle c6res addition
  133. c.Cache[nodename]["c6res"] -= (1 - app["c6res"]) / float64(100*numCores)
  134. //TODO
  135. // handle ipc addition
  136. c.Mux.Unlock()
  137. }