Moca: An efficient Memory trace collection system - Inria - Institut national de recherche en sciences et technologies du numérique Accéder directement au contenu
Rapport (Rapport De Recherche) Année : 2016

Moca: An efficient Memory trace collection system

Moca: Un système efficient de collecte de traces mémoire

Résumé

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.
Fichier principal
Vignette du fichier
RR-8931.pdf (760.13 Ko) Télécharger le fichier
Origine : Fichiers produits par l'(les) auteur(s)
Loading...

Dates et versions

hal-01342679 , version 1 (08-07-2016)

Licence

Paternité - Pas d'utilisation commerciale - Pas de modification

Identifiants

  • HAL Id : hal-01342679 , version 1

Citer

David Beniamine, Guillaume Huard. Moca: An efficient Memory trace collection system. [Research Report] RR-8931, Inria Grenoble Rhône-Alpes, Université de Grenoble. 2016, pp.16. ⟨hal-01342679⟩
226 Consultations
249 Téléchargements

Partager

Gmail Facebook X LinkedIn More