Moca: An efficient Memory trace collection system
Moca: Un système efficient de collecte de traces mémoire
Abstract
In modern High Performance Computing architectures, the memory subsystem
is a common performance bottleneck. When optimizing an application, the developer has to
study its memory access patterns and adapt accordingly the algorithms and data structures it uses.
The objective is twofold: on one hand, it is necessary to avoid missuses of the memory hierarchy such as false sharing of cache lines or contention in a NUMA
interconnect. On the other hand, it is essential to take advantage of the various cache levels and the memory hardware prefetcher.
Still, most profiling tools focus on CPU metrics. The few of them able to
provide an overview of the memory patterns involved by the execution rely on hardware instrumentation mechanisms and have two drawbacks.
The first one is that they are based on sampling which precision is limited by hardware capabilities. The second one is that they trace
a subset of all the memory accesses, usually the most frequent, without information about the other ones.
In this study we present Moca an efficient tool for the collection of complete spatiotemporal memory traces.
It is based on a Linux kernel module and provides a coarse grained trace of a superset of all the
memory accesses performed by an application over its addressing space during the time of its execution. The
overhead of Moca is reasonable when taking into account the fact that
it is able to collect complete traces which are also more precise
than the ones collected by comparable tools.
Dans les architectures de calcul hautes performances, le système de
mémoire est une cause fréquente de baisse de performances. Afin
d'optimiser une application le.a développeur.euse doit étudier le schéma
d'accès mémoire de son application et adapter ses algorithmes et
structures de données en conséquence. L'objectif est double : tout d'abord
il est nécessaire d'éviter les mauvaise utilisations de la hiérarchie
mémoire telles que le faux partage de ligne de cache ou la contention
dans les interconnexion NUMA. De plus il est primordial de tirer le
meilleur parti des différents niveaux de cache et du pré-chargement mémoire
matériel.
Cependant, la plupart des outils d'analyse de performances se concentrent sur
des métriques provenant du processeur. Les rare outils capables de proposer
une vue générale des schémas d'accès mémoire se basent sur des mécanismes
d'instrumentation matériels et soulèvent deux problèmes. Premièrement ils
sont basés sur un échantillonnage dont la précision est limité par les
capacités du matériel. Ensuite ils ne tracent qu'une sous partie des accès
mémoire, en général les plus fréquents, sans informations sur les autres
accès.
Dans cette étude, nous présentons Moca un outil efficient de collecte de
traces mémoire spatiotemporelles complètes. Cet outil est basé sur un
module noyau Linux et génère une trace a gros grain contenant un
surensemble des accès mémoire effectués par un application au cours du
temps et de l'espace d'adressage de l'exécution. Le surcout de Moca est
raisonnable si on prends en compte le fait que la trace produite est
complète et donc plus précise que celles produites par des outils
comparable.
Origin | Files produced by the author(s) |
---|
Loading...