Damien Dosimont

Robin Lamarche-Perrin
email: robin.lamarche-perrin@mis.mpg.de

Lucas Mello Schnorr
email: schnorr@inf.ufrgs.br

Guillaume Huard

Jean-Marc Vincent

Keywords: Performance analysis, trace visualization, spatiotemporal aggregation, information theory, NASPB, Grid'5000

Analysts commonly use execution traces collected at runtime to understand the behavior of an application running on distributed and parallel systems. These traces are inspected post mortem using various visualization techniques that, however, do not scale properly for a large number of events. This issue, mainly due to human perception limitations, is also the result of bounded screen resolutions preventing the proper drawing of many graphical objects. This paper proposes a new visualization technique overcoming such limitations by providing a concise overview of the trace behavior as the result of a spatiotemporal data aggregation process. The experimental results show that this approach can help the quick and accurate detection of anomalies in traces containing up to two hundred million events.

A Spatiotemporal Data Aggregation Technique for Performance Analysis of Large-scale Execution Traces

I. INTRODUCTION

Large scale distributed systems represent typical cases of platforms involving several thousands computing resources. Even for a short computation time, the trace generated during an application execution on such systems may contain millions of events and reach several gigabytes of data. The events collected during the runtime can be function calls, interruptions, CPU load, memory utilization or hardware counters. Interpreted together, these events can help the identification of execution anomalies such as bad performance caused by resources or application bottlenecks.

Traces are commonly visualized by Gantt charts [START_REF] Wilson | Gantt Charts: A Centenary Appreciation[END_REF], which depict spatial and temporal dimensions and are capable to relate temporal behavior to hardware and software components. However, in large scale scenarios with many resources and events, users cannot be provided with a correct overview of the whole trace because of screen limitations. Figure 2 depicts all the events of a large trace, resulting in cluttered visualizations with very small graphical objects and pixelization artifacts [START_REF] Schnorr | Detection and Analysis of Resource Usage Anomalies in Large Distributed Systems Through Multi-Scale Visualization[END_REF]. By zooming in and panning to get more details, the analyst usually loses context, making it difficult to figure out which part of the trace is drawn and how representative it is considering the overall application behavior. However, if the user could dispose of a very large screen, data would be so numerous that it would be difficult to understand them. The limitation of a microscopic Gantt chart is that it is incapable to depict a higher-level understanding of the system states and dynamics. Because anomalies can be global (like bottlenecks), this high-level understanding is necessary to debug the system. Figure 1. Our analysis tool, Ocelotl, showing an overview of the execution of the NAS-CG application, class C, 64 processes, on the Grid'5000 Rennes site: the trace is partitioned into aggregates that correspond to a locally homogeneous behavior of the application over time and among a set of computing resources. We distinguish a perturbation around 3,00E9, caused by the concurrent execution of applications competing for network access.

We propose an innovative visualization technique that provides a consistent overview of the temporal and resource dimensions. The main contribution consists in a multidimensional data-aggregation algorithm detecting and merging areas of the trace that are temporally and spatially homogeneous to provide higher-level visualizations while preserving the microscopic information content. In practice, this algorithm computes a partition of space and time that optimizes a trade-off between the representation complexity and information loss. The analyst can easily choose several levels of details by sliding the aggregation strength among a set of significant values. In addition to this algorithm, we present an associated visualization that provides a represen- tative information of the aggregates by showing the mode (the value that appears most often), and a visual aggregation that completes the data aggregation procedure. Figure 1 presents a screenshot of our tool.

This paper is organized as follows. Section II shows related work on spatiotemporal visualizations tackling scalability. Section III describes our theoretical approach and the aggregation algorithm. Section IV gives the description of the visualization techniques for the algorithm output. Section V presents large scale MPI application experiments that validate our aggregation algorithm and corresponding visualization. Section VI concludes and details perspectives.

II. RELATED WORK

Different analysis tools propose several methods to improve scalability and provide decent overviews over time and space. Table I gives a summary of these tools and the corresponding techniques.

A. Some Improper Complexity Reduction Techniques

Elmqvist and Fekete [START_REF] Elmqvist | Hierarchical Aggregation for Information Visualization: Overview, Techniques, and Design Guidelines[END_REF] propose a methodology to build an overview based on hierarchical aggregation. They insist on six criteria that a consistent visualization must fulfill: pretable by the user On the following, we mark Gx if criterion x is satisfied, and Gx if it is not. Pixel-guided representations, present in some Gantt charts [START_REF] Knüpfer | The Vampir Per-formance Analysis Tool-Set[END_REF], [START_REF] Pillet | Paraver: A tool to visualize and analyze parallel code[END_REF], [START_REF] Labarta | Scalability of visualization and tracing tools[END_REF] or timelines [START_REF] Knüpfer | The Vampir Per-formance Analysis Tool-Set[END_REF], associate each pixel allocated for the view to a set of data. As the pixel is incapable to represent all the information it contains, the rendering algorithm decides which information is shown or hidden. We claim that this aggregation process is unclear for the user (G4, G6) and may mislead him about the trace content (G5). We also notice that resizing the window modifies strongly the visualization content because pixel allocation changes, being unable to keep coherence between the representations. In what we call visual aggregation, the rendering tries as much as possible to preserve graphical object scales, whose size depends on their contents. When it is impossible, for instance, when the size is less than one pixel, it generates aggregates gathering close objects. In Pajé [START_REF] Chassin De Kergommeaux | Pajé, an Interactive Visualization Tool for Tuning Multi-Threaded Parallel Applications[END_REF] and LTTng Eclipse Viewer [START_REF]Linux Tools Project/LTTng2/User Guide -Eclipsepedia[END_REF], such aggregates are just used to avoid visual clutter, but do not represent the data they contain, which hinders the analysis (G2).

B. Lack of Satisfying Spatiotemporal Overview

Even if some of them respect all the G criteria, the techniques presented in the Table I do not provide a fair processing of the temporal and spatial (resources) dimensions. This problem hinders the representation of phenomena that involve the dynamics of the application and the structure of the platform. We define two criteria, included in the Table I, to evaluate the management of spatiotemporal dimensions:

• M1. Spatiotemporal representation. The representation explicitly shows both spatial and temporal dimensions. • M2. Aggregation coherence. The reduction process is applied simultaneously to both dimensions.

All representations based on Gantt charts respect M1. However, some of them neglect reduction techniques on the space [START_REF] Knüpfer | The Vampir Per-formance Analysis Tool-Set[END_REF], [START_REF] Pillet | Paraver: A tool to visualize and analyze parallel code[END_REF], [START_REF] Labarta | Scalability of visualization and tracing tools[END_REF], or use a technique depending on the dimension [START_REF] Prada-Rojas | Observation tools for debugging and performance analysis of embedded linux applications[END_REF]. These lacks are strongly related to the incapability to fulfill the G1 criteria on both dimensions.

On the contrary, other techniques fulfill M2 but not M1. Vampir's task profile [START_REF] Knüpfer | The Vampir Per-formance Analysis Tool-Set[END_REF] clusters the most similar processes according to a distance measure based on the duration of the functions executed by each process. Even if the function distribution for each cluster is represented by a bar chart, the temporal dimension is lost in the process. Our previous work includes a way to manage the representation complexity and the information lost induced by an aggregation through an information-based compromise. Viva [START_REF] Lamarche-Perrin | Evaluating Trace Aggregation for Performance Visualization of Large Distributed Systems[END_REF] provides a multiresolution treemap view showing the hardware and software component hierarchy. Entities having the most homogeneous behavior are aggregated using the informationbased compromise. This technique helps to highlight troubles characterized by an heterogeneous behavior. Entities values (e.g., the function duration) are time-integrated over a configurable time interval. Nevertheless, the time dimension is missing from the representation (M1). Ocelotl [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF] uses the same compromise to build a timeline where homogeneous time periods of the trace are aggregated, succeeding to highlight macroscopic phases and temporal perturbations.

⋆ • • • • • • Timeline Pixel-guided (⋆, •) Vampir [4] • ⋆ • • Timeline Information aggregation (⋆, •) Ocelotl [11], [12] • • • • • • • Task Profile Clustering (•), Mean Operation (⋆) Vampir [4] • • • • • • • Treemap/Topology Hierarchical aggregation (•), Time integration (⋆) Viva [2], [13] • • • • • • •
Even if spatial data is not represented (M1), it is used to determine the time aggregates (M2).

C. Our contribution

Both Viva [START_REF] Lamarche-Perrin | Evaluating Trace Aggregation for Performance Visualization of Large Distributed Systems[END_REF] and Ocelotl [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF] tools are highly compliant with the G criteria thanks to the information they provide to the user during the aggregation process, but not with the M1 criteria, since they represent only one dimension. This is why we propose to extend the technique to provide a satisfying overview (G) managing correctly and simultaneously the temporal and spatial dimensions (M). Two different processes are involved to address these requirements. A spatiotemporal data aggregation algorithm we present in Section III that reduces the trace complexity in both dimensions while controlling the information loss (G1, G5, G6, M1, M2). Section IV explains how its output is represented thanks to a visualization technique we have designed (G2, G3, G4), and how a visual aggregation improves the spatial entity budget management (G1).

III. A SPATIOTEMPORAL AGGREGATION ALGORITHM

A. The Trace Microscopic Model

