resusage 0.2.7

Virtual memory, RAM, CPU usage by system or process

To use this package, run the following command in your project's root directory:

Manual usage
Put the following dependency into your project's dependences section:

This package provides sub packages which can be used individually:

resusage:totalusage - A minimal D application.

resusage:processusage - A minimal D application.

resusage:cpuwatcher - A minimal D application.

resusage:cpuselfwatcher - A minimal D application.


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

Build Status Windows 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


dub build --build=docs


dub build --build=ddox


// import module
import resusage.memory;

// or the whole package
import resusage;

// get system memory usage
SystemMemInfo sysMemInfo = systemMemInfo(); 

// access properties


// actualize values after some amount of time

// get memory usage of the current process
ProcessMemInfo procMemInfo = processMemInfo();

// or pass process ID to get info about specific process
int pid = ...;
ProcessMemInfo procMemInfo = processMemInfo(pid);

// access properties

// actualize values after some amount of time

//import module
import resusage.cpu;

// create watcher to watch system CPU
auto cpuWatcher = new SystemCPUWatcher();

// get actual value when needed
double percent = cpuWatcher.current();

// create CPU watcher for current process
auto cpuWatcher = new ProcessCPUWatcher();

// or for process with given id
int pid = ...;
auto cpuWatcher = new ProcessCPUWatcher(pid);

// get actual value when needed
double percent = cpuWatcher.current();


Total usage

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

dub run resusage:totalusage 

Process usage

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

dub run resusage:processusage -- `pidof process`

CPU Watcher

Watch system CPU time:

dub run resusage:cpuwatcher

Watch process CPU time:

dub run resusage:cpuwatcher -- `pidof process`

Spawn prcoess and watch for its CPU time:

dub run resusage:cpuwatcher -- --spawn firefox

Adjust the rate of output:

dub run resusage:cpuwatcher -- --rate=1 --spawn firefox

CPU self watcher

Consume CPU time and report CPU usage by this process:

dub run :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


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

  1. GetProcessMemoryInfo to get memory (physical and virtual) used by specific process.
  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.


Uses sysinfo, clock_gettime and proc stats.


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

  • Roman Chistokhodov
Sub packages:
resusage:totalusage, resusage:processusage, resusage:cpuwatcher, resusage:cpuselfwatcher
0.3.2 2020-Feb-21
0.3.1 2020-Feb-21
0.3.0 2019-Jul-26
0.2.8 2018-May-05
0.2.7 2017-Jul-01
Show all 17 versions
Download Stats:
  • 0 downloads today

  • 0 downloads this week

  • 1 downloads this month

  • 8261 downloads total

Short URL: