@@ -111,52 +111,42 @@ func NewPerfCollector(logger log.Logger) (Collector, error) {
111111 logger : logger ,
112112 }
113113
114+ var (
115+ cpus []int
116+ err error
117+ )
114118 if perfCPUsFlag != nil && * perfCPUsFlag != "" {
115- cpus , err : = perfCPUFlagToCPUs (* perfCPUsFlag )
119+ cpus , err = perfCPUFlagToCPUs (* perfCPUsFlag )
116120 if err != nil {
117121 return nil , err
118122 }
119- for _ , cpu := range cpus {
120- // Use -1 to profile all processes on the CPU, see:
121- // man perf_event_open
122- hwProf := perf .NewHardwareProfiler (- 1 , cpu )
123- if err := hwProf .Start (); err != nil {
124- return nil , err
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
123+ } else {
124+ cpus = make ([]int , runtime .NumCPU ())
125+ for i := range cpus {
126+ cpus [i ] = i
127+ }
128+ }
133129
134- cacheProf := perf .NewCacheProfiler (- 1 , cpu )
135- if err := cacheProf .Start (); err != nil {
136- return nil , err
137- }
138- collector .perfCacheProfilers [cpu ] = & cacheProf
130+ for _ , cpu := range cpus {
131+ // Use -1 to profile all processes on the CPU, see:
132+ // man perf_event_open
133+ hwProf := perf .NewHardwareProfiler (- 1 , cpu )
134+ if err := hwProf .Start (); err != nil {
135+ return nil , err
139136 }
140- } else {
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
137+ collector .perfHwProfilers [cpu ] = & hwProf
147138
148- swProf := perf .NewSoftwareProfiler (- 1 , i )
149- if err := swProf .Start (); err != nil {
150- return nil , err
151- }
152- collector .perfSwProfilers [i ] = & swProf
139+ swProf := perf .NewSoftwareProfiler (- 1 , cpu )
140+ if err := swProf .Start (); err != nil {
141+ return nil , err
142+ }
143+ collector .perfSwProfilers [cpu ] = & swProf
153144
154- cacheProf := perf .NewCacheProfiler (- 1 , i )
155- if err := cacheProf .Start (); err != nil {
156- return nil , err
157- }
158- collector .perfCacheProfilers [i ] = & cacheProf
145+ cacheProf := perf .NewCacheProfiler (- 1 , cpu )
146+ if err := cacheProf .Start (); err != nil {
147+ return nil , err
159148 }
149+ collector .perfCacheProfilers [cpu ] = & cacheProf
160150 }
161151
162152 collector .desc = map [string ]* prometheus.Desc {
@@ -425,7 +415,7 @@ func (c *perfCollector) Update(ch chan<- prometheus.Metric) error {
425415func (c * perfCollector ) updateHardwareStats (ch chan <- prometheus.Metric ) error {
426416 for _ , profiler := range c .perfHwProfilers {
427417 cpuid := c .hwProfilerCPUMap [profiler ]
428- cpuStr := fmt . Sprintf ( "%d" , cpuid )
418+ cpuStr := strconv . Itoa ( cpuid )
429419 hwProfile , err := (* profiler ).Profile ()
430420 if err != nil {
431421 return err
0 commit comments