...
1
16
17 package perf
18
19 import (
20 "fmt"
21
22 e2ekubelet "k8s.io/kubernetes/test/e2e/framework/kubelet"
23 "k8s.io/kubernetes/test/e2e/perftype"
24 )
25
26
27
28
29 const CurrentKubeletPerfMetricsVersion = "v2"
30
31
32
33 func ResourceUsageToPerfData(usagePerNode e2ekubelet.ResourceUsagePerNode) *perftype.PerfData {
34 return ResourceUsageToPerfDataWithLabels(usagePerNode, nil)
35 }
36
37
38 func CPUUsageToPerfData(usagePerNode e2ekubelet.NodesCPUSummary) *perftype.PerfData {
39 return CPUUsageToPerfDataWithLabels(usagePerNode, nil)
40 }
41
42
43
44 func ResourceUsageToPerfDataWithLabels(usagePerNode e2ekubelet.ResourceUsagePerNode, labels map[string]string) *perftype.PerfData {
45 items := []perftype.DataItem{}
46 for node, usages := range usagePerNode {
47 for c, usage := range usages {
48 item := perftype.DataItem{
49 Data: map[string]float64{
50 "memory": float64(usage.MemoryUsageInBytes) / (1024 * 1024),
51 "workingset": float64(usage.MemoryWorkingSetInBytes) / (1024 * 1024),
52 "rss": float64(usage.MemoryRSSInBytes) / (1024 * 1024),
53 },
54 Unit: "MB",
55 Labels: map[string]string{
56 "node": node,
57 "container": c,
58 "datatype": "resource",
59 "resource": "memory",
60 },
61 }
62 items = append(items, item)
63 }
64 }
65 return &perftype.PerfData{
66 Version: CurrentKubeletPerfMetricsVersion,
67 DataItems: items,
68 Labels: labels,
69 }
70 }
71
72
73 func CPUUsageToPerfDataWithLabels(usagePerNode e2ekubelet.NodesCPUSummary, labels map[string]string) *perftype.PerfData {
74 items := []perftype.DataItem{}
75 for node, usages := range usagePerNode {
76 for c, usage := range usages {
77 data := map[string]float64{}
78 for perc, value := range usage {
79 data[fmt.Sprintf("Perc%02.0f", perc*100)] = value * 1000
80 }
81
82 item := perftype.DataItem{
83 Data: data,
84 Unit: "mCPU",
85 Labels: map[string]string{
86 "node": node,
87 "container": c,
88 "datatype": "resource",
89 "resource": "cpu",
90 },
91 }
92 items = append(items, item)
93 }
94 }
95 return &perftype.PerfData{
96 Version: CurrentKubeletPerfMetricsVersion,
97 DataItems: items,
98 Labels: labels,
99 }
100 }
101
View as plain text