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