Skip to content

NRauschmayr/FOM-Tools

 
 

Repository files navigation

FOM Tools provide utilities to study the memory allocation patterns of an application. It has two modes

  • Find Obsolete Memory.
  • Record memory (de-)allocation patterns

First mode aims to find pages which move to swap and remain there. Such pages contain objects which are not used any longer by an application and as a consequence the memory has become obsolete and could be potentially released.

Obsolete memory tools consist of three parts:

  • preprocessing to evaluate the right memory limit for an application. The limit should be such that the application does not start thrashing.
  • monitoring utility to track page status and malloc calls
  • postprocessing tools to map objects to swapped pages, to plot and merge the data and to make statistics

Requirements:

  • Numpy
  • Matplotlib (> version 1.2.0)
  • compiler with C++11 support
  • libunwind
  • Cgroup (Memory/Freezer)

Second mode interposes malloc/calloc/realloc and free calls and records time, stacktrace and size. This information is then saved to a record file for post processing. During the postprocessing step four metrics have been calculated.

  • lifetime of allocation
  • allocation density in unit time
  • locality of allocated addresses
  • variations in allocation sizes

How to configure and install:

git clone https://github.com/FOM-Tools/FOM-Tools.git
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER=$(which g++) -DCMAKE_C_COMPILER=$(which gcc) ../FOM-tools -DCMAKE_INSTALL_PREFIX=${PWD}/../install
make
make install

A detailed description about the tool can be found here: https://github.com/FOM-Tools/FOM-Tools/wiki

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 82.4%
  • Python 12.8%
  • CMake 4.5%
  • Other 0.3%