Skip to content
fine-grained, cgroup-based tool for profiling memory usage over time of a process tree
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
vendor
.dockerignore
.gitignore
Dockerfile
Gopkg.lock
Gopkg.toml
LICENSE
Makefile
README.md
main.go
poller.go

README.md

mstat -- measure memory usage of a program over time

This tool runs on Linux, taking advantage of the cgroups kernel API (also used by container infrastructure like Docker) to record memory usage of a set of processes over time. Because mstat builds on groups, we automatically track memory usage of any child-processes spawned by the original program.

Additionally, the Memory API we are using not only gives us detailed information about userspace memory usage, but also about kernel memory allocated on behalf of the program. (such as memory used to mange a process's page tables).

This tool only runs on Linux, and requires being installed installed set-UID. Build it the normal way:

$ git clone https://github.com/bpowers/mstat
$ cd mstat
$ make; sudo make install

Then, use it to measure memory usage over time (freq specifies the sampling frequency in Hz, bump it up for short-lived programs or fine grained reporting):

$ mstat -o data/mem.tsv -freq 59 -- ./test

And there is even a handy flag to modify the environment:

$ mstat -o data/mem.tsv -freq 59 -env LD_PRELOAD=libawesome.so -- ./test
You can’t perform that action at this time.