Raw traces contain timestamped events describing a particular behavior of the application, e.g., a function call or its return, a communication, a synchronization (semaphore, mutex). Each event is associated with the resource that produces it, e.g., a thread or a process. In order to provide an algorithmic framework for data aggregation, one has to properly formalize the trace dimensions, individuals and structures that will be actually aggregated. In our case, as we focus on the spatial and temporal dimensions, this model preliminary aggregates the events within microscopic spatiotemporal areas constituting what we call the trace microscopic model. It is thus described as algebraicallystructured tridimensional datasets: the spatial dimension is structured according to the platform hierarchy, the temporal dimension is structured by the order of time, and the state dimension which, in this paper, has no particular structure.

(1) Spatial Dimension: The set S = {s 1 , . . . , s n } of the platform microscopic resources defines the trace spatial dimension. For the computing platforms we are interested in, this set has a hierarchical structure: resources are organized in processes, running on cores, each one being associated with a machine, themselves organized in clusters, and so on. Formally, a hierarchy is a set H(S) = {S 1 , . . . , S p } of subsets of S that contains the whole resource set (S ∈ H(S)), each singleton (∀s ∈ S, {s} ∈ H(S)), and such that any two parts in H(S) are either disjoint or included one in another (∀(S i , S j ) ∈ H(S) 2 , either S i ∩ S j = ∅ or S i ⊂ S j or S i ⊃ S j ). A hierarchy is thus equivalent to a rooted tree where the leaves corresponds to the singletons, the root to the whole set, and the tree-order to the subset relation.

(2) Temporal Dimension: The set T = {t 1 , . . . , t m } of the observed microscopic time periods defines the temporal dimension. This dimension is discrete, whereas the raw trace time is continuous. To fit with the microscopic model, the raw trace is divided in |T | (regular) time periods and the events are associated with the periods where they are active. Each period t has a duration d(t) ∈ R + and the whole set is naturally ordered by "the arrow of time". Formally, a total order < on T provides the concept of interval: T (i,j) = {t ∈ T | t i ≤ t ≤ t j } with t i ≤ t j . We mark I(T ) the set of intervals of T .

Spatiotemporal Dimension: The trace spatiotemporal dimension is given by the Cartesian product of the spatial and the temporal dimensions. A microscopic spatiotemporal area is thus a couple (s, t) ∈ S × T and a macroscopic spatiotemporal area is a subset of S × T that results from the Cartesian product of a node S k ∈ H(S) and an interval T (i,j) ∈ I(T ). We mark A(S × T ) = H(S) × I(T ) the set of such areas with the following convention:

"S k × T (i,j) ∈ A(S × T ) is equivalent to (S k , T (i,j) ) ∈ H(S) × I(T )."
The spatiotemporal dimension inherits both the hierarchical structure of space and the order of time: there is a hierarchy on {{s} × T (i,j) } s∈S for any interval T (i,j) and a total order on {S k × {t}} t∈T for any node S k .

