cpu

package
v4.26.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2026 License: BSD-3-Clause Imports: 16 Imported by: 527

Documentation

Overview

SPDX-License-Identifier: BSD-3-Clause

Index

Constants

This section is empty.

Variables

View Source
var ClocksPerSec = float64(100)

Functions

func Counts

func Counts(logical bool) (int, error)

Counts returns the number of physical or logical cores in the system

func CountsWithContext

func CountsWithContext(ctx context.Context, logical bool) (int, error)

func Percent

func Percent(interval time.Duration, percpu bool) ([]float64, error)

Percent calculates the percentage of cpu used either per CPU or combined. If an interval of 0 is given it will compare the current cpu times against the last call. Returns one value per cpu, or a single value if percpu is set to false.

func PercentWithContext

func PercentWithContext(ctx context.Context, interval time.Duration, percpu bool) ([]float64, error)

Types

type ExLinux added in v4.26.9

type ExLinux struct{}

func NewExLinux added in v4.26.9

func NewExLinux() *ExLinux

func (*ExLinux) Times added in v4.26.9

func (ex *ExLinux) Times(percpu bool) ([]ExTimesStat, error)

func (*ExLinux) TimesWithContext added in v4.26.9

func (*ExLinux) TimesWithContext(ctx context.Context, percpu bool) ([]ExTimesStat, error)

TimesWithContext returns raw CPU tick counters without floating-point conversion. CPU rows are selected and parsed like the package-level Times function; absent optional counters are zero. Unlike the legacy API, read errors and invalid selected CPU rows are returned instead of skipped.

type ExTimesStat added in v4.26.9

type ExTimesStat struct {
	CPU       string `json:"cpu"`
	User      uint64 `json:"user"`
	System    uint64 `json:"system"`
	Idle      uint64 `json:"idle"`
	Nice      uint64 `json:"nice"`
	Iowait    uint64 `json:"iowait"`
	Irq       uint64 `json:"irq"`
	Softirq   uint64 `json:"softirq"`
	Steal     uint64 `json:"steal"`
	Guest     uint64 `json:"guest"`
	GuestNice uint64 `json:"guestNice"`
}

ExTimesStat contains the unscaled Linux CPU time counters from /proc/stat. Counters are in USER_HZ ticks, rather than the seconds used by TimesStat. Divide a counter by ClocksPerSec to get seconds, or use ToTimesStat.

User includes Guest, and Nice includes GuestNice, because the kernel accounts guest time into both. Subtract Guest and GuestNice when summing all fields.

Counters are reported as read. A counter can decrease, in particular Iowait. Check that the new value is not smaller than the old one before you subtract.

func (ExTimesStat) String added in v4.26.9

func (c ExTimesStat) String() string

func (ExTimesStat) ToTimesStat added in v4.26.9

func (c ExTimesStat) ToTimesStat() TimesStat

ToTimesStat converts the counters to the seconds returned by the package-level Times function.

type InfoStat

type InfoStat struct {
	CPU        int32    `json:"cpu"`
	VendorID   string   `json:"vendorId"`
	Family     string   `json:"family"`
	Model      string   `json:"model"`
	Stepping   int32    `json:"stepping"`
	PhysicalID string   `json:"physicalId"`
	CoreID     string   `json:"coreId"`
	Cores      int32    `json:"cores"`
	ModelName  string   `json:"modelName"`
	Mhz        float64  `json:"mhz"`
	CacheSize  int32    `json:"cacheSize"`
	Flags      []string `json:"flags"`
	Microcode  string   `json:"microcode"`
}

func Info

func Info() ([]InfoStat, error)

CPUInfo on linux will return 1 item per physical thread.

CPUs have three levels of counting: sockets, cores, threads. Cores with HyperThreading count as having 2 threads per core. Sockets often come with many physical CPU cores. For example a single socket board with two cores each with HT will return 4 CPUInfoStat structs on Linux and the "Cores" field set to 1.

func InfoWithContext

func InfoWithContext(ctx context.Context) ([]InfoStat, error)

func (InfoStat) String

func (c InfoStat) String() string

type TimesStat

type TimesStat struct {
	CPU       string  `json:"cpu"`
	User      float64 `json:"user"`
	System    float64 `json:"system"`
	Idle      float64 `json:"idle"`
	Nice      float64 `json:"nice"`
	Iowait    float64 `json:"iowait"`
	Irq       float64 `json:"irq"`
	Softirq   float64 `json:"softirq"`
	Steal     float64 `json:"steal"`
	Guest     float64 `json:"guest"`
	GuestNice float64 `json:"guestNice"`
}

TimesStat contains the amounts of time the CPU has spent performing different kinds of work. Time units are in seconds. It is based on linux /proc/stat file.

func Times

func Times(percpu bool) ([]TimesStat, error)

func TimesWithContext

func TimesWithContext(ctx context.Context, percpu bool) ([]TimesStat, error)

func (TimesStat) String

func (c TimesStat) String() string

func (TimesStat) Total deprecated

func (c TimesStat) Total() float64

Deprecated: Total returns the total number of seconds in a CPUTimesStat Please do not use this internal function.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL