           SPELL=exmap
         VERSION=0.10
          SOURCE="$SPELL-$VERSION.tgz"
   SOURCE_URL[0]=http://www.berthels.co.uk/$SPELL/download/$SOURCE
     SOURCE_HASH=sha512:ce9cd231ab8d726ea29f9ad1cccd505b00661290acfa6dadfe0bee756d706011cc7003ade011b106778eaa11d00b8b7b2eb094fb3666062faa063761f4622503
SOURCE_DIRECTORY="$BUILD_DIRECTORY/$SPELL-$VERSION"
        WEB_SITE="http://www.berthels.co.uk/exmap/"
      LICENSE[0]=GPL2
         ENTERED=20080105
           SHORT="memory analysis tool that accurately determines memory use"
cat << EOF
Exmap is a memory analysis tool which allows you to accurately determine how
much physical memory and swap is used by individual processes and shared
libraries on a running system. In particular, it accounts for the sharing
of memory and swap between different processes.

To my knowledge, other tools can determine that some memory is shared,
but can't determine how many processes are making use of that memory and so
fairly apportion the cost between the processes making use of it.

Exmap uses a loadable kernel module to assign a unique id to each physical
or swap page in use by each process. This information is then collated and
'effective' usage numbers calculated. A GTK program is provided to view the
information (and a command line tool is planned for a future release).

Basically, this allows you to examine a complex system of processes and
determine the effective memory usage of each process, mapped file, ELF
section and ELF symbol, which can be helpful in memory optimisation work.

It accounts for shared memory in the following way: when a page of memory
is found to be shared between N processes, the totals for each process are
given a 1/N share of that page.

Exmap doesn't allow you to see details on how and where memory on the heap is
allocated. Tools such as valgrind/massif and memprof are more use in this case.
EOF
