Memory profiling of OCaml applications
Profilage mémoire d’applications OCaml
Résumé
Automatic memory reclaim is a common feature of programming
languages. It offers to the programmers some guarantees about
reliability, but, by taking them away from the implementation details
of the memory management, it makes it more difficult to understand and
control memory allocations.
OCaml is a multi-paradigm statically typed programming language
developed at INRIA. It uses a garbage collector (GC) in charge of the
automatic reclaim of unused memory and OCaml users need tools for
analyzing the memory behavior of their programs.
As part of this thesis, we studied the memory behavior of applications
written in OCaml and more specifically the case of memory leaks: still
accessible memory blocks (hence not reclaim by the GC) that are no
longer needed for the computation.
In this thesis, after describing some known methods for analyzing the
memory behavior of applications, we present an instrumentation method
of the OCaml toolchain and runtime. This instrumentation then is used
by tools that we have designed and implemented, and used to
categorize, visualize and locate memory allocations.
Results and tools presented in this thesis were obtained as part of a
collaboration between ENSTA ParisTech, INRIA and OCamlPro SAS, and
have been successfully used in an industrial context.
La récupération automatique de la mémoire est une caractéristique
commune des langages de programmation. Elle offre certes au
programmeur des garanties de fiabilité, mais, en éloignant ce dernier
des détails de la gestion de la mémoire, elle rend plus difficile la
compréhension et, a fortiori, la maîtrise des allocations de mémoire.
OCaml, langage multi-paradigme statiquement typé développé à
l'INRIA. utilise un ramasse-miettes (GC) en charge du recyclage
automatique de la mémoire et ses utilisateurs réclament des outils
d'analyse du comportement mémoire de leurs programmes.
Dans le cadre de cette thèse, nous avons étudié d'une façon générale
le problème de comportement mémoire des applications écrites en OCaml
et plus précisément le cas des fuites mémoires, c'est-à-dire des blocs
alloués et non recyclés bien qu'ils soient devenus inutiles au calcul.
Cette thèse présente, après un rappel des méthodes connues d'analyse
du comportement mémoire des applications, une méthode
d'instrumentation de la chaîne de compilation et de la bibliothèque
d'exécution des programmes. Cette instrumentation est à la base
d'outils que nous avons conçus et mis en oeuvre, et qui permettent de
catégoriser, visualiser et localiser les allocations de mémoire.
Les résultats et outils présentés dans cette thèse ont été obtenus
dans le cadre d'une collaboration entre l'ENSTA-ParisTech, l'INRIA et
la société OCamlPro SAS, et ont été utilisés avec succès dans un
contexte industriel.
Loading...