• turboboost55's avatar
    metrics: improve accuracy of CPU gauges (#26793) · 544e4a70
    turboboost55 authored
    This PR changes metrics collection to actually measure the time interval between collections, rather
    than assume 3 seconds. I did some ad hoc profiling, and on slower hardware (eg, my Raspberry Pi 4)
    I routinely saw intervals between 3.3 - 3.5 seconds, with some being as high as 4.5 seconds. This
    will generally cause the CPU gauge readings to be too high, and in some cases can cause impossibly
    large values for the CPU load metrics (eg. greater than 400 for a 4 core CPU).
    
    ---------
    Co-authored-by: 's avatarFelix Lange <fjl@twurst.com>
    Unverified
    544e4a70
cpu.go 1.1 KB
// Copyright 2018 The go-ethereum Authors
// This file is part of the go-ethereum library.
//
// The go-ethereum library is free software: you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// The go-ethereum library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.

package metrics

// CPUStats is the system and process CPU stats.
// All values are in seconds.
type CPUStats struct {
	GlobalTime float64 // Time spent by the CPU working on all processes
	GlobalWait float64 // Time spent by waiting on disk for all processes
	LocalTime  float64 // Time spent by the CPU working on this process
}