|
|
|
@ -160,7 +160,6 @@ func (c *perfTracepointCollector) update(ch chan<- prometheus.Metric) error {
|
|
|
|
|
|
|
|
|
|
// updateCPU is used to update metrics per CPU profiler.
|
|
|
|
|
func (c *perfTracepointCollector) updateCPU(cpu int, ch chan<- prometheus.Metric) error { |
|
|
|
|
cpuStr := fmt.Sprintf("%d", cpu) |
|
|
|
|
profiler := c.profilers[cpu] |
|
|
|
|
p, err := profiler.Profile() |
|
|
|
|
if err != nil { |
|
|
|
@ -168,6 +167,8 @@ func (c *perfTracepointCollector) updateCPU(cpu int, ch chan<- prometheus.Metric
|
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cpuid := strconv.Itoa(cpu) |
|
|
|
|
|
|
|
|
|
for i, value := range p.Values { |
|
|
|
|
// Get the Desc from the ordered group value.
|
|
|
|
|
descKey := c.collectionOrder[i] |
|
|
|
@ -176,7 +177,7 @@ func (c *perfTracepointCollector) updateCPU(cpu int, ch chan<- prometheus.Metric
|
|
|
|
|
c.descs[descKeySlice[0]][descKeySlice[1]], |
|
|
|
|
prometheus.CounterValue, |
|
|
|
|
float64(value), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
@ -584,8 +585,6 @@ func (c *perfCollector) Update(ch chan<- prometheus.Metric) error {
|
|
|
|
|
|
|
|
|
|
func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error { |
|
|
|
|
for _, profiler := range c.perfHwProfilers { |
|
|
|
|
cpuid := c.hwProfilerCPUMap[profiler] |
|
|
|
|
cpuStr := strconv.Itoa(cpuid) |
|
|
|
|
hwProfile, err := (*profiler).Profile() |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
@ -594,11 +593,13 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cpuid := strconv.Itoa(c.hwProfilerCPUMap[profiler]) |
|
|
|
|
|
|
|
|
|
if hwProfile.CPUCycles != nil { |
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cpucycles_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.CPUCycles), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -606,7 +607,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["instructions_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.Instructions), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -614,7 +615,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["branch_instructions_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.BranchInstr), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -622,7 +623,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["branch_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.BranchMisses), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -630,7 +631,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_refs_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.CacheRefs), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -638,7 +639,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.CacheMisses), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -646,7 +647,7 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["ref_cpucycles_total"], |
|
|
|
|
prometheus.CounterValue, float64(*hwProfile.RefCPUCycles), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -656,8 +657,6 @@ func (c *perfCollector) updateHardwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
|
|
|
|
|
func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error { |
|
|
|
|
for _, profiler := range c.perfSwProfilers { |
|
|
|
|
cpuid := c.swProfilerCPUMap[profiler] |
|
|
|
|
cpuStr := fmt.Sprintf("%d", cpuid) |
|
|
|
|
swProfile, err := (*profiler).Profile() |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
@ -666,11 +665,13 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cpuid := strconv.Itoa(c.swProfilerCPUMap[profiler]) |
|
|
|
|
|
|
|
|
|
if swProfile.PageFaults != nil { |
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["page_faults_total"], |
|
|
|
|
prometheus.CounterValue, float64(*swProfile.PageFaults), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -678,7 +679,7 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["context_switches_total"], |
|
|
|
|
prometheus.CounterValue, float64(*swProfile.ContextSwitches), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -686,7 +687,7 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cpu_migrations_total"], |
|
|
|
|
prometheus.CounterValue, float64(*swProfile.CPUMigrations), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -694,7 +695,7 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["minor_faults_total"], |
|
|
|
|
prometheus.CounterValue, float64(*swProfile.MinorPageFaults), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -702,7 +703,7 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["major_faults_total"], |
|
|
|
|
prometheus.CounterValue, float64(*swProfile.MajorPageFaults), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -712,8 +713,6 @@ func (c *perfCollector) updateSoftwareStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
|
|
|
|
|
func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error { |
|
|
|
|
for _, profiler := range c.perfCacheProfilers { |
|
|
|
|
cpuid := c.cacheProfilerCPUMap[profiler] |
|
|
|
|
cpuStr := fmt.Sprintf("%d", cpuid) |
|
|
|
|
cacheProfile, err := (*profiler).Profile() |
|
|
|
|
if err != nil { |
|
|
|
|
return err |
|
|
|
@ -722,11 +721,13 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
cpuid := strconv.Itoa(c.cacheProfilerCPUMap[profiler]) |
|
|
|
|
|
|
|
|
|
if cacheProfile.L1DataReadHit != nil { |
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_l1d_read_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.L1DataReadHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -734,7 +735,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_l1d_read_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.L1DataReadMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -742,7 +743,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_l1d_write_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.L1DataWriteHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -750,7 +751,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_l1_instr_read_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.L1InstrReadMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -758,7 +759,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_tlb_instr_read_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.InstrTLBReadHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -766,7 +767,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_tlb_instr_read_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.InstrTLBReadMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -774,7 +775,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_ll_read_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.LastLevelReadHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -782,7 +783,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_ll_read_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.LastLevelReadMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -790,7 +791,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_ll_write_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.LastLevelWriteHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -798,7 +799,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_ll_write_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.LastLevelWriteMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -806,7 +807,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_bpu_read_hits_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.BPUReadHit), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -814,7 +815,7 @@ func (c *perfCollector) updateCacheStats(ch chan<- prometheus.Metric) error {
|
|
|
|
|
ch <- prometheus.MustNewConstMetric( |
|
|
|
|
c.desc["cache_bpu_read_misses_total"], |
|
|
|
|
prometheus.CounterValue, float64(*cacheProfile.BPUReadMiss), |
|
|
|
|
cpuStr, |
|
|
|
|
cpuid, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|