First I would pickup the process with the `smem`.  For example, you could use `smem -tas uss` to have an overview.
 
 - `-t` ... shows totals
 - `-a` ... auto adjusts the column width
 - `-s uss`... sorts the result based on the *uss* column

To see details per process the best way is to use `pmap`.  To get detailed information you should use `-X` switch.  To get all information that kernel provides you can use `-XX` which usually is an overkill.

To get a 2 seconds refresh monitoring for a *pid* 3120:

`watch -n 2 pmap -X 3120`

**Edit: To actually get a peak**  The above helps in monitoring, but it does not show an actual peak. Slipped my mind.

I would personally use `valgrind` with the `massif` tool.

`valgrind --tool=massif --page-as-heap=yes --massif-out-file=evolution_massif.out evolution; grep mem_heap_B evolution_massif.out | sed -e 's/mem_heap_B=\(.*\)/\1/' | sort -g | tail -n 1`

Explanation:
 - `--page-as-heap=yes` ... tells massif that it should take all memory instead of just heap
 - `--massif-out-file` ... the output file for the *massif* tool
 - **evolution** ... the application that should be monitored

The next part is there to find out the maximum number recorded.

The `grep` searches for *mem_heap_B* occurrences. `sed` gets rid of the string `mem_heap_B` so we get only numeric result.  The we sort it via `sort -g` which is generic numeric sort and take the biggest number with `tail -n 1` which returns the first line of the sorted numbers.

To display the output file *evolution_massif.out*, you can use `ms_print` post-processing tool for Massif.

It is simply:

`ms_print evolution_massif.out`

The output should look like this (this is first page of the output), where you can see which snapshot was a peak - **10 (peak)**:

```
--------------------------------------------------------------------------------
Command:            evolution
Massif arguments:   --pages-as-heap=yes --massif-out-file=massif.out
ms_print arguments: massif.out
--------------------------------------------------------------------------------


    GB
10.09^        #                                                               
     |        #                                                               
     |        #                                                               
     |        #                                                               
     |        #                                                               
     |        #                                                               
     |        #      @:::::@::::::::::::::::@@:::::@:::::@::::::@::::@:::::@::
     |        #      @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::::@:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |        #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |     @  #::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
     |  :::@::#::::: @:::::@: :::::::: :::: @@:::::@:::::@::::::@::::@:::::@::
   0 +----------------------------------------------------------------------->Gi
     0                                                                   8.927

Number of snapshots: 97
 Detailed snapshots: [7, 10 (peak), 17, 24, 43, 44, 50, 60, 70, 80, 90]

--------------------------------------------------------------------------------
  n        time(i)         total(B)   useful-heap(B) extra-heap(B)    stacks(B)
--------------------------------------------------------------------------------
  0              0           16,384           16,384             0            0
  1    149,772,704      393,547,776      393,547,776             0            0
  2    243,902,287      398,592,800      398,592,800             0            0
  3    396,613,298      558,157,704      558,157,704             0            0
  4    504,752,503      638,138,760      638,138,760             0            0
  5    604,812,936      639,894,808      639,894,808             0            0
...
```
**Edit to add all children**:

To add all descendants (children) you can add the `--trace-children=yes` option to the `valgrind` command.