...

Package cpu

import "github.com/shirou/gopsutil/cpu"
Overview
Index

Overview ▾

Variables

var ClocksPerSec = float64(100)

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)

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

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.

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"`
}

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

func (c TimesStat) Total() float64

Total returns the total number of seconds in a CPUTimesStat