(3) State Dimension: The set X = {x 1 , . . . , x l } of the possible resource states defines the trace state dimension. A state is a timestamped event that has a start and an end. For instance, a function call and its termination forms a state. If this same function is called several times, we consider that it is the same state appearing multiple times. This metric gives information on the duration passed in the different actions performed by the resources, which is a way to define their behaviors quantitatively. In this paper, we renounce any particular algebraic structure on this set. Given a resource T T (6, 8) T (9, 13) T [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF][START_REF] Shannon | A Mathematical Theory of Communication[END_REF] c. An optimal spatial and temporal aggregation (

B. The Trace Aggregation Model

Aggregation is a two-step abstraction process using a partition of the dataset to reduce the data it contains [START_REF] Elmqvist | Hierarchical Aggregation for Information Visualization: Overview, Techniques, and Design Guidelines[END_REF], [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF], [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]. The first step thus consists in partitioning the entity set into disjoint and covering aggregates. Formally, a partition P(S) of S is a set of subsets that are pairwise disjoint (∀(S i , S j ) ∈ P(S) 2 , S i = S j or S i ∩ S j = ∅) and which union is the whole set (∪ S k ∈P(S) S k = S). However, in order to be properly interpreted by the analyst, the aggregates should be consistent with the dataset algebraic structures [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF]: resource aggregates are nodes of the platform hierarchy (P(S) ⊂ H(S)), time period aggregates are intervals of T (P(T ) ⊂ I(T )), and spatiotemporal aggregates are each the Cartesian product of a node and an interval (P(S × T ) ⊂ H(S) × I(T )). We mark H(S) the set of hierarchy-consistent partitions, I(T ) the set of orderconsistent partitions, and A(S × T ) the set of hierarchyand-order-consistent partitions. Note that, in this section, we disregard the aggregation of the state dimension. The second step of the aggregation process consists in reducing the microscopic data and providing an overview according to the chosen partition. Micro-entities are then replaced by virtual macro-entities and their properties are condensed by an aggregation operator (e.g., sum, mean, extrema [START_REF] Elmqvist | Hierarchical Aggregation for Information Visualization: Overview, Techniques, and Design Guidelines[END_REF]). In the spatiotemporal case, the state proportions are simply averaged to get the overall state proportions of the aggregated areas:

∀(S k , T (i,j) ) ∈ H(S) × I(T ), ∀x ∈ X, ρ x (S k , T (i,j) ) = 1 |S k | s∈S k t∈T (i,j) d x (s, t) t∈T (i,j) d(t) (1)
where |S k | is the number of underlying resources. Fig. 3.b gives an example of spatiotemporal aggregation of the microscopic trace represented in Fig. 3.a. The spatial dimension is aggregated according to the second level of the hierarchy (P(S) = {S A , S B , S C }) and the temporal dimension according to four intervals of five microscopic time periods (P(T ) = {T (1,5) , T (6,10) , T [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF][START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF] , T (16,20) }). In this example, the spatiotemporal partition is simply the Cartesian product of these unidimensional partitions: P(S × T ) = P(S) × P(T ).

C. Quantifying Data Reduction and Information Loss

As briefly addressed in previous sections and in further details in previous work [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF], [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF], aggregation is a complex process and it may turn to be harmful for the analysis if the partition is poorly chosen. In particular, the reduction step may cause misleading information losses. For example, in Fig. 3.b, aggregate (S 1 , T (1,5) ) seems quite adequate to summarize the corresponding microscopic data since the state proportions are homogeneous in space and time (∀(s, t) ∈ (S 1 , T (1,5) ), ∀x ∈ X, ρ x (s, t) ≈ ρ x (S 1 , T (1,5) )). On the contrary, (S 3 , T [START_REF] Labarta | Scalability of visualization and tracing tools[END_REF][START_REF] Lusk | Early Experiments with the OpenMP/MPI Hybrid Programming Model[END_REF] ) is an inappropriate approximation since some significant variations exist between the aggregated state proportions and the real microscopic ones.

In order to provide an overview that can be properly interpreted by the analyst, one has to aggregate as a priority the homogeneous spatiotemporal areas, while preserving the microscopic information regarding the heterogeneous ones. Henceforth, aggregation consists in optimizing a trade-off between data reduction and information loss. Informationtheoretic measures have been proposed in previous work [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF], [START_REF] Lamarche-Perrin | Evaluating Trace Aggregation for Performance Visualization of Large Distributed Systems[END_REF], [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF] to express such a trade-off: Kullback-Leibler divergence [START_REF] Kullback | On Information and Sufficiency[END_REF] as a measure of information loss:

loss x (S k , T (i,j) ) = (s,t)∈(S k ,T (i,j) ) ρ x (s, t) log 2 ρ x (s, t) ρ x (S k , T (i,j) ) (2)
Shannon entropy [START_REF] Shannon | A Mathematical Theory of Communication[END_REF] as a measure of data reduction:

gain x (S k , T (i,j) ) = ρ x (S k , T (i,j) ) log 2 ρ x (S k , T (i,j) ) - (s,t)∈(S k ,T (i,j) ) ρ x (s, t) log 2 ρ x (s, t) (3)
and a parametrized Information Criterion [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF]:

pIC x = p gain x -(1 -p) loss x (4)
where p ∈ [0, 1] is the gain/loss ratio used to balance this trade-off. For p = 0, the analyst wants to be as accurate as possible (the microscopic partition is optimal) and, for p = 1, she wants to be the simplest (the full aggregation is optimal). When p varies from 0 to 1, a whole class of nested representations arises. The choice of this parameter is deliberately left to the analyst, so she can adapt the entity budget to the analysis purposes. Note that this criterion is additive according to the partitioning process [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF] and to the state dimension [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF]:

pIC(P) = P ∈P pIC(P ) = P ∈P s∈X pIC x (P )

D. Spatial and Temporal Aggregation

Aggregation is thus modeled as a constrained optimization problem: which structure-consistent partition maximizes the parametrized information criterion? The computation of optimal hierarchy-consistent partitions have been addressed for multilevel detection of communities in large networks [START_REF] Pons | Post-processing hierarchical community structures: Quality improvements and multi-scale view[END_REF], for spatial analysis of geographic information systems [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF], and for anomaly detection in the execution trace of distributed systems [START_REF] Lamarche-Perrin | Evaluating Trace Aggregation for Performance Visualization of Large Distributed Systems[END_REF]. The computation of optimal orderconsistent partitions have been addressed for temporal aggregation of time series [START_REF] Jackson | An algorithm for optimal partitioning of data on an interval[END_REF], for temporal analysis of geographic information systems [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF], and for anomaly detection in the execution trace of multimedia [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF] or MPI applications [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF]. It has been shown that these algorithms belong to a larger class of optimization algorithms which can be formalized within a unified conceptual framework [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF], [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]. The spatiotemporal aggregation algorithm we propose in the next subsection consists in a combination of the spatial and temporal algorithms and thus belongs to the same class.

Algebraic Structure of the Partition Sets: The numbers of hierarchy-consistent and order-consistent partitions both grow exponentially with the size of the corresponding dimension [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]: |H(S)| = Θ(c |S| ), where c ≈ 1.229 corresponds to the worst case scenario (the hierarchy is a complete binary tree), and |I(T )| = O(2 |T | ). Hence, a brute-force search is intractable in practice.

In order to provide a computationally-efficient optimization algorithm, one first needs to acknowledge the algebraic structure of the solution spaces H(S) and I(T ). They are partially ordered by the refinement relation [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]. This partial order allows to cleverly decompose the search space and to design multi-branching recursive algorithms that efficiently solve specialized versions of the optimization problem [START_REF] Lamarche-Perrin | The Best-partitions Problem: How to Build Meaningful Aggregations[END_REF], [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]. In this context, the partitioning of hierarchical systems aims at finding the optimal level on each branch of the hierarchy by performing a simple depth-first search of the corresponding tree [START_REF] Pons | Post-processing hierarchical community structures: Quality improvements and multi-scale view[END_REF], [START_REF] Lamarche-Perrin | Evaluating Trace Aggregation for Performance Visualization of Large Distributed Systems[END_REF], [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF]. An optimal hierarchyconsistent partition is thus computed in linear time O(|S|). The partitioning of ordered systems aims at cutting the time series by sequentially computing optimal subpartitions of growing subsets of the overall population (dynamic programming) [START_REF] Jackson | An algorithm for optimal partitioning of data on an interval[END_REF], [START_REF] Pagano | Trace Management and Analysis for Embedded Systems[END_REF], [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF], [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF]. An optimal order-consistent partition is thus computed in quadratic time O(|T | 2 ).

Spacial-and-temporal is not Spatiotemporal: Fig. 3.c gives an example of partition combining the independent results of the two unidimensional algorithms. Spatial aggregation is applied to the temporally-aggregated trace S ×{T } and results in a hierarchy-consistent partition P(S) that aggregates the nodes where the underlying resources have spatially-homogeneous state proportions. Temporal aggregation is applied to the spatially-aggregated trace {S} × T and results in a order-consistent partition P(T ) that divides the temporal dimension into periods where the state proportions are temporally-homogeneous. Then, the partition P(S × T ) = P(S) × P(T ) is used to aggregate the set of microscopic spatiotemporal areas S × T .

Although the resulting aggregated representation is better in terms of information content than the one presented in Fig. 3.b (in particular, the temporal partition is much more tuned to the microscopic data), this technique suffers from two severe limitations. Firstly, the spatial algorithm computes an optimal partition of S without taking into account any temporal information (and conversely for the temporal algorithm). Hence, the state proportions may be averaged in such a way that the information content of the two unidimensional datasets S × {T } and {S} × T is lower than the one of the spatiotemporal dataset S × T (for further investigation, the mutual information would be an adequate measure to quantify this information loss). Secondly, and more generally, some spatiotemporal patterns cannot be expressed as the Cartesian product of two unidimensional partitions: H(S) × I(T ) ⊂ A(S × T ). Fig. 3.d gives examples of such patterns: T (1,2) is homogeneous in time and heterogeneous in space; T [START_REF] Elmqvist | Hierarchical Aggregation for Information Visualization: Overview, Techniques, and Design Guidelines[END_REF][START_REF] Pillet | Paraver: A tool to visualize and analyze parallel code[END_REF] is homogeneous in time and heterogeneous in space except for cluster S A ; T (6,7) is homogeneous in time and in space (at the cluster level); T (8) is fully homogeneous in time and in space; and within T (9,20) : S A is homogeneous in space and heterogeneous in time; S B is homogeneous in space and in time; S C contains more complex imbrications of homogeneous and heterogeneous spatial and temporal patterns. In order to overcome this limitation, the next subsection proposes a spatiotemporal algorithm that directly compute an optimal partition of A(S × T ).

E. Our Spatiotemporal Aggregation Algorithm

Data Structure: In the aforementioned spatial aggregation algorithm, the hierarchy H(S) is stored as a tree data structure such that each node corresponds to a hierarchical part S k . In the temporal aggregation algorithm, the set of intervals I(T ) is stored as a upper triangular matrix such that each cell [i, j] corresponds to an interval T (i,j) [START_REF]A Generic Set Partitioning Algorithm with Applications to Hierarchical and Ordered Sets[END_REF]. The spatiotemporal aggregation algorithm we propose mixes these two data structures such that the set of spatiotemporal areas A(S × T ) = H(S) × I(T ) is stored as tree of upper triangular matrices such that each cell [i, j] of each node corresponds to an area (S k , T (i,j) ).

Data Input: We represent the data related to the spatiotemporal area (S k , T (i,j) ) as follows:

• the information loss: node.loss[i, j] = loss(S k , T (i,j) );

• the data reduction: node.gain[i, j] = gain(S k , T (i,j) ). some intermediary data required to compute the loss and the gain (see Eq. 2 and 3):

• the aggregated proportions: ∀x ∈ X, ρ x (S k , T (i,j) );

• the sum of the state proportions of the underlying areas: ∀x ∈ X, (s,t)∈(S k ,T (i,j) ) ρ x (s, t); • the sum of the "Shannon information" of these proportions: ∀x ∈ X, (s,t)∈(S k ,T (i,j) ) ρ x (s, t) log 2 ρ x (s, t); and some other intermediary data required to compute the aggregated state proportions (see Eq. 1):

• the number of underlying resources: |S k |;

• the total duration of the time period: t∈T (i,j) d(t);

• the time spent in each state by the resources during this time period: ∀x ∈ X, (s,t)∈(S k ,T (i,j) ) d x (s, t). The computation of these input data is not detailed here since it consists in the direct application of Eq. 1, 2, and 3. Iterations over the cells of the matrices, from the first line to last one, and nested in a tree recursion, from the leaves to the root, allow to compute these data in time O(|S||T | 2 |).

Data Output: Any partition P(S × T ) ∈ A(S × T ) can be represented as a sequence of nested cuts of the spatiotemporal areas in A(S × T ). We distinguish spatial cuts, when the area (S k , T (i,j) ) is partitioned according to the immediate lower level in the hierarchy {(S k1 , T (i,j) ), . . . , (S kq , T (i,j) )}, where S k1 , . . . , S kq are the children of S k , and temporal cuts, when the area is partitioned into two intervals {(S k , T (i,cut) ), (S k , T (cut+1,j) )}, where i ≤ cut < j. Note that a sequence of cuts uniquely defines a partition P(S × T ), whereas a given partition may be expressed according to different sequences. Hence, our spatiotemporal aggregation algorithm recursively computes, for each cell of each node of the data structure, a cut value corresponding to a step in the sequence of cuts defining an optimal partition of the corresponding area:

• node.cut[i, j] = -1 indicates a spatial cut;

• node.cut[i, j] ∈ {i, . . . , j -1} indicates a temporal cut (the integer then gives the index of the microscopic time period where the cut occurs); • node.cut[i, j] = j indicates that (S k , T (i,j) ) is an aggregate of the partition ("no cut" case). After the algorithm execution, the resulting optimal partition is thus recovered by looking at the sequence of cuts beginning from (S root , T (0,|T |-1) ) and looking at the underlying areas until each aggregate of the partition have been reached. In order to compute these cut values, the algorithm also computes node.pIC[i, j], which is the value of the information criterion of an optimal partition of (S k , T (i,j) ).

Algorithm Description: The spatiotemporal algorithm computes the optimal cuts depending on the optimal partitions of the underlying areas. It consists in cell-iterations to find temporal cuts, nested in a depth-first search of the hierarchy to find spatial cuts. Recursion: For each spatiotemporal area (S k , T (i,j) ), the pIC of the corresponding aggregate (see Eq. 4) is compared to the sum of the (previously-recursivelycomputed) pIC of the optimal partitions of the children of S k (sum of child.pIC[i, j]). A spatial cut is detected if the former is lower than the latter. Iteration: For each possible cut ∈ {i, . . . , j -1}, the pIC is then compared to the sum of the (previously-iteratively-computed) pIC of the optimal partitions of (S k , T (i,cut) ) and (S k , T (cut+1,j) ). A temporal cut is detected if one of these pIC is higher than the others. This way, all possible cuts are evaluated, and so are all possible partitions. Fig. 3.d and 3.e present two resulting optimal partitions computed by the algorithm for two different values of the gain/loss ratio parameter (p d < p e ). Each spatiotemporal area of these partitions is then homogeneous relatively to the corresponding description level.

Algorithmic Complexity: Since each cell of each node contains a bounded number of data, the spatial complexity of the algorithm is O(|S||T | 2 ). The overall time needed for the detection of spatial cut is linear with the number of nodes in the hierarchy (one addition and one comparison for each node). Given a node, for each cell [i, j] of that node, with 0 ≤ i ≤ j < |T | -1, the algorithm performs ji detections of possible temporal cut (each in bounded time). Hence, a total of

|T |-1 k=0 i (|T | -i) = O(|T | 3 ) detections
are performed for each node and the overall time complexity of the spatiotemporal aggregation algorithm is O(|S||T | 3 ).

Algorithm 1 computes a hierarchy-and-order-consistent partition that maximizes the parametrized information criterion procedure node.COMPUTEOPTIMALPARTITION(p) for each child do ⊲ Recursion child.COMPUTEOPTIMALPARTITION(p)

for i = |T | -1, . . . , 0 do ⊲ Iteration for j = i, . . . , |T | -1 do cut[i, j] ← j ⊲ No cut pIC[i, j] ← p.gain[i, j] -(1 -p).loss[i, j] if has children then ⊲ Spatial cut? pICs ← 0 for each child do pICs ← pICs + child.pIC[i, j] if pICs > pIC[i, j] then cut[i, j] ← -1 pIC[i, j] ← pICs for cutt = i, . . . , j -1 do ⊲ Temporal cut? pICt ← pIC[i, cut] + pIC[cut + 1, j] if pICt > pIC[i, j] then cut[i, j] ← cutt pIC[i, j] ← pICt
IV. VISUALIZING THE ALGORITHM OUTPUT Figures 3.d and 3.e, which correspond to the algorithm output for different values of the gain/loss ratio p, meet criteria G2 (aggregates show homogeneous state proportions), G3 (rectangles are clear and simple), G4 (we easily distinguish aggregates from microscopic data thanks to their size), G5 (complexity reduction and information loss are provided to the user to indicate how far the representation is from the microscopic model), and G6 (aggregation is interpreted as a process to detect spatiotemporal areas with homogeneous behavior). M1 and M2 are also fulfilled (both dimensions are represented; the aggregation process handles them symmetrically and simultaneously).

However, these representations only deal with microscopic models that contains only two possible states (|X| = 2). When it contains more (|X| > 2), showing all the corresponding state proportion within a given area may introduce a visual clutter (G3). In order to keep providing useful information (G2), we first associate a color col x to each state x ∈ X. Then, each aggregate (S k , T (i,j) ) represent the state mode, i.e., the state color that has the highest proportion: x max = arg max x∈X ρ x . Last, we also provide information regarding the state mode proportion by applying transparency α during the rendering to change color intensity: 1 shows the result of this choice. Three state modes MPI_init (yellow), MPI_send (green) and MPI_wait (red) are visible.

α = ρ xmax / x∈X ρ x ∈ [1/|X|, 1]. Figure
When the number of resources |S| is greater than the amount of pixels in the spatial axis, the visual entity budget is not respected for the microscopic representation and may also be problematic for small spatial aggregates (G1). We use visual aggregation (during rendering) to maintain this budget: if an aggregate has a visual height inferior to a threshold (in pixels), its parent is drawn instead. Figure 3.f shows the difference between data and visual aggregation.

Visually-aggregated areas are marked differently (G4): by a diagonal line, if underlying resources have the same temporal data partitioning, or by a cross, on the contrary.

V. EXPERIMENTAL VALIDATION WITH THE NASPB

We validate Ocelotl with the CG and LU parallel algebraic applications of the NAS Benchmark [START_REF] Bailey | The NAS parallel benchmarks[END_REF]. We run them with various settings on different sites of Grid'5000 1 and we trace the MPI function calls with Score-P2 . The resource hierarchy is as follows: cores (up to 900) are grouped by machines (8 to 97 machines), which are grouped by clusters (1 to 3 clusters), that are finally grouped by site. During the execution, each MPI process is bound to a core. Table II shows the execution settings of four scenarios, with data about the generated traces, and the computation times with Ocelotl (these times are obtained on a PC with 4 cores Intel Xeon CPU E3-1225 v3 at 3.20 GHz, 32 GB DDR3, 256 GB SSD). The microscopic model is each time composed by 30 timeslices. We present cases A and C where an undesired behavior of the application has been detected by the aggregation algorithm. Cases B and D are used only to provide information on analysis computation times.

A. Highlight a Temporal Perturbation on a Small Use Case

We start by a small use case of 64 cores to show the result without visual aggregation. Our objective is to determine the temporal behavior of an application when it is expected to be regular. We also wish to compare the process behavior over the space dimension. NASPB-CG is frequently used to evaluate machine performance [START_REF] Bailey | The NAS parallel benchmarks[END_REF]. It solves an unstructured sparse linear system by the conjugate gradient method. It tests irregular long distance communication and employs unstructured matrix multiplication. We run CG, class C, on 64 cores (8 per machine), on the Parapide cluster of Rennes site (Table II, case A). Since the nodes have Infiniband cards MT25418, we expect regular and quick communications.

Figure 1 shows the visualization provided by Ocelotl using the spatiotemporal aggregation algorithm for case A. We easily distinguish an initialization phase, composed by MPI_init function calls, represented by the algorithm as a unique spatiotemporal data aggregate (all clusters, from 0 s to 1.6 s). This phase is followed by two spatially-aggregated time periods (from 1.6 s to 1.9 s and from 1.9 s to 2.2 s), corresponding to a transition into the computation phase. In this first phase, the aggregation thus highlights that the resources have approximately the same behavior. On the contrary, the computation phase (2.2 s -9.5 s) is represented by temporal aggregates globally showing a regular behavior through time for each resource, but are different among the resources. Each 8-core machine has a process dedicated to MPI_wait function calls while the others are mainly running MPI_send. We also detect a perturbation around 3s after the application start. It is visualized as disruptions in the temporal aggregation of 26 processes. By analyzing this time period with a traditional Gantt chart, we discover that some MPI_send and MPI_wait last longer than in the rest of the trace, contradicting our expectations. Even with exclusive access to the nodes, the other machines of the cluster might be allocated to other users during the experience. The network is therefore a point of contact among experiments, inducing local perturbations. By running several executions with different settings (site, clusters), this anomaly appears occasionally, and never at the same moment in the trace.

Henceforth, Ocelotl easily detects temporal perturbations that would be difficult to detect with traditional analysis techniques such as statistics, because the size of the effect is sufficiently small to not affect the total execution time. We are also able to acknowledge the fact that all processes are not equally impacted by the perturbation, and gives a detailed list of those who significantly are. This would not be possible with the approach of previous work [START_REF] Dosimont | A Trace Macroscopic Description based on Time Aggregation[END_REF], [START_REF]Building the Best Macroscopic Representations of Complex Multi-Agent Systems[END_REF].

B. Scalability of the Analysis on a Multi-cluster Application

The goal here is to show the scalability of our technique on a 218 million-event and 700-process trace. We wish to confirm that our aggregation still gives relevant information on temporal and spatial dimensions despite the quantity of data contained in the trace. Since the hardware where the application is executed is heterogeneous, we expect to find this characteristic on the spatial behavior. LU, for Lower-Upper Gauss-Seidel solver, solves a synthetic system of nonlinear PDEs, employing an algorithm that involves a symmetric successive over-relaxation (SSOR) kernel [START_REF] Bailey | The NAS parallel benchmarks[END_REF]. We run LU, class C, on 700 cores heterogeneously distributed between three clusters of the Nancy site (Table II, case C). The hardware is heterogeneous. In particular, the Graphite cluster has 10 Gigabit Ethernet cards and 16 cores per machine, whereas the two other clusters have Infiniband-20G interconnects, and 4 cores (Graphene) or 8 cores (Griffon) per machine.

Figure 4 shows an initialization phase (MPI_init, 0 s-17.5 s) followed by a spatially-heterogeneous phase containing MPI_Allreduce function calls. The computation phase starts at almost 20s and shows a curious behavior. The three clusters are separated by the aggregation algorithm. The temporal and spatial behavior of the Graphene cluster is homogeneous over the whole computation phase. On the contrary, the Graphite nodes are all spatially separated. The diagonal line indicates that even when visually aggregated, the behavior of these processes is heterogeneous. Last, we see a strong rupture at 34.5s in Griffon, whereas the rest of the computation phase is spatio-temporal aggregated.

Several trails can explain these phenomena. We first suspect the slower Graphite network (Ethernet) to hinder the communications. By zooming in on the Gantt chart, we detect frequent long MPI_wait and MPI_send with irregular patterns. We rely this behavior to the network performance. Regarding the temporal perturbation of the Griffon cluster, we also detect that two machines are blocked twice in a MPI_wait and two others are simultaneously blocked in MPI_send. For this second case, the cluster internal network is accessed through Infiniband, and we do not expect bad communication performance. Moreover, Griffon was completely allocated to us during the program execution. By investigating, we have discovered that Griffon switches are shared with other machines that are not accessible for Grid'5000 normal users. However, these machines are active and they access the network. A concurrency phenomenon may explain this temporal perturbation.

Hence, Ocelotl enables to detect, within a very large trace (218 million of events), a spatial and temporal abnormal behavior that we were unable to show with other tools (as Gantt charts) for performance reasons. Ocelotl manages correctly the visualization of a high amount of resources (700 cores), and the aggregation still stays precise despite the high quantity of information contained in the trace.

VI. CONCLUSION AND FUTURE WORK

We have presented a visualization technique, based on a spatiotemporal aggregation, which provides a macroscopic description of a trace and can be used as an entry point to the analysis. We fulfill criteria [START_REF] Elmqvist | Hierarchical Aggregation for Information Visualization: Overview, Techniques, and Design Guidelines[END_REF] that define a good quality overview, and keep representing spatial and temporal dimension by using an aggregation that involves them coherently. We present two use cases that highlight the efficiency of our technique to synthesize the trace behavior of realistic application executions. A small use case shows a temporal perturbation in a MPI application, typical of a concurrency situation to access the network, but difficult to find with statistical methods. A larger one, with 700 processes and 218 Graphite, S C : Griffon). We mainly distinguish an initialization sequence (0-20 s), followed by the computation phase, where the behavior of the Graphite cluster is heterogeneous in space and time, and there is a perturbation that touches only the execution of the Griffon cluster (34.5 s).

