208 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			208 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |