Pirooz
Pirooz

Reputation: 1278

Calculating the maximum free store memory consumed by a process

I would like to compare the maximum amount of heap a set of processes dynamically allocate. Is there any system command in Linux or any application that automatically does that? Something like a monitoring tool that runs a process and watches for how much memory is consumed by the process.

Unfortunately, the size(1) command only reflects on the text and data memory sections of the process and process accounting reports on the average memory used by the process.

Upvotes: 2

Views: 206

Answers (2)

Pablo Castellazzi
Pablo Castellazzi

Reputation: 4209

Try with a memory profiler like valgrind massif.

Upvotes: 3

Nemo
Nemo

Reputation: 71605

pmap is not bad, but it only gives you a snapshot, not the maximum.

You might want to take a look at getrusage(). On new-ish kernels (2.6.32; not sure the exact cut-off), the ru_*rss fields are actually populated. (On older kernels, they always get set to zero...)

Also try "cat /proc/<pid>/status" and look at VmPeak (which shows the peak virtual memory usage) and VmHWM (which shows the peak resident set size). Those are both "high water marks", as in they go up during a process's lifetime but never down. If you can grab a snapshot of them at process termination, you can gather the data yourself.

I once wrote a .so to do just that; it worked by patching exit() (and you invoked it using LD_PRELOAD). But it was for work and I do not have a copy :-(.

Upvotes: 1

Related Questions