million events, demonstrates the scalability of our approach by highlighting the influence of the hardware characteristics on the process behavior. We also detect a temporal perturbation caused by machines that were hidden to the user. For this case, the tool we have designed enables to keep good performance: a 50 min preprocess is needed to load this large trace, but then, we provide an instantaneous interaction to get the visualization at a given aggregation level.

Our future work is focused on the improvement of our visualization to go further to fulfill the overview criteria: in particular, we are interested in conveying more information with the aggregates that compose our visualization, and we foresee to use interaction solutions to retrieve data such as the proportion of all the active states. We consider that our usage of the transparency could be improved to better differentiate states, since its effect on the user is dependent on the colors that are employed. Solutions using different color spaces, as YCbCr, could be employed.

Figure 2 .

 2 Figure 2. Example of a Gantt chart trying to represent the trace visualized in Figure 1. Even for a temporal subset of this trace (1/7), the visualization is cluttered because of the large amount of objects and rendering artifacts.

T ( 6 , 10 )

 610 T (11, 15) T (16, 20) b. A non-optimal spatial and temporal aggregation (3 clusters and 4 time periods) T (1, 2)

Figure 4 .

 4 Figure 4. Ocelotl overview of the MPI application LU, class C, 700 processes, executed on the Nancy site of Grid'5000 (S A : Graphene, S B :Graphite, S C : Griffon). We mainly distinguish an initialization sequence (0-20 s), followed by the computation phase, where the behavior of the Graphite cluster is heterogeneous in space and time, and there is a perturbation that touches only the execution of the Griffon cluster (34.5 s).

  Fidelity. Aggregates does not lie about the size of an effect.

