diff --git a/agent/main.go b/agent/main.go index c4309c7..df5a8f7 100644 --- a/agent/main.go +++ b/agent/main.go @@ -245,17 +245,15 @@ func collectMetrics() (*Metricas, error) { m.TCPConns = len(conns) } - // Top 10 procesos por CPU (luego por RAM como desempate) + // Top 10 procesos por RAM (CPUPercent por proceso es muy costoso en sistemas con muchos contenedores) if procs, err := process.Processes(); err == nil { type pd struct { pid int32 name string - cpu float64 ramMB float64 } var lista []pd for _, p := range procs { - cpuPct, _ := p.CPUPercent() name, _ := p.Name() if name == "" { continue @@ -264,12 +262,12 @@ func collectMetrics() (*Metricas, error) { if mi, err := p.MemoryInfo(); err == nil && mi != nil { ramMB = round2(float64(mi.RSS) / (1024 * 1024)) } - lista = append(lista, pd{p.Pid, name, round2(cpuPct), ramMB}) + if ramMB < 1 { + continue + } + lista = append(lista, pd{p.Pid, name, ramMB}) } sort.Slice(lista, func(i, j int) bool { - if lista[i].cpu != lista[j].cpu { - return lista[i].cpu > lista[j].cpu - } return lista[i].ramMB > lista[j].ramMB }) limit := 10 @@ -277,7 +275,7 @@ func collectMetrics() (*Metricas, error) { limit = len(lista) } for _, d := range lista[:limit] { - m.TopProcs = append(m.TopProcs, ProcesoInfo{d.pid, d.name, d.cpu, d.ramMB}) + m.TopProcs = append(m.TopProcs, ProcesoInfo{d.pid, d.name, 0, d.ramMB}) } } diff --git a/resources/views/servidor_dashboard.html b/resources/views/servidor_dashboard.html index a362114..a1deb35 100644 --- a/resources/views/servidor_dashboard.html +++ b/resources/views/servidor_dashboard.html @@ -155,24 +155,20 @@
| Proceso | -CPU% | RAM | ||
|---|---|---|---|---|
| - | - | + | + |