aboutsummaryrefslogtreecommitdiff
path: root/collector
diff options
context:
space:
mode:
authorBen Kochie <superq@gmail.com>2020-02-20 12:05:59 +0100
committerGitHub <noreply@github.com>2020-02-20 12:05:59 +0100
commitc4183f993534aad9e8d6b9bc890e05304eb1f5a6 (patch)
tree1322a09d73e6aa34d44bbd5cd063f020f635e26e /collector
parentec6214138801d80045e916479a1f8297c40de8e3 (diff)
downloadprometheus_node_collector-c4183f993534aad9e8d6b9bc890e05304eb1f5a6.tar.bz2
prometheus_node_collector-c4183f993534aad9e8d6b9bc890e05304eb1f5a6.tar.xz
prometheus_node_collector-c4183f993534aad9e8d6b9bc890e05304eb1f5a6.zip
Minor cleanup in perf collector (#1616)
* Use `strconv.Itoa()` instead of `fmt.Sprintf()` for simple conversion. * Eliminate copy-paste in collector setup. Signed-off-by: Ben Kochie <superq@gmail.com>
Diffstat (limited to 'collector')
-rw-r--r--collector/perf_linux.go66
1 files changed, 28 insertions, 38 deletions
diff --git a/collector/perf_linux.go b/collector/perf_linux.go
index b67f970..bb8716a 100644
--- a/collector/perf_linux.go
+++ b/collector/perf_linux.go
@@ -111,52 +111,42 @@ func NewPerfCollector(logger log.Logger) (Collector, error) {
111 logger: logger, 111 logger: logger,
112 } 112 }
113 113
114 var (
115 cpus []int
116 err error
117 )
114 if perfCPUsFlag != nil && *perfCPUsFlag != "" { 118 if perfCPUsFlag != nil && *perfCPUsFlag != "" {
115 cpus, err := perfCPUFlagToCPUs(*perfCPUsFlag) 119 cpus, err = perfCPUFlagToCPUs(*perfCPUsFlag)
116 if err != nil { 120 if err != nil {
117 return nil, err 121 return nil, err
118 } 122 }
119 for _, cpu := range cpus { 123 } else {
120 // Use -1 to profile all processes on the CPU, see: 124 cpus = make([]int, runtime.NumCPU())
121 // man perf_event_open 125 for i := range cpus {
122 hwProf := perf.NewHardwareProfiler(-1, cpu) 126 cpus[i] = i
123 if err := hwProf.Start(); err != nil { 127 }
124 return nil, err 128 }
125 }
126 collector.perfHwProfilers[cpu] = &hwProf
127
128 swProf := perf.NewSoftwareProfiler(-1, cpu)
129 if err := swProf.Start(); err != nil {
130 return nil, err
131 }
132 collector.perfSwProfilers[cpu] = &swProf
133 129
134 cacheProf := perf.NewCacheProfiler(-1, cpu) 130 for _, cpu := range cpus {
135 if err := cacheProf.Start(); err != nil { 131 // Use -1 to profile all processes on the CPU, see:
136 return nil, err 132 // man perf_event_open
137 } 133 hwProf := perf.NewHardwareProfiler(-1, cpu)
138 collector.perfCacheProfilers[cpu] = &cacheProf 134 if err := hwProf.Start(); err != nil {
135 return nil, err
139 } 136 }
140 } else { 137 collector.perfHwProfilers[cpu] = &hwProf
141 for i := 0; i < runtime.NumCPU(); i++ {
142 hwProf := perf.NewHardwareProfiler(-1, i)
143 if err := hwProf.Start(); err != nil {
144 return nil, err
145 }
146 collector.perfHwProfilers[i] = &hwProf
147 138
148 swProf := perf.NewSoftwareProfiler(-1, i) 139 swProf := perf.NewSoftwareProfiler(-1, cpu)
149 if err := swProf.Start(); err != nil { 140 if err := swProf.Start(); err != nil {
150 return nil, err 141 return nil, err
151 } 142 }
152 collector.perfSwProfilers[i] = &swProf 143 collector.perfSwProfilers[cpu] = &swProf
153 144
154 cacheProf := perf.NewCacheProfiler(-1, i) 145 cacheProf := perf.NewCacheProfiler(-1, cpu)
155 if err := cacheProf.Start(); err != nil { 146 if err := cacheProf.Start(); err != nil {
156 return nil, err 147 return nil, err
157 }
158 collector.perfCacheProfilers[i] = &cacheProf
159 } 148 }
149 collector.perfCacheProfilers[cpu] = &cacheProf
160 } 150 }
161 151
162 collector.desc = map[string]*prometheus.Desc{ 152 collector.desc = map[string]*prometheus.Desc{
@@ -425,7 +415,7 @@ func (c *perfCollector) Update(ch chan<- prometheus.Metric) error {
425func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { 415func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
426 for _, profiler := range c.perfHwProfilers { 416 for _, profiler := range c.perfHwProfilers {
427 cpuid := c.hwProfilerCPUMap[profiler] 417 cpuid := c.hwProfilerCPUMap[profiler]
428 cpuStr := fmt.Sprintf("%d", cpuid) 418 cpuStr := strconv.Itoa(cpuid)
429 hwProfile, err := (*profiler).Profile() 419 hwProfile, err := (*profiler).Profile()
430 if err != nil { 420 if err != nil {
431 return err 421 return err