• G1. Entity budget. The visual entity number is limited and entity size is big enough to avoid visual clutter. • G2. Visual summary. Visual aggregates convey information about the underlying data. • G3. Visual simplicity. Aggregates are clean and simple. • G4. Discriminability. Aggregates are distinguishable from data items. • G5. • G6. Interpretability. The aggregation process is inter-

Table I

 I SPATIO-TEMPORAL SCALABILITY TECHNIQUES IMPLEMENTED IN TRACE ANALYSIS TOOLS. THE GX ARE ELMQVIST AND FEKETE CRITERIA [3], MX ARE OUR SPATIOTEMPORAL CRITERIA. A CRITERION MIGHT BE SATISFIED: ONLY FOR TIME (⋆), SPACE (•), OR FOR BOTH DIMENSIONS (•)

	Visualization	Technique	Tools	G1 G2 G3 G4 G5 G6 M1 M2
	Gantt Chart	Pixel-guided (⋆), No aggregation (•)	Vampir [4], Paraver [5] [6]	⋆ • •	•
	Gantt Chart	Visual Aggregation (⋆), No aggregation (•)	Pajé [7], LTTng Eclipse Viewer [8]	⋆	• • • • •
	Gantt Chart	Time compression (⋆), Hierarchical aggregation (•)	KPTrace Viewer [9]	•	•	• •
	Gantt Chart	Time abstraction (⋆), No aggregation (•)	Jumpshot [10]

  3 clusters and 6 time periods)

	S	S A S B S C	s 1 s 2 s 3 s 4 s 5 s 6 s 7 s 8 s 9 s 10 s 12 s 11
			t1	t6	t9	t14	t19	t1	t6	t9	t14	t19	t1	t6	t9	t14	t19
					T					T					T
			d. An optimal spatiotemporal aggregation		e. A higher-level spatiotemporal			f. Visual aggregation of 3.d (21 data
				(56 spatiotemporal areas)			aggregation (15 spatiotemporal areas)		aggregates and 7 visual aggregates)

Figure 3. Aggregation and visualization of an artificial trace giving the behavior of 12 resources during 20 microscopic time periods (two possible states)

and a time period (s, t) ∈ S × T , for each state x ∈ X, we mark d x (s, t) ∈ R + the total time spent in state x by s during t. We also mark ρ x (s, t) = d x (s, t)/d(t) ∈ [0, 1] the proportion of time spent in state x relatively to the period duration. Fig.

3

.a presents such a trace with |S| = 12 resources, |T | = 20 microscopic time periods, |S × T | = 240 spatiotemporal areas, and |X| = 2 possible states with proportions ρ 1 and ρ 2 . For any resource s and time period t, the intensity of the corresponding square gives ρ 1 (s, t) = 1ρ 2 (s, t).

https://www.grid5000.fr/mediawiki/index.php/Special:G5KHardware

http://www.vi-hps.org/projects/score-p


Hippolyte D'albis

Carole Bonnet
email: carole.bonnet@ined.fr

Julien Navaux
email: julien.navaux@dauphine.fr

Jacques Pelletan
email: jacques.pelletan@univ-paris8.fr

Hector Toubon
email: hector.toubon@gmail.com

François-Charles Wolff

M Ben Jelloul

P. -Y Cusset

R Lee

A Mason

C Patxot Cardoner

V Wisnia-Weil

The lifecycle deficit in France, 1979-2005 #

We use the National Transfer Accounts methodology to calculate the lifecycle deficit in France for the years 1979-2005. During this period, consumption profiles were roughly constant over age, while labor income profiles shifted to higher ages. The share of the aggregate lifecycle deficit in GDP rose sharply in the 1980s due to an increase in the mean age of the population. In contrast, the per capita shares of the lifecycle deficit attributed to the population under 20 and over 60 varied little during this period, even though the relative weights of these two age-segments has shifted continuously in favor of the latter.

Introduction

The intergenerational distributions of income and public resources are recurring issues in national public debates. In France, the economic slowdown, growth of public debt, and uncertainty regarding the long-term sustainability of the pay-as-you-go pension system take center stage in intergenerational debates. Some authors suggested an increasing inequality between generations over the last decades, articulating the emergence of so-called "golden" generations that benefited from economic growth between 1950 and 1970 and who did not modify their consumption behaviors after the economic slowdown at the expense of later generations [START_REF] Chauvel | Le destin des générations, structure sociale et cohortes en France au XXe siècle[END_REF][START_REF] Kotlikoff | The clash of generations[END_REF]. It is however difficult to compare the situation of individuals of different ages as the entire lifecycle profile should be taken into account. Moreover, the low income level of young workers compared to those of senior workers or even retirees may be offset by, for instance, downward family transfers.

A detailed picture of the various economic flows between ages over the life course seems then very useful to better ground this debate. To compare the welfare of successive generations, [START_REF] Auerbach | Generational accounts: A meaningful alternative to deficit accounting[END_REF] have originally proposed to study the inter-temporal government budget constraint. Generational accounting considers how much each generation, on a per person basis, is expected to pay in future taxes net of transfer payments, over the life course. Such exercise has been completed at the beginning of the 2000s in France. [START_REF] Bonnet | Comptabilité générationnelle appliquée à la France : quelques facteurs d'instabilité des résultats[END_REF] and [START_REF] Accardo | Une étude de comptabilité générationnelle pour la France en 1996[END_REF] conclude that if tax and social policies remained constant an intergenerational imbalance would emerge. These studies also warned about the fact that the magnitude of this imbalance is highly sensitive to the assumptions made.

The National Transfer Accounts (NTA) method of [START_REF] Lee | Population aging and the generational economy: A global perspective[END_REF] provides a more thorough accounting of age-specific resource allocation. An informative index falling out of this method is the lifecycle deficit, which is defined as the difference at each age between consumption and labor income. When the deficit is positive, this means that labor resources are not sufficient to cover consumption needs. Of special interest are the two ages at which the consumption and income age profiles intersect. Once the lifecycle deficit is computed, the next step is to assess the reallocation of resources between age groups and to investigate how the lifecycle deficit is funded. From a public policy perspective, the lifecycle deficit and its evolution over time is a powerful tool to highlight the potential imbalances between the various age groups.

In this article, we present lifecycle deficit estimates for France according to NTA methodology.

The originality of our study is the time window since we cover the period ranging from 1979 to 2005. This allows us to determine how the profiles have evolved over more than two decades as the result of both economic changes and changes in the age structure of the French population with the advance of the baby-boom generation. This time-perspective is coupled with a comparative approach to other countries for which NTA accounts have been implemented in order to highlight any specifics in France.

The primary advantage of a study covering a long period is that it reveals the constants that structure society. In particular, we find that the allocation of consumption between ages has remained relatively unchanged over the period. The total consumption profile is relatively stable after 17 years, although substitutions between private and public consumption take place at different ages. Interestingly, the share of lifecycle deficit per capita in the GDP has held roughly constant both for the young and the elderly during this period. These developments may reflect a certain social preference for equality in terms of consumption between ages in France.

