Skip to content

Repository files navigation

Resusage

Obtaining of virtual memory, RAM and CPU usage by the whole system or by single process.

Build StatusWindows Build Status

Currently works on Linux and Windows.

FreeBSD support is partial - only system-wide memory information and per-process CPU usage can be retrieved now.

Generating documentation

Ddoc:

dub build --build=docs

Ddox:

dub build --build=ddox

Brief

// import moduleimport resusage.memory;
// or the whole packageimport resusage;
// get system memory usage
SystemMemInfo sysMemInfo = systemMemInfo(); // access properties
sysMemInfo.totalRAM;
sysMemInfo.usedRAM;
sysMemInfo.freeRAM;
sysMemInfo.totalVirtMem;
sysMemInfo.usedVirtMem;
sysMemInfo.freeVirtMem;
// actualize values after some amount of time
sysMemInfo.update();
// get memory usage of the current process
ProcessMemInfo procMemInfo = processMemInfo();
// or pass process ID to get info about specific processint pid = ...;
ProcessMemInfo procMemInfo = processMemInfo(pid);
// access properties
procMemInfo.usedVirtMem;
procMemInfo.usedRAM;
// actualize values after some amount of time
procMemInfo.update();
//import moduleimport resusage.cpu;
// create watcher to watch system CPUauto cpuWatcher = new SystemCPUWatcher();
// get actual value when neededdouble percent = cpuWatcher.current();
// create CPU watcher for current processauto cpuWatcher = new ProcessCPUWatcher();
// or for process with given idint pid = ...;
auto cpuWatcher = new ProcessCPUWatcher(pid);
// get actual value when neededdouble percent = cpuWatcher.current();

Examples

Prints total amount of virtual and physical memory (in bytes) and their current usage in the system (in percents).

dub examples/totalusage.d

Prints amount of virtual and physical memory currently used by process, in bytes.

dub examples/processusage.d `pidof process`

All following examples show CPU time used by a system or by a process in the 0-100% range.

Watch system CPU time:

dub examples/cpuwatcher.d

Watch process CPU time:

dub examples/cpuwatcher.d `pidof process`

Spawn process and watch for its CPU time:

dub examples/cpuwatcher.d --spawn firefox

Adjust the rate of output:

dub examples/cpuwatcher.d --rate=1 --spawn firefox

Consume CPU time and report CPU usage by this process:

dub examples/cpuselfwatcher --threads=2

E.g. if you have 4 cores and run this example with 2 threads it will report 50% CPU time.

Platform notes and implementation details

Windows

In order to provide some functionality resusage dynamically loads the following libraries at startup:

  1. Psapi.dll for GetProcessMemoryInfo.
  2. Pdh.dll to calculate CPU time used by system.

If Psapi.dll or Pdh.dll could not be loaded, corresponding functions will always throw WindowsException.

Linux

Uses sysinfo, clock_gettime and proc stats.

FreeBSD

Uses sysctl to get RAM and libkvm to get swap memory to calculate virtual memory. Uses clock_gettime to evaluate CPU usage.

About

D library for getting system and process resource usage

Topics

Resources

Stars

17 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages