mirror of
				https://github.com/ClusterCockpit/cc-metric-store.git
				synced 2025-11-04 10:45:07 +01:00 
			
		
		
		
	Some more heap/gc tuning
This commit is contained in:
		
							
								
								
									
										105
									
								
								scripts/send-fake-data.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										105
									
								
								scripts/send-fake-data.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,105 @@
 | 
			
		||||
package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"bytes"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"io"
 | 
			
		||||
	"log"
 | 
			
		||||
	"math"
 | 
			
		||||
	"math/rand"
 | 
			
		||||
	"net/http"
 | 
			
		||||
	"time"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJFZERTQSJ9.eyJ1c2VyIjoiYWRtaW4iLCJyb2xlcyI6WyJST0xFX0FETUlOIiwiUk9MRV9BTkFMWVNUIiwiUk9MRV9VU0VSIl19.d-3_3FZTsadPjDEdsWrrQ7nS0edMAR4zjl-eK7rJU3HziNBfI9PDHDIpJVHTNN5E5SlLGLFXctWyKAkwhXL-Dw"
 | 
			
		||||
const ccmsurl = "http://localhost:8081/api/write"
 | 
			
		||||
const cluster = "fakedev"
 | 
			
		||||
const sockets = 2
 | 
			
		||||
const cpus = 8
 | 
			
		||||
const freq = 15 * time.Second
 | 
			
		||||
 | 
			
		||||
var hosts = []string{"fake001", "fake002", "fake003", "fake004", "fake005"}
 | 
			
		||||
var metrics = []struct {
 | 
			
		||||
	Name     string
 | 
			
		||||
	Type     string
 | 
			
		||||
	AvgValue float64
 | 
			
		||||
}{
 | 
			
		||||
	{"flops_any", "cpu", 10.0},
 | 
			
		||||
	{"mem_bw", "socket", 50.0},
 | 
			
		||||
	{"ipc", "cpu", 1.25},
 | 
			
		||||
	{"cpu_load", "node", 4},
 | 
			
		||||
	{"mem_used", "node", 20},
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
var states = make([]float64, 0)
 | 
			
		||||
 | 
			
		||||
func send(client *http.Client, t int64) {
 | 
			
		||||
	msg := &bytes.Buffer{}
 | 
			
		||||
 | 
			
		||||
	i := 0
 | 
			
		||||
	for _, host := range hosts {
 | 
			
		||||
		for _, metric := range metrics {
 | 
			
		||||
			n := 1
 | 
			
		||||
			if metric.Type == "socket" {
 | 
			
		||||
				n = sockets
 | 
			
		||||
			} else if metric.Type == "cpu" {
 | 
			
		||||
				n = cpus
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			for j := 0; j < n; j++ {
 | 
			
		||||
				fmt.Fprintf(msg, "%s,cluster=%s,host=%s,type=%s", metric.Name, cluster, host, metric.Type)
 | 
			
		||||
				if metric.Type == "socket" {
 | 
			
		||||
					fmt.Fprintf(msg, ",type-id=%d", j)
 | 
			
		||||
				} else if metric.Type == "cpu" {
 | 
			
		||||
					fmt.Fprintf(msg, ",type-id=%d", j)
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				x := metric.AvgValue + math.Sin(states[i])*(metric.AvgValue/10.)
 | 
			
		||||
				states[i] += 0.1
 | 
			
		||||
				fmt.Fprintf(msg, " value=%f ", x)
 | 
			
		||||
 | 
			
		||||
				fmt.Fprintf(msg, "%d\n", t)
 | 
			
		||||
				i++
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	req, _ := http.NewRequest(http.MethodPost, ccmsurl, msg)
 | 
			
		||||
	req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token))
 | 
			
		||||
	res, err := client.Do(req)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Print(err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
	if res.StatusCode != http.StatusOK {
 | 
			
		||||
		body, _ := io.ReadAll(res.Body)
 | 
			
		||||
		log.Printf("%s: %s", res.Status, string(body))
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func main() {
 | 
			
		||||
	for range hosts {
 | 
			
		||||
		for _, m := range metrics {
 | 
			
		||||
			n := 1
 | 
			
		||||
			if m.Type == "socket" {
 | 
			
		||||
				n = sockets
 | 
			
		||||
			} else if m.Type == "cpu" {
 | 
			
		||||
				n = cpus
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			for i := 0; i < n; i++ {
 | 
			
		||||
				states = append(states, rand.Float64()*100)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	client := &http.Client{}
 | 
			
		||||
 | 
			
		||||
	i := 0
 | 
			
		||||
	for t := range time.Tick(freq) {
 | 
			
		||||
		log.Printf("tick... (#%d)", i)
 | 
			
		||||
		i++
 | 
			
		||||
 | 
			
		||||
		send(client, t.Unix())
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user