only publish metrics for isolated cpus

Signed-off-by: david <davidventura27@gmail.com>
This commit is contained in:
david 2021-12-16 13:20:20 +01:00 committed by DavidVentura
parent 698670bb6e
commit 9ea9a5f029
2 changed files with 4 additions and 30 deletions

View file

@ -299,34 +299,11 @@ func (c *cpuCollector) updateThermalThrottle(ch chan<- prometheus.Metric) error
return nil
}
func contains(s []uint16, e uint16) bool {
for _, a := range s {
if a == e {
return true
}
}
return false
}
// updateStat reads /proc/stat through procfs and exports CPU-related metrics.
func (c *cpuCollector) updateIsolated(ch chan<- prometheus.Metric) error {
stats, err := c.fs.Stat()
if err != nil {
return err
}
c.updateCPUStats(stats.CPU)
// Acquire a lock to read the stats.
c.cpuStatsMutex.Lock()
defer c.cpuStatsMutex.Unlock()
for cpuID, _ := range c.cpuStats {
cpuNum := strconv.Itoa(cpuID)
isIsolated := 0.0
if contains(c.isolatedCpus, uint16(cpuID)) {
isIsolated = 1.0
}
ch <- prometheus.MustNewConstMetric(c.cpuIsolated, prometheus.GaugeValue, isIsolated, cpuNum)
for _, cpu := range c.isolatedCpus {
cpuNum := strconv.Itoa(int(cpu))
ch <- prometheus.MustNewConstMetric(c.cpuIsolated, prometheus.GaugeValue, 1.0, cpuNum)
}
return nil

View file

@ -321,14 +321,11 @@ node_cpu_info{cachesize="8192 KB",core="3",cpu="3",family="6",microcode="0xb4",m
node_cpu_info{cachesize="8192 KB",core="3",cpu="7",family="6",microcode="0xb4",model="142",model_name="Intel(R) Core(TM) i7-8650U CPU @ 1.90GHz",package="0",stepping="10",vendor="GenuineIntel"} 1
# HELP node_cpu_isolated Whether each core is isolated, information from /sys/devices/system/cpu/isolated.
# TYPE node_cpu_isolated gauge
node_cpu_isolated{cpu="0"} 0
node_cpu_isolated{cpu="1"} 1
node_cpu_isolated{cpu="2"} 0
node_cpu_isolated{cpu="3"} 1
node_cpu_isolated{cpu="4"} 1
node_cpu_isolated{cpu="5"} 1
node_cpu_isolated{cpu="6"} 0
node_cpu_isolated{cpu="7"} 0
node_cpu_isolated{cpu="9"} 1
# HELP node_cpu_package_throttles_total Number of times this CPU package has been throttled.
# TYPE node_cpu_package_throttles_total counter
node_cpu_package_throttles_total{package="0"} 30