However, the gap between shares received by the elderly and by the young has steadily increased, reflecting the increasingly predominant weight of the elderly in French society. This paper is presented as follows. Section 2 describes the methodology and data sources used to construct the consumption and income profiles by age. The results obtained for year 2005 are subject to a detailed analysis in Section 3, including an international comparative perspective. Section 4 explores the changes in both the income and consumption profiles between 1979 and 2005 and analyzes changes in the balance between large age groups. Section 5 provides some concluding remarks.

Construction of consumption and income profiles by age

Consumption and labor income profiles for France were constructed following the NTA methodology, as described in the latest version of the Reference Manual (UN, 2014). This is based on the combination of two elements: survey data to determine the age profiles for the selected flows (i.e. private consumption, public consumption and labor income), and aggregates calculated from the national accounts to adjust the results from survey data so as to sum to the total flows in the economy for a given year.

For private consumption, the age profiles are composed of three parts: education expenditure, health expenditure, and other expenditures including imputed rents. These components are obtained from the Family Budget surveys (Enquêtes Budget des Familles) which are conducted at regular intervals in France (1978-1979, 1984-1985, 1989, 1994-1995, 2000-2001, and 2005-2006) on a sample of approximately 10,000 households. These surveys describe the structure of household expenditures on the basis of similar questionnaires over the period, which ensures comparability of our results between surveys.

Private education and health profiles are obtained by regression methods. For education, household consumption is assumed to be a function of the number of enrolled household members of each age ranging from 2 to 28. The regression coefficients are then used to allocate the education expenditure to each member within the household (see NTA manual for further details). Given data constraints, household health expenditure is assumed to be a function of the number of household members in each five-year age group7 , except for the first year of life (age 0) which is treated separately. Concerning other consumption, the allocation by age is determined according to the piecewise linear profile suggested by Lee and Mason (2011, p. 62), which is based on age-specific contributions within the household. The weight is 0.4 for young children till age 4, then it increases linearly from age 4 to age 20, and is equal to 1 for adults aged 20 and older.

