mirror of
https://github.com/prometheus/node_exporter.git
synced 2024-11-09 23:24:09 -08:00
Only report core throttles per core, not per cpu (#836)
* Only report core throttles per core, not per cpu * Add topology/core_id to the cpu sysfs fixtures * Add new cpu fixtures to ttar file * Merge core_id reading and thermal throttle accounting * Declare core_id
This commit is contained in:
parent
79ae03c4c7
commit
c504c7e264
|
@ -21,6 +21,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/prometheus/client_golang/prometheus"
|
"github.com/prometheus/client_golang/prometheus"
|
||||||
|
@ -70,11 +71,10 @@ func NewCPUCollector() (Collector, error) {
|
||||||
"Maximum cpu thread frequency in hertz.",
|
"Maximum cpu thread frequency in hertz.",
|
||||||
[]string{"cpu"}, nil,
|
[]string{"cpu"}, nil,
|
||||||
),
|
),
|
||||||
// FIXME: This should be a per core metric, not per cpu!
|
|
||||||
cpuCoreThrottle: prometheus.NewDesc(
|
cpuCoreThrottle: prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "core_throttles_total"),
|
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "core_throttles_total"),
|
||||||
"Number of times this cpu core has been throttled.",
|
"Number of times this cpu core has been throttled.",
|
||||||
[]string{"cpu"}, nil,
|
[]string{"core"}, nil,
|
||||||
),
|
),
|
||||||
cpuPackageThrottle: prometheus.NewDesc(
|
cpuPackageThrottle: prometheus.NewDesc(
|
||||||
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "package_throttles_total"),
|
prometheus.BuildFQName(namespace, cpuCollectorSubsystem, "package_throttles_total"),
|
||||||
|
@ -104,6 +104,8 @@ func (c *cpuCollector) updateCPUfreq(ch chan<- prometheus.Metric) error {
|
||||||
|
|
||||||
var value uint64
|
var value uint64
|
||||||
|
|
||||||
|
cpu_core_throttles := make(map[int]uint64)
|
||||||
|
|
||||||
// cpu loop
|
// cpu loop
|
||||||
for _, cpu := range cpus {
|
for _, cpu := range cpus {
|
||||||
_, cpuName := filepath.Split(cpu)
|
_, cpuName := filepath.Split(cpu)
|
||||||
|
@ -134,10 +136,21 @@ func (c *cpuCollector) updateCPUfreq(ch chan<- prometheus.Metric) error {
|
||||||
log.Debugf("CPU %v is missing thermal_throttle", cpu)
|
log.Debugf("CPU %v is missing thermal_throttle", cpu)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if value, err = readUintFromFile(filepath.Join(cpu, "thermal_throttle", "core_throttle_count")); err != nil {
|
|
||||||
return err
|
if value, err := readUintFromFile(filepath.Join(cpu, "topology/core_id")); err != nil {
|
||||||
|
log.Debugf("CPU %v is misssing topology/core_id", cpu)
|
||||||
|
} else {
|
||||||
|
core_id := int(value)
|
||||||
|
if value, err = readUintFromFile(filepath.Join(cpu, "thermal_throttle", "core_throttle_count")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cpu_core_throttles[core_id] = value
|
||||||
}
|
}
|
||||||
ch <- prometheus.MustNewConstMetric(c.cpuCoreThrottle, prometheus.CounterValue, float64(value), cpuNum)
|
}
|
||||||
|
|
||||||
|
// core throttles
|
||||||
|
for core_id, value := range cpu_core_throttles {
|
||||||
|
ch <- prometheus.MustNewConstMetric(c.cpuCoreThrottle, prometheus.CounterValue, float64(value), strconv.Itoa(core_id))
|
||||||
}
|
}
|
||||||
|
|
||||||
nodes, err := filepath.Glob(sysFilePath("bus/node/devices/node[0-9]*"))
|
nodes, err := filepath.Glob(sysFilePath("bus/node/devices/node[0-9]*"))
|
||||||
|
|
|
@ -180,9 +180,8 @@ node_buddyinfo_blocks{node="0",size="9",zone="Normal"} 0
|
||||||
node_context_switches_total 3.8014093e+07
|
node_context_switches_total 3.8014093e+07
|
||||||
# HELP node_cpu_core_throttles_total Number of times this cpu core has been throttled.
|
# HELP node_cpu_core_throttles_total Number of times this cpu core has been throttled.
|
||||||
# TYPE node_cpu_core_throttles_total counter
|
# TYPE node_cpu_core_throttles_total counter
|
||||||
node_cpu_core_throttles_total{cpu="0"} 5
|
node_cpu_core_throttles_total{core="0"} 5
|
||||||
node_cpu_core_throttles_total{cpu="1"} 0
|
node_cpu_core_throttles_total{core="1"} 0
|
||||||
node_cpu_core_throttles_total{cpu="2"} 40
|
|
||||||
# HELP node_cpu_frequency_hertz Current cpu thread frequency in hertz.
|
# HELP node_cpu_frequency_hertz Current cpu thread frequency in hertz.
|
||||||
# TYPE node_cpu_frequency_hertz gauge
|
# TYPE node_cpu_frequency_hertz gauge
|
||||||
node_cpu_frequency_hertz{cpu="0"} 1.699981e+09
|
node_cpu_frequency_hertz{cpu="0"} 1.699981e+09
|
||||||
|
|
|
@ -45,6 +45,14 @@ Lines: 1
|
||||||
30
|
30
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: sys/bus/cpu/devices/cpu0/topology
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/bus/cpu/devices/cpu0/topology/core_id
|
||||||
|
Lines: 1
|
||||||
|
0
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: sys/bus/cpu/devices/cpu1
|
Directory: sys/bus/cpu/devices/cpu1
|
||||||
Mode: 755
|
Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -79,6 +87,14 @@ Lines: 1
|
||||||
30
|
30
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: sys/bus/cpu/devices/cpu1/topology
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/bus/cpu/devices/cpu1/topology/core_id
|
||||||
|
Lines: 1
|
||||||
|
1
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: sys/bus/cpu/devices/cpu2
|
Directory: sys/bus/cpu/devices/cpu2
|
||||||
Mode: 755
|
Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -87,7 +103,7 @@ Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Path: sys/bus/cpu/devices/cpu2/thermal_throttle/core_throttle_count
|
Path: sys/bus/cpu/devices/cpu2/thermal_throttle/core_throttle_count
|
||||||
Lines: 1
|
Lines: 1
|
||||||
40
|
5
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Path: sys/bus/cpu/devices/cpu2/thermal_throttle/package_throttle_count
|
Path: sys/bus/cpu/devices/cpu2/thermal_throttle/package_throttle_count
|
||||||
|
@ -95,6 +111,14 @@ Lines: 1
|
||||||
6
|
6
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: sys/bus/cpu/devices/cpu2/topology
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/bus/cpu/devices/cpu2/topology/core_id
|
||||||
|
Lines: 1
|
||||||
|
0
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: sys/bus/cpu/devices/cpu3
|
Directory: sys/bus/cpu/devices/cpu3
|
||||||
Mode: 755
|
Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -116,6 +140,14 @@ Lines: 1
|
||||||
1000
|
1000
|
||||||
Mode: 644
|
Mode: 644
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Directory: sys/bus/cpu/devices/cpu3/topology
|
||||||
|
Mode: 755
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
Path: sys/bus/cpu/devices/cpu3/topology/core_id
|
||||||
|
Lines: 1
|
||||||
|
1
|
||||||
|
Mode: 644
|
||||||
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
Directory: sys/bus/node
|
Directory: sys/bus/node
|
||||||
Mode: 755
|
Mode: 755
|
||||||
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
# ttar - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
Loading…
Reference in a new issue