pidusage

package module
v0.2.1 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2021 License: MIT Imports: 10 Imported by: 44

README

pidusage

Cross-platform process cpu % and memory usage of a PID for golang

Ideas from https://github.com/soyuka/pidusage but just use Golang

Go Report Card GoDoc

API

import (
  "os"
	"github.com/struCoder/pidusage"
)

func printStat() {
	sysInfo, err := pidusage.GetStat(os.Process.Pid)
}

How it works

A check on the runtime.GOOS is done to determine the method to use.

Linux

We use /proc/{pid}/stat in addition to the the PAGE_SIZE and the CLK_TCK direclty from getconf() command. Uptime comes from proc/uptime

Cpu usage is computed by following those instructions. It keeps an history of the current processor time for the given pid so that the computed value gets more and more accurate. Don't forget to do unmonitor(pid) so that history gets cleared. Cpu usage does not check the child process tree!

Memory result is representing the RSS (resident set size) only by doing rss*pagesize, where pagesize is the result of getconf PAGE_SIZE.

On darwin, freebsd, solaris

We use a fallback with the ps -o pcpu,rss -p PID command to get the same informations.

Memory usage will also display the RSS only, process cpu usage might differ from a distribution to another. Please check the correspoding man ps for more insights on the subject.

On AIX

AIX is tricky because I have no AIX test environement, at the moment we use: ps -o pcpu,rssize -p PID but /proc results should be more accurate! If you're familiar with the AIX environment and know how to get the same results as we've got with Linux systems.

Windows

Next version will support

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Stat

type Stat struct {
	// contains filtered or unexported fields
}

Stat will store CPU time struct

type SysInfo

type SysInfo struct {
	CPU    float64
	Memory float64
}

SysInfo will record cpu and memory data

func GetStat

func GetStat(pid int) (*SysInfo, error)

GetStat will return current system CPU and memory data

Jump to

Keyboard shortcuts

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