Mem-Monitor

Mem-Monitor is a utility that gives periodic feedback on the memory and CPU usage of a program. It follows forks and execs using LD_PRELOAD. It currently works on Linux but should be easy to port to other Unices.

Every 0.5 seconds, Mem-Monitor checks the memory usage of the program and its children. The memory usage is printed if it has increased by at least 33% since the last time it was printed, or it has been 30 seconds. (These values are configurable.)

Sample output

$ mem-monitor g++ -O3 test/test.cc:

## MM [2006-10-16 04:34:40Z g++-4.1/20922 vsize:   0.3 MB  user:0.0 s  sys:0.0 s  wall:0.0 s]
## MM [2006-10-16 04:34:40Z g++-4.1/20922 vsize:   2.0 MB  user:0.0 s  sys:0.0 s  wall:0.0 s]
## MM [2006-10-16 04:34:40Z g++-4.1/20923 vsize:   2.0 MB  user:0.0 s  sys:0.0 s  wall:0.0 s]
## MM [2006-10-16 04:34:41Z cc1plus/20923 vsize:  52.9 MB  user:1.3 s  sys:0.1 s  wall:1.5 s]
## MM [2006-10-16 04:34:42Z cc1plus/20923 vsize:  85.8 MB  user:2.2 s  sys:0.2 s  wall:2.5 s]
## MM [2006-10-16 04:34:44Z cc1plus/20923 vsize: 120.4 MB  user:4.1 s  sys:0.3 s  wall:4.5 s]
## MM [2006-10-16 04:34:47Z cc1plus/20923 vsize: 163.1 MB  user:6.3 s  sys:0.4 s  wall:7.0 s]
## MM [2006-10-16 04:34:49Z cc1plus/20923 vsize: 264.6 MB  user:8.6 s  sys:0.5 s  wall:9.5 s]
## MM [2006-10-16 04:34:57Z cc1plus/20923 vsize: 362.9 MB  user:16.3 s  sys:0.8 s  wall:17.5 s]
## MM [2006-10-16 04:35:02Z cc1plus/20923 vsize: 490.8 MB  user:21.0 s  sys:1.1 s  wall:22.5 s]
## MM [2006-10-16 04:35:06Z cc1plus/20923 vsize: 659.4 MB  user:24.8 s  sys:1.2 s  wall:26.5 s]
## MM [2006-10-16 04:35:08Z collect2/21046 vsize:   1.9 MB  user:0.0 s  sys:0.0 s  wall:28.3 s]
## MM [2006-10-16 04:35:08Z ld/21047 vsize:   0.6 MB  user:0.0 s  sys:0.0 s  wall:28.3 s]

Usage

mem-monitor [--outfd FD] -- command...

Runs COMMAND and monitors memory and CPU usage. Output is sent to FD 2 (stderr) by default.

mem-monitor [--outfd FD] --pid PID

Attach to running process PID. This currently does not follow children. Following children of a process who isn't one's own child requires using ptrace(2) instead of LD_PRELOAD. This may be implemented in a future version of Mem-Monitor.

Download

Dependencies

Building

To build:

make

Development

Author

Copyright (C) 2006 Karl Chen <quarl@quarl.org>.

License

BSD.