TABARNAC: Tools for Analyzing Behavior of Applications Running on NUMA Architecture
Résumé
In modern parallel architectures, memory accesses represent a common
bottleneck. Thus, optimizing the way applications access the memory is an important way to improve performance and energy consumption. Memory accesses are even more important with NUMA
machines, as the access time to data depends on its location in
the memory. Many efforts were made to
develop adaptive tools to improve memory accesses at the runtime by optimizing
the mapping of data and threads to NUMA nodes. However, theses tools are not
able to change the memory access pattern of the original application,
therefore a code written without considering memory performance might
not benefit from them. Moreover, automatic mapping tools take time to converge
towards the best mapping, losing optimization opportunities. A
deeper understanding of the memory behavior can help optimizing it,
removing the need for runtime analysis.
In this paper, we present TABARNAC, a tool for analyzing the memory behavior of parallel applications with a focus on NUMA architectures.
TABARNAC provides a new visualization of the memory access behavior, focusing on the
distribution of accesses by thread and by structure. Such visualization allows the
developer to easily understand why performance issues occur and how to fix them.
Using TABARNAC, we explain why some applications do not benefit from data
and thread mapping. Moreover, we propose several code modifications to
improve the memory access behavior of several parallel applications.
Les accès mémoire représentent une source de problème de performance fréquente
avec les architectures parallèle moderne. Ainsi optimiser la manière dont les
applications accèdent à la mémoire est un moyen efficace d'améliorer la
performance et la consommation d'énergie. Les accès mémoire prennent d'autant
plus d'important avec les machines NUMA où le temps d'accès à une donnée
dépend de sa localisation dans la mémoire. De nombreuse études ont proposées
des outils adaptatif pour améliorer les accès mémoire en temps réel, ces
outils opèrent en changeant le placement des données et des thread sur les
nœuds NUMA. Cependant ces outils n'ont pas la possibilité de changer la façon
dont l'application accède à la mémoire. De ce fait un code développé sans
prendre en compte les performances des accès mémoire pourrait ne pas en tirer
parti. De plus les outils de placement automatique ont besoin de temps pour
converger vers le meilleur placement, perdant des opportunités d'optimisation.
Mieux comprendre le comportement mémoire peut aider à l'optimiser et supprimer
le besoin d'optimisation en temps réel.
Cette étude présente TABARNAC un outil pour analyser le comportement mémoire
d'application parallèles s'exécutant sur architecture NUMA. TABARNAC offre
une nouvelle forme de visualisation du comportement mémoire mettant l'accent
sur la distribution des accès entre les thread et par structure de données. Ce
type de visualisations permettent de comprendre facilement pourquoi les
problèmes de performances apparaissent et comment les résoudre. En utilisant
TABARNAC, nous expliquons pourquoi certaines applications ne tirent pas parti
d'outils placement de donnée et de thread. De plus nous proposons plusieurs
modification de code permettant d'améliorer le comportement mémoire de plusieurs
applications parallèles.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...