123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- package gosigar
- import (
- "time"
- )
- type ErrNotImplemented struct {
- OS string
- }
- func (e ErrNotImplemented) Error() string {
- return "not implemented on " + e.OS
- }
- func IsNotImplemented(err error) bool {
- switch err.(type) {
- case ErrNotImplemented, *ErrNotImplemented:
- return true
- default:
- return false
- }
- }
- type Sigar interface {
- CollectCpuStats(collectionInterval time.Duration) (<-chan Cpu, chan<- struct{})
- GetLoadAverage() (LoadAverage, error)
- GetMem() (Mem, error)
- GetSwap() (Swap, error)
- GetHugeTLBPages(HugeTLBPages, error)
- GetFileSystemUsage(string) (FileSystemUsage, error)
- GetFDUsage() (FDUsage, error)
- GetRusage(who int) (Rusage, error)
- }
- type Cpu struct {
- User uint64
- Nice uint64
- Sys uint64
- Idle uint64
- Wait uint64
- Irq uint64
- SoftIrq uint64
- Stolen uint64
- }
- func (cpu *Cpu) Total() uint64 {
- return cpu.User + cpu.Nice + cpu.Sys + cpu.Idle +
- cpu.Wait + cpu.Irq + cpu.SoftIrq + cpu.Stolen
- }
- func (cpu Cpu) Delta(other Cpu) Cpu {
- return Cpu{
- User: cpu.User - other.User,
- Nice: cpu.Nice - other.Nice,
- Sys: cpu.Sys - other.Sys,
- Idle: cpu.Idle - other.Idle,
- Wait: cpu.Wait - other.Wait,
- Irq: cpu.Irq - other.Irq,
- SoftIrq: cpu.SoftIrq - other.SoftIrq,
- Stolen: cpu.Stolen - other.Stolen,
- }
- }
- type LoadAverage struct {
- One, Five, Fifteen float64
- }
- type Uptime struct {
- Length float64
- }
- type Mem struct {
- Total uint64
- Used uint64
- Free uint64
- ActualFree uint64
- ActualUsed uint64
- }
- type Swap struct {
- Total uint64
- Used uint64
- Free uint64
- }
- type HugeTLBPages struct {
- Total uint64
- Free uint64
- Reserved uint64
- Surplus uint64
- DefaultSize uint64
- TotalAllocatedSize uint64
- }
- type CpuList struct {
- List []Cpu
- }
- type FDUsage struct {
- Open uint64
- Unused uint64
- Max uint64
- }
- type FileSystem struct {
- DirName string
- DevName string
- TypeName string
- SysTypeName string
- Options string
- Flags uint32
- }
- type FileSystemList struct {
- List []FileSystem
- }
- type FileSystemUsage struct {
- Total uint64
- Used uint64
- Free uint64
- Avail uint64
- Files uint64
- FreeFiles uint64
- }
- type ProcList struct {
- List []int
- }
- type RunState byte
- const (
- RunStateSleep = 'S'
- RunStateRun = 'R'
- RunStateStop = 'T'
- RunStateZombie = 'Z'
- RunStateIdle = 'D'
- RunStateUnknown = '?'
- )
- type ProcState struct {
- Name string
- Username string
- State RunState
- Ppid int
- Pgid int
- Tty int
- Priority int
- Nice int
- Processor int
- }
- type ProcMem struct {
- Size uint64
- Resident uint64
- Share uint64
- MinorFaults uint64
- MajorFaults uint64
- PageFaults uint64
- }
- type ProcTime struct {
- StartTime uint64
- User uint64
- Sys uint64
- Total uint64
- }
- type ProcArgs struct {
- List []string
- }
- type ProcEnv struct {
- Vars map[string]string
- }
- type ProcExe struct {
- Name string
- Cwd string
- Root string
- }
- type ProcFDUsage struct {
- Open uint64
- SoftLimit uint64
- HardLimit uint64
- }
- type Rusage struct {
- Utime time.Duration
- Stime time.Duration
- Maxrss int64
- Ixrss int64
- Idrss int64
- Isrss int64
- Minflt int64
- Majflt int64
- Nswap int64
- Inblock int64
- Oublock int64
- Msgsnd int64
- Msgrcv int64
- Nsignals int64
- Nvcsw int64
- Nivcsw int64
- }
|