diff --git a/internal/metrics/metrics.go b/internal/metrics/metrics.go index 80a9af3..b964c80 100644 --- a/internal/metrics/metrics.go +++ b/internal/metrics/metrics.go @@ -888,21 +888,22 @@ func uidName(uid string) string { // ProcTable is the Processes tab payload. type ProcTable struct { - T int64 `json:"t"` - CPU float64 `json:"cpu"` - Cores []float64 `json:"cores"` - CPUHist []float64 `json:"cpu_hist"` // recent total-CPU samples, oldest first - CPUModel string `json:"cpu_model,omitempty"` - CPUMHz float64 `json:"cpu_mhz,omitempty"` - CPUTemp float64 `json:"cpu_temp,omitempty"` - Load [3]float64 `json:"load"` - Mem Mem `json:"mem"` - Swap Mem `json:"swap"` - Net []Net `json:"net"` - Uptime float64 `json:"uptime"` - Procs []Proc `json:"procs"` - Total int `json:"total"` - Running int `json:"running"` + T int64 `json:"t"` + CPU float64 `json:"cpu"` + Cores []float64 `json:"cores"` + CPUHist []float64 `json:"cpu_hist"` // recent total-CPU samples, oldest first + CPUModel string `json:"cpu_model,omitempty"` + CPUMHz float64 `json:"cpu_mhz,omitempty"` + CPUMaxMHz float64 `json:"cpu_max_mhz,omitempty"` + CPUTemp float64 `json:"cpu_temp,omitempty"` + Load [3]float64 `json:"load"` + Mem Mem `json:"mem"` + Swap Mem `json:"swap"` + Net []Net `json:"net"` + Uptime float64 `json:"uptime"` + Procs []Proc `json:"procs"` + Total int `json:"total"` + Running int `json:"running"` } var cpuModel = func() string { @@ -916,6 +917,13 @@ var cpuModel = func() string { return "" }() +var cpuMaxMHz = func() float64 { + if v, ok := readInt("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq"); ok { + return float64(v) / 1000 + } + return 0 +}() + func cpuMHz() float64 { var sum float64 n := 0 @@ -1055,7 +1063,7 @@ func (c *Collector) Processes() ProcTable { return procs[i].RSS > procs[j].RSS }) t := ProcTable{T: now.UnixMilli(), Procs: procs, Total: len(procs), Uptime: uptime(), Load: loadavg(), - CPUModel: cpuModel, CPUMHz: round1(cpuMHz()), CPUHist: []float64{}, Net: []Net{}} + CPUModel: cpuModel, CPUMHz: round1(cpuMHz()), CPUMaxMHz: cpuMaxMHz, CPUHist: []float64{}, Net: []Net{}} for _, p := range procs { if p.State == "R" { t.Running++ diff --git a/web/src/Procs.tsx b/web/src/Procs.tsx index 5c4236f..30fae14 100644 --- a/web/src/Procs.tsx +++ b/web/src/Procs.tsx @@ -86,7 +86,7 @@ export default function Procs() { return (