Public education consumption profiles are calculated for each year from the French Education Account (Compte de l'Éducation), a satellite of the national accounting system. The data used to determine the number of students at each age and level of education (primary, secondary and tertiary) are taken from the National Institute of Statistics (INSEE) and the Ministry of National Education (Ministère de l'Éducation Nationale). It is assumed that individual public consumption is the same for all students of a given level. Public health expenditure profiles are estimated using data from the French Permanent Sample of National Insurance Beneficiaries (Echantillon Permanent d'Assurés Sociaux), based on a sample of nearly 80,000 insured persons under the scheme for employees for the years 2000, 2002, 2004and 2006. For the years 1992[START_REF] Chauvel | Le destin des générations, structure sociale et cohortes en France au XXe siècle[END_REF] data are taken from Health and Social Protection Surveys (Enquêtes Santé et Protection Sociale), which are subsamples of the above sample. Those samples do include institutionalized persons.

Other public consumption expenditures (defense, justice, etc.) are distributed uniformly over the population, resulting in an age profile that is then assumed to be constant.

Age profiles of labor income (sum of wages, self-employed incomes and payroll taxes) are constructed from the Family Budget Surveys.

Once calculated, each profile is smoothed across ages using the [START_REF] Friedman | A variable span scatterplot smoother[END_REF] method recommended in the NTA methodology (UN, 2014, Appendix B, p. 159-164). Because not all profiles are available for each year between 1979 and 2005, we interpolate the values for all ages in missing years using polynomial functions. Specifically, we rely on cubic functions which are flexible enough to get accurate values for the missing indicators. The only exception is the age pattern of public health expenditures. Since no data are available before 1992, we take the age-specific mean of the profiles computed for 1992 and 1998 for all years prior to 1992.

For each year of the period considered, National Accounts data for France are used to calculate the NTA accounting identity, according to which the sum of consumption, saving and net transfer outflows is equal to the sum of labor income and asset income (UN, 2014, p. 29). The aggregate counterpart for the income of the self-employed is derived using the method proposed by [START_REF] Askenazy | Le partage de la valeur ajoutée[END_REF], which is based on decomposition by sectors. Within each sector considered, this method assigns the average labor income observed among employees to the self-employed. The resulting breakdown of Gross Mixed Income differs from the 1/3 -2/3 rule typically used in NTA to separate the share of capital and labor in total earnings. For the selfemployed, we determined that the share of labor earnings fluctuated between 0.59 and 0.83 over the period considered in France. Finally, each age profile is readjusted based on the corresponding aggregate.

Consumption, labor income and lifecycle deficit in 2005

In this section we present a decomposition of the lifecycle deficit for the year 2005 in France.

Figure 1 represents the per capita age profiles of total consumption, defined as the sum of private and public consumption, and labor income.

Compared to the age profiles of the various countries examined by [START_REF] Tung | Consumption over the lifecycle: an international comparison[END_REF], the total consumption profile for France shows a special feature: it appears relatively stable once adulthood is reached, especially after retirement. Indeed, the French consumption increases continuously until age 17, after which it stabilizes at between 18,000 and 24,000 Euros per year until the highest ages. In this respect, France differs from the United States and many other developed countries in which per capita consumption increases after age 60 or 65. A breakdown of the various components of total consumption by age provides additional insights on the French case.

Public and private consumption

In Figure 2, we present the decomposition of total consumption by selected public and private components. On the one hand, private consumption decreases significantly after age 60, by approximately 25% at age 80. Clearly, the age profile of private consumption is essentially driven by its "other" component since the contribution of the private health and private education components remains very small. On the other hand, public consumption is significantly higher at young and old age, respectively due to education and health. After 60, we note that health costs strongly increases with age as one would expect.

In the case of France, it is interesting to note that these changes in private and public consumption roughly balance each other, resulting in a profile which is remarkably stable through older ages. This contrast with the situation observed in Germany, Japan, Sweden or the United States, which are characterized by higher consumption at older ages. In these countries, the most significant component of rising consumption at old ages is public consumption, due to health care (Tung, 2011, p. 148-149). In the United States, the consumption growth at old ages over time is also due to the growth in private health care expenditures (Lee, Donehower and Miller, 2011, p. 318). While we observe a strong rise in public health expenditures increase in France, we do not see any substantial private health expenditures in older age groups. The rise in public health expenditures is offset by a significant decline in private consumption.

In France, public consumption accounts for 33.90% of total consumption (see Table 1). This is close to what is found in Finland (34.64% in 2004), but lower than in Sweden (42.37 % in 2003).

However, it is substantially higher than in most other developed countries, Germany, Spain, the United States and Japan being all around 26%. Public and private education expenditure represents 7.45%, which is rather in the average of high-income countries (7.64% in Spain, 8.37% in Austria, 7.43% in the United States). Health expenditure represents 12.29% of total consumption in France, which is also very close to the average of high-income countries: 10.18% in Austria in 2000, 13.05% in Germany, 13.08% in Japan, but 16.04% in the US and even 18.52% in Sweden. The significant contribution of other public expenditures at all ages is here an important result because it mechanically limits the growth of the contribution of public health consumption at older ages. We also note that in France, a large part of public expenses devoted to long-term-care is made of monetary transfers to dependent persons. As those transfers are of course not included in consumption, the profile turns to be flatter than of other countries. Finally, for total consumption, the ratios are 0.806 for the average consumption of the younger group and 1.083 for the elderly. This is largely explained by the fact that public consumption in France has an important weight relative to private consumption, which in general favors these age groups through education and health, respectively. Thus, it is not the age profile of average labor income that makes France unique, but rather the higher age at which labor income reaches its maximum. Another important finding is decline in average income just after the peak, which is much faster in France than in other European countries. An explanation is the relatively early exit age of older workers from the labor market. According to Eurostat, the average exit age from the labor force was 59 in France in 2005. This is two years younger compared to the European average exit age (61 years). This kind of profile is not found in the other countries for which the NTA method has been applied.

The average exit age from the labor force is for instance 63.6 in Sweden, 63.1 in Norway and 62.4 in Spain. The situation in France is more similar to that of Eastern European countries as Slovenia (58.5) or Hungary (59.8).

Lifecycle deficit

The difference between labor income and consumption profiles provides the lifecycle deficit by age. The intersection points between the labor and consumption curves corresponds to the two age thresholds that characterize passage between periods of deficit, during youth and old age when individuals consume more than they produce through labor, and periods of surplus during the working life when individuals produce more than they consume.

As shown by the per capita age profile presented in Figure 1, the ages at which the curves intersect are 26 years and 58 years, respectively. This means that on average labor income was higher than consumption during 32 years in 2005 in France. The duration of the surplus period has to be compared to the length of the two periods of deficit: 25 years during youth and 22 years during old age (the life expectancy was 80 years in France in 2005), so that the period of deficit includes 47 years. This means that for that specific year the number of years when people were consuming more than they were producing was 47% higher than that when people were producing more than they were consuming. Another result from Figure 2 is that the lifecycle deficit reaches its minimum at age 46.

Although each country is characterized by a unique set of consumption and income profiles, these threshold ages differ little in France from those of other countries surveyed. In general, the first age threshold is between 24 and 27 years, with some exceptions. For China and Austria, characterized by early entry into the labor market, labor income exceeds both public and private consumption at age 20. Conversely, this age is higher for Mexico and Brazil. In Senegal, surplus does not occur until age of the great difficulty experienced by younger generations to enter the labor market [START_REF] Dramani | Estimating the First Demographic Dividend in Senegal: The National Transfers Account Approach[END_REF].

The second age threshold, 58 years in France, is again very similar to that found in other countries with NTA accounts. The second period of deficit begins at ages between 53 and 59 depending on countries. However, some exceptions appear as in Sweden where the age is 63 years, which is explained by a higher average exit age from the labor force. Overall, the length of the period of surplus in France (32 years) exceeds that of Germany (31 years), but it is substantially lower than that observed in the United States (34 years), Japan (34 years), Austria (36 years) and Sweden (38 years).

Persistence and changes during the period 1979-2005

Labor income, consumption, and lifecycle deficit

To date, very few countries have applied NTA methodology to a time series, the United States [START_REF] Lee | The changing shape of the economic lifecycle in the United States, 1960 to 2003[END_REF] and Sweden [START_REF] Lindh | Backcasting National Transfer Accounts in Sweden from 1800 to 2009[END_REF] being noticeable exceptions. We now discuss results obtained from the whole sets of Family Budget surveys, covering the period from 1979 to 2005. In a context characterized by many societal changes that are expected to influence the duration of the periods of surplus and deficit over the life course, such as significant gains in life expectancy and an increase in the average duration of studies, we expect that the earlier-discussed threshold ages to have changed.

In Table 2, we report key statistics summarizing the main characteristics of the age profiles for total consumption and income in France over the last three decades. In Figure 3 Two effects have to be taken into consideration to understand this paradox. Labor income depends on both the fraction of the population in the labor market and on the income earned.

During the period, there has been a significant reduction in the share of employed senior workers, particularly due to the various measures implemented for earlier retirement in the early 1980s. This is why we first observe a decrease in the average age, from 42.50 years in 1979 to 41.24 years in 1984, and then an increase to 42.23 years in 1994. Since then, this age has changed very little.

We have also calculated the average age at which one euro is earned in France in a given year. By definition, the evolution of this age over time depends on both the age profiles and age structure of the population. To isolate the effect of changes in the age profile, we follow the strategy suggested by [START_REF] Lee | The changing shape of the economic lifecycle in the United States, 1960 to 2003[END_REF] which consists of weighting a given labor income profile by a standard population age structure. We apply this method for France using the 2005 population as reference.

Neutralization of the effect of the change in the demographic structure does not meaningfully change the average age at which one euro is earned. Changes remain very small over the period, from 41.75 years in 1979 to 42.04 in 2005. In comparison, the average age has increased by nearly two years over the same period for the United States [START_REF] Lee | The changing shape of the economic lifecycle in the United States, 1960 to 2003[END_REF].

From 1984 to 2005, the average age in France has increased by 1.17 years, still below that found in the United States. At the same time, displacement of the age when income is at its maximum is much more pronounced in France than in the United States where the movement is about five years (half that observed in France). The stability in France may be seen as the result of the decline in employment of older workers despite a sharp increase in the age when income reaches a peak. The movement observed over the period is the result of both a stable profile of average total consumption and an increase in the age when labor income is at its maximum.

These changes have also to be considered alongside the improvements in mortality observed during this period. In France, life expectancy has increased from 78.3 years for women in 1979 (70.1 for men) to 83.9 years in 2005 (76.8 for men). For both males and females, much of this increase in life expectancy was due to mortality improvements in ages 60 and higher (52% for males and 68% for females). From 1994 to 2005, life expectancy at birth has increased by 2 years for women and 3.1 for men while the number of years of surplus has remained constant (at 32 years).

In summary, between 1979 and 2005 the length of the period of surplus has decreased while the duration of the period of deficit has increased, with an increase in survival especially at old ages.

As a consequence, the reduction of the productive period and increases in life expectancy has led to an increase in the aggregate lifecycle deficit, which takes the age structure of the population into account. This aggregate value is obtained by summing the value of the lifecycle deficit per capita obtained at each age by the number of people alive at each age within the population. When comparing this value with the GDP of the same year, we find that in France the aggregate lifecycle deficit was only 0.47% of GDP in 1979, but 10.23% of GDP in 2005. This feature seems to be common to most high-income countries [START_REF] Mason | Labor and consumption across the lifecycle[END_REF], although the theoretical relationship between increased survival and deficit is not necessarily clear.

Resource allocation by age

Given the overall tightening of the income age profile and the shift of the age when income reaches its maximum, the relative stability of the consumption age profile must therefore result from redistribution between ages. Resources are expected to be redistributed from the baby boomers (active during the period considered) to the young and the elderly age groups. As a preliminary step, we calculate the total values of the deficit cumulated respectively for those under aged 20 and for those aged at least 60. In Figure 5, we present these cumulated deficits as a fraction of GDP for each year of the period using the interpolated profiles. Our main finding is that while the relative weight of deficit to GDP has steadily increased over the period for the older age group (from 7.5% in 1979 to 14.5% in 2005), it has conversely slightly decreased for the young age group (from 16.5% in 1979 to 14.5% in 2005).

Then, we account for the size of the population and divide the previous ratios by the number of individuals within each age group. As shown in Figure 6, the relative magnitude of the lifecycle deficit compared to GDP net of the population structure has varied less over the period, except in the beginning of the period for those aged 60 and over. This reflects the fact that the increase of the relative importance of the deficit for those aged 60 and more came for an important part from the growth of their population. The fact that the trends found both for the young and old age groups remain rather flat is remarkable given the significant political, economic and demographic changes that France has experienced during the last decades. Nonetheless, the increase in the ratio of the cumulated deficit per capita between the population aged 60 years and older and the younger ages (under 20) reflects the increasingly predominant political and social weight of the elderly in the French society.

Conclusion

In this paper, we highlighted some aspects of the interplay between population structure, lifecycle income and consumption in France between 1979 and 2005. We believe that establishing time series for NTA is important as it permits to see whether age profiles change over time and to reveal what phenomena are persistent in a given economy. The combination of various data offers a first glimpse at some fundamental characteristics of the French population and economy, which is of doubtless utility to the public debate on intergenerational welfare.

Although comparisons of the relative welfare between generations remain difficult, especially because of the multidimensional aspects of this question, the use of total consumption (both private and public) as a welfare indicator seems fruitful.

Implementation of the NTA methodology for France highlights both the relative equality of consumption between ages and an increase in consumption profiles (normalized to labor income of ages 30-49) over time, but the shift in favor of older persons does not seem as large as that observed in the United States. Moreover, the reduction in the period during which individuals consume less than they produce has not led to significant changes in reallocations that benefit the young and the elderly. Expressed as a percentage of GDP, the cumulative deficits for those respectively under age 20 and aged 60 and higher have remained roughly constant from 1979 till

  Figure 1. Per capita consumption and labour income profiles in 2005

  Figure 2. Per capita consumption profiles in 2005

Figure 5 .

 5 Figure 5. Ratio of cumulated lifecycle deficit to GDP, by age group

Table 1 .

 1 NTA estimates: France compared to a selection of countries ' calculations for France and NTA data for other countries (http://www.ntaccounts.org/)An alternative method to analyze the differences in consumption profiles between countries is to calculate the population-weighted mean age of consumption. The average age of an aggregate flow is constructed as: It can be thought of as the average age at which one euro is consumed within the population. This age therefore depends both on the per capital age profile and on the age distribution of the population. In France, the average age at which one euro is consumed within the population is 41.61 years (see Table1). This is quite close to the average of other highincome countries such as the United States (41.43 years) or Austria (40.81), but this age is significantly higher in Sweden (43.18) and Germany (44.96).However, the age-distribution of consumption can vary greatly for the same mean age of consumption. As emphasized in[START_REF] Tung | Consumption over the lifecycle: an international comparison[END_REF], it is revealing to compare the average consumption of the population under age 20 and the population aged at least 65 to that of persons aged 20-64. Regarding private consumption, the average consumption of those less than 20 years relative to those aged 20-64 is 0.514, while the average consumption of those aged at least 65 relative to those aged 20-64 is 0.946. Those ratios correspond to the average of high-income countries and are very close to those of Germany, Finland or Sweden).

	Country	France Germany Sweden Spain	Finland	Austria	United States	Japan
	Year of survey	2005	2003	2003	2000	2004	2000	2003	2004
	Health consumption (in %)	12.29	13.05	18.52	10.70	10.79	10.18	16.04	13.08
	Education consumption (in %)	7.45	4,87	12.65	7.64	7.56	8.37	7.43	6.85
	Public consumption (in %)	33.90	27.59	42.37	25.36	34.64	29.80	25.31	26.44
	Health consumption per capita: 0-19/20-64	0.384	0.547	0.521	0.552	0.614	0.428	0.432	0.516
	Health consumption per capita : 65+/20-64	2.325	2.593	6.177	2.658	2.598	2.331	3.154	3.860
	Private consumption per capita : 0-19/20-64	0.514	0.516	0.492	0.603	0.511	0.526	0.488	0.582
	Private consumption per capita : 65+/20-64	0.946	1.053	0.838	0.886	0.910	0.893	1.121	1.089
	Public consumption per capita: 0-19/20-64	1.609	1.489	2.193	1.808	1.547	1.899	1.744	2.187
	Public consumption per capita: 65+/20-64	1.461	1.676	2.819	1.579	1.535	1.506	2.273	2.265
	Total consumption per capita: 0-19/20-64	0.806	0.731	0.970	0.836	0.796	0.834	0.712	0.881
	Total consumption per capita: 65+/20-64	1.083	1.191	1.395	1.020	1.082	1.030	1.326	1.308
	Average age of consumption (aggregate prof.)	41.61	44.96	43.18	40.57	42.20	40.81	41.43	45.85
	Average age of income (aggregate prof.)	42.04	42.19	43.69	40.79	43.04	39.09	43.55	44.96
	Average age of income (per capita prof.)	42.36	42.44	43.84	42.65	42.66	39.72	45.77	45.16
	% of income before 20 (per capita prof.)	1.0	0.8	1.0	0.9	0.9	3.2	0.6	0.3
	% of income after 65 (per capita prof.)	1.3	0.7	1.9	1.6	1.0	0.5	7.5	3.5
	Age of maximal income (per capita prof.)	49	45	46	43	43	44	47	47
	LCD lower threshold age (per capita prof.)	26	27	25	25	26	20	26	26
	LCD upper threshold age (per capita prof.)	58	58	63	58	61	56	60	60
	LCD age of minimum LCD (per capita prof.)	46	45	45	43	43	44	46	47
	LCD nb of years of surplus (per capita prof.)	32	31	38	33	34	36	34	34
	Source: authors

The same ratios calculated for health expenditures are 0.384 for those under 20 and 2.325 for those aged 65 and over. As is usually observed, the bulk of health expenditures accrue to the elderly. This ratio for France tracks closely with most high-income countries (Germany, Spain, and Finland), even if a bit lower. For public consumption, the ratios are 1.609 and 1.461. While these figures are close to those of countries like Finland and Austria, they are nonetheless lower than those found for the United States (1.744 and 2.273),

Sweden (2.193 and 2.819)

and Japan (2.187 and 2.265). Public expenditure is clearly an important component of lifecycle consumption for both younger and older age groups.

  , we present the evolution of the labor income age profiles. As usual in NTA methodology, each profile is normalized by dividing income at each age by the sum of income earned for ages 30-49. The age at which labor income reaches a peak shifts by 10 years during the period, from 39 years in 1979 to 49 in 2005. As shown in Table2, this rise has been particularly pronounced from the mid-1980s till the mid-1990s, with a shift from 40 years to 47 years. During the whole period, the largest share of labor income has been increasingly captured by older workers cohorts born after World War II were getting older.

	Table 2. Key statistics over the period 1979-2005
	Year of survey	1979	1984	1989	1994	1999	2005
	Labor income
	Age of maximal income	39	40	43	47	48	49
	Average age to earn one euro	42.50	41.24	41.63	42.23	42.21	42.36
	Average age to earn one euro (weighted	40.23	39.36	39.82	40.64	41.18	42.04
	by pop.)
	Average age to earn one euro (pop. as of	41.75	40.87	41.30	41.91	41.95	42.04
	2005)
	Consumption
	Average age to consume one euro with	36.57	37.23	38.27	39.40	39.96	41.61
	population as of 2005
	Mean age to consume one euro -with	40.30	40.50	40.96	41.31	40.93	41.61
	constant population (2005)
	Lifecycle deficit
	Lower threshold age	23	24	25	26	26	26
	Upper threshold age	61	58	58	58	58	58
	Number of years of surplus	38	34	33	32	32	32
	Age of minimal LCD	40	41	42	45	45	46

Does this increase in the age when labor income is at its maximum have led to changes in the average age at which one euro is earned over the life course? Curiously, this average age has remained relatively stable over the period, from 42.

5 years in 1979 to 42.36 in 2005 (table 2

).

Normalized per capita labor income by age

  Changes in the consumption age profile are not similar to those of the income age profile. Over the period 1979-2005, the consumption profile has remained relatively stable across ages. We observe nevertheless a slight shift upward of the profile for people aged 60 and over compared to the younger population. This is different from what is observed for the United States for instance, which is instead characterized by a very strong growth in consumption of the elderly, driven primarily by public (and to a lesser extent private) health expenditure. At the same time, we find a global upward change in consumption curves over the period. This increase is related to the choice of normalizing the profile with the labor income earned by those aged 30-49 since the ratio of aggregate consumption to aggregate labor income among ages 30-49 has increased between 1979 and 2005.Again, we have calculated the average age at which one euro is consumed for each year, net of the role played by the population structure. In Table2, we see that this age has remained rather constant during the period. With the population of 2005 as reference, it has increased from 40.30 years in 1979 to 41.61 years in 2005. In comparison, the average age when one euro is consumed has increased by about one year in the United States during the same period.The change in the age profile of the lifecycle deficit results mechanically from the two trends explained above. The displacement of the two age thresholds over time entails a shortening of the period during which an individual is a net contributor (when the average level of labor income exceeds the average level of consumption). As indicated in Table2, the age at which the average individual moves from a deficit to a surplus has increased early in the period, from 23 years in 1979 to 26 in 1994. Since 1994, the lower threshold age has not changed. This postponement of when an individual produces more than he consumes must be linked to the extension of studies period and difficulties in entering the labor market for young adults in France. At the same time, the age at which the average individual fell back into a deficit decreased from 61 in 1979 to 58 in 1984, due to the combined effects of decrease in the legal retirement age from 65 to 60 years and an economic downturn. Since 1984, this threshold has remained invariant. As a consequence, the period of surplus has strongly decreased between 1979 and 1989, from 37 to 32 years, but it has remained fairly constant since then. Our findings clearly show a reduction of productive ages related to structural changes on the labor market. The range of productive ages has tightened around the age where the minimum of the lifecycle deficit is observed, which itself has moved significantly. The age corresponding to a maximum surplus has increased from 40 years in 1979 to 46 in 2005.

	0 0,4 0,6 0,8 1 1,2	0 Relative to per capita labor income for ages 30-49 5 10 15 20 25 30 35 40 Figure 3. 1979 1984 1989 Figure 4. Normalized per capita consumption by age 45 50 55 60 65 age 1994 1999	70	75 2005	80	85	90
		Relative to per capita labor income of 30-49 year-olds
	0,8
	0,7
	0,6
	0,5
	0,4
	0,3
	0,2
	0,1
	0
		0	5	10	15	20	25	30	35	40	45	50	55	60	65	70	75	80	85	90
											age
			1979		1984		1989		1994			1999		2005

Ratio of cumulated lifecycle deficit to GDP per capita, by age group (value for 1979 set to 1)

	0,8 0,9 1 1,1 1,2 1,3	Figure 6. 60 +	20 -	60 + / 20 -

This approach corresponds to the "simple regression approach" in the NTA manual. Indeed, there is no variable identifying which individuals are receiving health-care services.

20

2005. However, a comparison of the trends for the young and the old age groups show that the magnitude of the deficit has increased steadily for the latter. Updating our data thanks to the 2010-2011 survey soon available will shed light on how the relative situation of the old has evolved with the arrival of the baby boomers at retirement age since 2005. It could also give some elements on the differential impact of the 2008 crisis on ages.

comments and suggestions. Financial supports from the Commissariat Général à la Stratégie et à la Prospective and from the European Community's Seventh Framework Programme FP7/2007-2011 under grant agreement no. 613247 are gratefully acknowledged. H. d'Albis researches are supported by the European Research Council (ERC Starting Grant DU 283953) and the French National Research Agency through the program Investissements d'Avenir (ANR-10-LABX_93-01). The usual disclaimer applies.

Labor income

The average income age profile depends on several factors [START_REF] Lee | Labor income over the lifecycle[END_REF]. Resources at each age depend on the employment rate, working hours, the effect of seniority on wages, and more generally on the institutional, social, and cultural factors that influence the functioning of the labor market. In particular graduation and retirement ages set the start and end of individual labor income respectively, that the means of these two ages anchor the bounds of average labor income profiles.

France is characterized by a small proportion of total lifecycle income earned by persons under age 20 (1%) or ages 65 and over (1.3%). This is explained by a relatively long duration of education on average and by a relatively low senior employment rate. As shown in Figure 1, the income age profile may be divided into three main phases: a sharp increase from ages 20 to 35, then a slow growth with a peak at age 49, and finally a sharp decline until around age 60.

Average labor income reaches its maximum at a higher age in France than in other high-income countries. In the United States and Japan, countries also characterized by a relatively late peak, the maximum level of income is reached, on average, at around 47. Conversely, this threshold age equals 45 in Germany, 43 in Spain and even 44 in Austria. Does this mean that in France labor income is received later in the lifecycle? Paradoxically, this is not the case. For the hypothetical French person that would earn each year the average labor income profile found for 2005, one euro would be earned at age 42.36 on average. In comparison, the United States and Japan are characterized by significantly higher mean ages of 45.77 and 45.16, respectively. France is not really different from other European countries: 42.44 in Germany, 42.65 in Spain and 42.66 in Finland. If we consider instead the population-weighted average profile of labor income (which gives the average age at which one euro is earned in the country instead of the average age at which an individual earns one euro), the conclusion is not modified. The average age of income is 42.04 in France.