Package procfs
Overview ▹
Index ▹
Constants
DefaultMountPoint is the common mount point of the proc filesystem.
const DefaultMountPoint = "/proc"
func NewBuddyInfo ¶
func NewBuddyInfo() ([]BuddyInfo, error)
NewBuddyInfo reads the buddyinfo statistics.
func NewIPVSBackendStatus ¶
func NewIPVSBackendStatus() ([]IPVSBackendStatus, error)
NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs.
type BuddyInfo ¶
A BuddyInfo is the details parsed from /proc/buddyinfo. The data is comprised of an array of free fragments of each size. The sizes are 2^n*PAGE_SIZE, where n is the array index.
type BuddyInfo struct { Node string Zone string Sizes []float64 }
type CPUStat ¶
CPUStat shows how much time the cpu spend in various stages.
type CPUStat struct { User float64 Nice float64 System float64 Idle float64 Iowait float64 IRQ float64 SoftIRQ float64 Steal float64 Guest float64 GuestNice float64 }
type FS ¶
FS represents the pseudo-filesystem proc, which provides an interface to kernel data structures.
type FS string
func NewFS ¶
func NewFS(mountPoint string) (FS, error)
NewFS returns a new FS mounted under the given mountPoint. It will error if the mount point can't be read.
func (FS) AllProcs ¶
func (fs FS) AllProcs() (Procs, error)
AllProcs returns a list of all currently available processes.
func (FS) NewBuddyInfo ¶
func (fs FS) NewBuddyInfo() ([]BuddyInfo, error)
NewBuddyInfo reads the buddyinfo statistics from the specified `proc` filesystem.
func (FS) NewIPVSBackendStatus ¶
func (fs FS) NewIPVSBackendStatus() ([]IPVSBackendStatus, error)
NewIPVSBackendStatus reads and returns the status of all (virtual,real) server pairs from the specified `proc` filesystem.
func (FS) NewIPVSStats ¶
func (fs FS) NewIPVSStats() (IPVSStats, error)
NewIPVSStats reads the IPVS statistics from the specified `proc` filesystem.
func (FS) NewProc ¶
func (fs FS) NewProc(pid int) (Proc, error)
NewProc returns a process for the given pid.
func (FS) NewStat ¶
func (fs FS) NewStat() (Stat, error)
NewStat returns an information about current kernel/system statistics.
func (FS) NewXfrmStat ¶
func (fs FS) NewXfrmStat() (XfrmStat, error)
NewXfrmStat reads the xfrm_stat statistics from the 'proc' filesystem.
func (FS) ParseMDStat ¶
func (fs FS) ParseMDStat() (mdstates []MDStat, err error)
ParseMDStat parses an mdstat-file and returns a struct with the relevant infos.
func (FS) Path ¶
func (fs FS) Path(p ...string) string
Path returns the path of the given subsystem relative to the procfs root.
func (FS) Self ¶
func (fs FS) Self() (Proc, error)
Self returns a process for the current process.
func (FS) XFSStats ¶
func (fs FS) XFSStats() (*xfs.Stats, error)
XFSStats retrieves XFS filesystem runtime statistics.
type IPVSBackendStatus ¶
IPVSBackendStatus holds current metrics of one virtual / real address pair.
type IPVSBackendStatus struct { // The local (virtual) IP address. LocalAddress net.IP // The local (virtual) port. LocalPort uint16 // The local firewall mark LocalMark string // The transport protocol (TCP, UDP). Proto string // The remote (real) IP address. RemoteAddress net.IP // The remote (real) port. RemotePort uint16 // The current number of active connections for this virtual/real address pair. ActiveConn uint64 // The current number of inactive connections for this virtual/real address pair. InactConn uint64 // The current weight of this virtual/real address pair. Weight uint64 }
type IPVSStats ¶
IPVSStats holds IPVS statistics, as exposed by the kernel in `/proc/net/ip_vs_stats`.
type IPVSStats struct { // Total count of connections. Connections uint64 // Total incoming packages processed. IncomingPackets uint64 // Total outgoing packages processed. OutgoingPackets uint64 // Total incoming traffic. IncomingBytes uint64 // Total outgoing traffic. OutgoingBytes uint64 }
func NewIPVSStats ¶
func NewIPVSStats() (IPVSStats, error)
NewIPVSStats reads the IPVS statistics.
type MDStat ¶
MDStat holds info parsed from /proc/mdstat.
type MDStat struct { // Name of the device. Name string // activity-state of the device. ActivityState string // Number of active disks. DisksActive int64 // Total number of disks the device consists of. DisksTotal int64 // Number of blocks the device holds. BlocksTotal int64 // Number of blocks on the device that are in sync. BlocksSynced int64 }
type Mount ¶
A Mount is a device mount parsed from /proc/[pid]/mountstats.
type Mount struct { // Name of the device. Device string // The mount point of the device. Mount string // The filesystem type used by the device. Type string // If available additional statistics related to this Mount. // Use a type assertion to determine if additional statistics are available. Stats MountStats }
type MountStats ¶
A MountStats is a type which contains detailed statistics for a specific type of Mount.
type MountStats interface {
// contains filtered or unexported methods
}
type MountStatsNFS ¶
A MountStatsNFS is a MountStats implementation for NFSv3 and v4 mounts.
type MountStatsNFS struct { // The version of statistics provided. StatVersion string // The age of the NFS mount. Age time.Duration // Statistics related to byte counters for various operations. Bytes NFSBytesStats // Statistics related to various NFS event occurrences. Events NFSEventsStats // Statistics broken down by filesystem operation. Operations []NFSOperationStats // Statistics about the NFS RPC transport. Transport NFSTransportStats }
type NFSBytesStats ¶
A NFSBytesStats contains statistics about the number of bytes read and written by an NFS client to and from an NFS server.
type NFSBytesStats struct { // Number of bytes read using the read() syscall. Read uint64 // Number of bytes written using the write() syscall. Write uint64 // Number of bytes read using the read() syscall in O_DIRECT mode. DirectRead uint64 // Number of bytes written using the write() syscall in O_DIRECT mode. DirectWrite uint64 // Number of bytes read from the NFS server, in total. ReadTotal uint64 // Number of bytes written to the NFS server, in total. WriteTotal uint64 // Number of pages read directly via mmap()'d files. ReadPages uint64 // Number of pages written directly via mmap()'d files. WritePages uint64 }
type NFSEventsStats ¶
A NFSEventsStats contains statistics about NFS event occurrences.
type NFSEventsStats struct { // Number of times cached inode attributes are re-validated from the server. InodeRevalidate uint64 // Number of times cached dentry nodes are re-validated from the server. DnodeRevalidate uint64 // Number of times an inode cache is cleared. DataInvalidate uint64 // Number of times cached inode attributes are invalidated. AttributeInvalidate uint64 // Number of times files or directories have been open()'d. VFSOpen uint64 // Number of times a directory lookup has occurred. VFSLookup uint64 // Number of times permissions have been checked. VFSAccess uint64 // Number of updates (and potential writes) to pages. VFSUpdatePage uint64 // Number of pages read directly via mmap()'d files. VFSReadPage uint64 // Number of times a group of pages have been read. VFSReadPages uint64 // Number of pages written directly via mmap()'d files. VFSWritePage uint64 // Number of times a group of pages have been written. VFSWritePages uint64 // Number of times directory entries have been read with getdents(). VFSGetdents uint64 // Number of times attributes have been set on inodes. VFSSetattr uint64 // Number of pending writes that have been forcefully flushed to the server. VFSFlush uint64 // Number of times fsync() has been called on directories and files. VFSFsync uint64 // Number of times locking has been attempted on a file. VFSLock uint64 // Number of times files have been closed and released. VFSFileRelease uint64 // Unknown. Possibly unused. CongestionWait uint64 // Number of times files have been truncated. Truncation uint64 // Number of times a file has been grown due to writes beyond its existing end. WriteExtension uint64 // Number of times a file was removed while still open by another process. SillyRename uint64 // Number of times the NFS server gave less data than expected while reading. ShortRead uint64 // Number of times the NFS server wrote less data than expected while writing. ShortWrite uint64 // Number of times the NFS server indicated EJUKEBOX; retrieving data from // offline storage. JukeboxDelay uint64 // Number of NFS v4.1+ pNFS reads. PNFSRead uint64 // Number of NFS v4.1+ pNFS writes. PNFSWrite uint64 }
type NFSOperationStats ¶
A NFSOperationStats contains statistics for a single operation.
type NFSOperationStats struct { // The name of the operation. Operation string // Number of requests performed for this operation. Requests uint64 // Number of times an actual RPC request has been transmitted for this operation. Transmissions uint64 // Number of times a request has had a major timeout. MajorTimeouts uint64 // Number of bytes sent for this operation, including RPC headers and payload. BytesSent uint64 // Number of bytes received for this operation, including RPC headers and payload. BytesReceived uint64 // Duration all requests spent queued for transmission before they were sent. CumulativeQueueTime time.Duration // Duration it took to get a reply back after the request was transmitted. CumulativeTotalResponseTime time.Duration // Duration from when a request was enqueued to when it was completely handled. CumulativeTotalRequestTime time.Duration }
type NFSTransportStats ¶
A NFSTransportStats contains statistics for the NFS mount RPC requests and responses.
type NFSTransportStats struct { // The local port used for the NFS mount. Port uint64 // Number of times the client has had to establish a connection from scratch // to the NFS server. Bind uint64 // Number of times the client has made a TCP connection to the NFS server. Connect uint64 // Duration (in jiffies, a kernel internal unit of time) the NFS mount has // spent waiting for connections to the server to be established. ConnectIdleTime uint64 // Duration since the NFS mount last saw any RPC traffic. IdleTime time.Duration // Number of RPC requests for this mount sent to the NFS server. Sends uint64 // Number of RPC responses for this mount received from the NFS server. Receives uint64 // Number of times the NFS server sent a response with a transaction ID // unknown to this client. BadTransactionIDs uint64 // A running counter, incremented on each request as the current difference // ebetween sends and receives. CumulativeActiveRequests uint64 // A running counter, incremented on each request by the current backlog // queue size. CumulativeBacklog uint64 // Maximum number of simultaneously active RPC requests ever used. MaximumRPCSlotsUsed uint64 // A running counter, incremented on each request as the current size of the // sending queue. CumulativeSendingQueue uint64 // A running counter, incremented on each request as the current size of the // pending queue. CumulativePendingQueue uint64 }
type Proc ¶
Proc provides information about a running process.
type Proc struct { // The process ID. PID int // contains filtered or unexported fields }
func NewProc ¶
func NewProc(pid int) (Proc, error)
NewProc returns a process for the given pid under /proc.
func Self ¶
func Self() (Proc, error)
Self returns a process for the current process read via /proc/self.
func (Proc) CmdLine ¶
func (p Proc) CmdLine() ([]string, error)
CmdLine returns the command line of a process.
func (Proc) Comm ¶
func (p Proc) Comm() (string, error)
Comm returns the command name of a process.
func (Proc) Executable ¶
func (p Proc) Executable() (string, error)
Executable returns the absolute path of the executable command of a process.
func (Proc) FileDescriptorTargets ¶
func (p Proc) FileDescriptorTargets() ([]string, error)
FileDescriptorTargets returns the targets of all file descriptors of a process. If a file descriptor is not a symlink to a file (like a socket), that value will be the empty string.
func (Proc) FileDescriptors ¶
func (p Proc) FileDescriptors() ([]uintptr, error)
FileDescriptors returns the currently open file descriptors of a process.
func (Proc) FileDescriptorsLen ¶
func (p Proc) FileDescriptorsLen() (int, error)
FileDescriptorsLen returns the number of currently open file descriptors of a process.
func (Proc) MountStats ¶
func (p Proc) MountStats() ([]*Mount, error)
MountStats retrieves statistics and configuration for mount points in a process's namespace.
func (Proc) NewIO ¶
func (p Proc) NewIO() (ProcIO, error)
NewIO creates a new ProcIO instance from a given Proc instance.
func (Proc) NewLimits ¶
func (p Proc) NewLimits() (ProcLimits, error)
NewLimits returns the current soft limits of the process.
func (Proc) NewStat ¶
func (p Proc) NewStat() (ProcStat, error)
NewStat returns the current status information of the process.
type ProcIO ¶
ProcIO models the content of /proc/<pid>/io.
type ProcIO struct { // Chars read. RChar uint64 // Chars written. WChar uint64 // Read syscalls. SyscR uint64 // Write syscalls. SyscW uint64 // Bytes read. ReadBytes uint64 // Bytes written. WriteBytes uint64 // Bytes written, but taking into account truncation. See // Documentation/filesystems/proc.txt in the kernel sources for // detailed explanation. CancelledWriteBytes int64 }
type ProcLimits ¶
ProcLimits represents the soft limits for each of the process's resource limits. For more information see getrlimit(2): http://man7.org/linux/man-pages/man2/getrlimit.2.html.
type ProcLimits struct { // CPU time limit in seconds. CPUTime int // Maximum size of files that the process may create. FileSize int // Maximum size of the process's data segment (initialized data, // uninitialized data, and heap). DataSize int // Maximum size of the process stack in bytes. StackSize int // Maximum size of a core file. CoreFileSize int // Limit of the process's resident set in pages. ResidentSet int // Maximum number of processes that can be created for the real user ID of // the calling process. Processes int // Value one greater than the maximum file descriptor number that can be // opened by this process. OpenFiles int // Maximum number of bytes of memory that may be locked into RAM. LockedMemory int // Maximum size of the process's virtual memory address space in bytes. AddressSpace int // Limit on the combined number of flock(2) locks and fcntl(2) leases that // this process may establish. FileLocks int // Limit of signals that may be queued for the real user ID of the calling // process. PendingSignals int // Limit on the number of bytes that can be allocated for POSIX message // queues for the real user ID of the calling process. MsqqueueSize int // Limit of the nice priority set using setpriority(2) or nice(2). NicePriority int // Limit of the real-time priority set using sched_setscheduler(2) or // sched_setparam(2). RealtimePriority int // Limit (in microseconds) on the amount of CPU time that a process // scheduled under a real-time scheduling policy may consume without making // a blocking system call. RealtimeTimeout int }
type ProcStat ¶
ProcStat provides status information about the process, read from /proc/[pid]/stat.
type ProcStat struct { // The process ID. PID int // The filename of the executable. Comm string // The process state. State string // The PID of the parent of this process. PPID int // The process group ID of the process. PGRP int // The session ID of the process. Session int // The controlling terminal of the process. TTY int // The ID of the foreground process group of the controlling terminal of // the process. TPGID int // The kernel flags word of the process. Flags uint // The number of minor faults the process has made which have not required // loading a memory page from disk. MinFlt uint // The number of minor faults that the process's waited-for children have // made. CMinFlt uint // The number of major faults the process has made which have required // loading a memory page from disk. MajFlt uint // The number of major faults that the process's waited-for children have // made. CMajFlt uint // Amount of time that this process has been scheduled in user mode, // measured in clock ticks. UTime uint // Amount of time that this process has been scheduled in kernel mode, // measured in clock ticks. STime uint // Amount of time that this process's waited-for children have been // scheduled in user mode, measured in clock ticks. CUTime uint // Amount of time that this process's waited-for children have been // scheduled in kernel mode, measured in clock ticks. CSTime uint // For processes running a real-time scheduling policy, this is the negated // scheduling priority, minus one. Priority int // The nice value, a value in the range 19 (low priority) to -20 (high // priority). Nice int // Number of threads in this process. NumThreads int // The time the process started after system boot, the value is expressed // in clock ticks. Starttime uint64 // Virtual memory size in bytes. VSize int // Resident set size in pages. RSS int // contains filtered or unexported fields }
func (ProcStat) CPUTime ¶
func (s ProcStat) CPUTime() float64
CPUTime returns the total CPU user and system time in seconds.
func (ProcStat) ResidentMemory ¶
func (s ProcStat) ResidentMemory() int
ResidentMemory returns the resident memory size in bytes.
func (ProcStat) StartTime ¶
func (s ProcStat) StartTime() (float64, error)
StartTime returns the unix timestamp of the process in seconds.
func (ProcStat) VirtualMemory ¶
func (s ProcStat) VirtualMemory() int
VirtualMemory returns the virtual memory size in bytes.
type Procs ¶
Procs represents a list of Proc structs.
type Procs []Proc
func AllProcs ¶
func AllProcs() (Procs, error)
AllProcs returns a list of all currently available processes under /proc.
func (Procs) Len ¶
func (p Procs) Len() int
func (Procs) Less ¶
func (p Procs) Less(i, j int) bool
func (Procs) Swap ¶
func (p Procs) Swap(i, j int)
type SoftIRQStat ¶
SoftIRQStat represent the softirq statistics as exported in the procfs stat file. A nice introduction can be found at https://0xax.gitbooks.io/linux-insides/content/interrupts/interrupts-9.html It is possible to get per-cpu stats by reading /proc/softirqs
type SoftIRQStat struct { Hi uint64 Timer uint64 NetTx uint64 NetRx uint64 Block uint64 BlockIoPoll uint64 Tasklet uint64 Sched uint64 Hrtimer uint64 Rcu uint64 }
type Stat ¶
Stat represents kernel/system statistics.
type Stat struct { // Boot time in seconds since the Epoch. BootTime uint64 // Summed up cpu statistics. CPUTotal CPUStat // Per-CPU statistics. CPU []CPUStat // Number of times interrupts were handled, which contains numbered and unnumbered IRQs. IRQTotal uint64 // Number of times a numbered IRQ was triggered. IRQ []uint64 // Number of times a context switch happened. ContextSwitches uint64 // Number of times a process was created. ProcessCreated uint64 // Number of processes currently running. ProcessesRunning uint64 // Number of processes currently blocked (waiting for IO). ProcessesBlocked uint64 // Number of times a softirq was scheduled. SoftIRQTotal uint64 // Detailed softirq statistics. SoftIRQ SoftIRQStat }
func NewStat ¶
func NewStat() (Stat, error)
NewStat returns kernel/system statistics read from /proc/stat.
type XfrmStat ¶
XfrmStat models the contents of /proc/net/xfrm_stat.
type XfrmStat struct { // All errors which are not matched by other XfrmInError int // No buffer is left XfrmInBufferError int // Header Error XfrmInHdrError int // No state found // i.e. either inbound SPI, address, or IPSEC protocol at SA is wrong XfrmInNoStates int // Transformation protocol specific error // e.g. SA Key is wrong XfrmInStateProtoError int // Transformation mode specific error XfrmInStateModeError int // Sequence error // e.g. sequence number is out of window XfrmInStateSeqError int // State is expired XfrmInStateExpired int // State has mismatch option // e.g. UDP encapsulation type is mismatched XfrmInStateMismatch int // State is invalid XfrmInStateInvalid int // No matching template for states // e.g. Inbound SAs are correct but SP rule is wrong XfrmInTmplMismatch int // No policy is found for states // e.g. Inbound SAs are correct but no SP is found XfrmInNoPols int // Policy discards XfrmInPolBlock int // Policy error XfrmInPolError int // All errors which are not matched by others XfrmOutError int // Bundle generation error XfrmOutBundleGenError int // Bundle check error XfrmOutBundleCheckError int // No state was found XfrmOutNoStates int // Transformation protocol specific error XfrmOutStateProtoError int // Transportation mode specific error XfrmOutStateModeError int // Sequence error // i.e sequence number overflow XfrmOutStateSeqError int // State is expired XfrmOutStateExpired int // Policy discads XfrmOutPolBlock int // Policy is dead XfrmOutPolDead int // Policy Error XfrmOutPolError int XfrmFwdHdrError int XfrmOutStateInvalid int XfrmAcquireError int }
func NewXfrmStat ¶
func NewXfrmStat() (XfrmStat, error)
NewXfrmStat reads the xfrm_stat statistics.