Brevet FR3076002A1 — publié le 20190628

PROCEDE D'AMELIORATION DU TEMPS D'EXECUTION D'UNE APPLICATION INFORMATIQUE DOMAINE DE L'INVENTION L'invention concerne un procédé d'amélioration du temps d'exécution d'une application informatique par la détermination d'un type de séquence temporelle d'accès mémoire générée par l'application informatique. CONTEXTE DE L'INVENTION Selon un premier art antérieur, par exemple présenté dans le document Input/Output Access Pattern Classification Using Markov Models (Tara M. Madhyastha et Daniel A. Reed, tiré du livre In proccedings of the Fifth Workshop on Input/Output in Parallel and Distributed Systems pages 57 à 67), il est connu un procédé de prédiction des séquences temporelles d'accès mémoire futures sur la base des séquences temporelles d'accès mémoire passées. Un premier inconvénient de ce premier art antérieur est d'être trop complexe pour pouvoir s'adapter aisément à une application informatique tournant sur un grand nombre de noeuds de calcul. Un deuxième inconvénient de ce premier art antérieur est d'être trop complexe pour pouvoir s'adapter aisément à une application informatique utilisant des séquences temporelles d'accès mémoire de type complexe. Selon un deuxième art antérieur, par exemple présenté dans le document I/O Acceleration with Pattern Detection (He, Jun and Bent, John and Torres, Aaron and Grider, Gary and Gibson, Garth and Maltzahn, Carlos and Sun, Xian-He, tiré du livre Proceedings of the 22Nd International Symposium on High-performance Parallel and Distributed Computing pages 25 à 36), il est connu un procédé de prédiction des séquences temporelles d'accès mémoire futures sur la base des séquences 2 temporelles d'accès mémoire passées. Un premier inconvénient de ce deuxième art antérieur est d'être trop rigide pour pouvoir s'adapter à une application informatique tournant sur un grand nombre de noeuds de calcul et susceptible d'utiliser plusieurs types de séquences temporelles d'accès 5 mémoire. Un deuxième inconvénient de ce deuxième art antérieur est d'être trop limité pour pouvoir s'adapter à une application informatique utilisant des séquences temporelles d'accès mémoire de type complexe. Selon un troisième art antérieur, par exemple présenté dans les documents U57676630 et U56789171, il est connu un procédé de prédiction 10 des séquences temporelles d'accès mémoire futures sur la base des séquences temporelles d'accès mémoire passées. Un premier inconvénient de ce troisième art antérieur est d'être trop rigide et trop limité pour pouvoir s'adapter aisément à une application informatique utilisant des séquences temporelles d'accès mémoire de type complexe. Un deuxième inconvénient 15 de ce troisième art antérieur est de devenir trop peu fiable dans le cas d'une application informatique utilisant des séquences temporelles d'accès mémoire de type complexe. RESUME DE L'INVENTION 20 L'invention propose un procédé d'amélioration du temps d'exécution d'une application informatique par prédiction des séquences temporelles d'accès mémoire futures sur la base des séquences temporelles d'accès mémoire passées, mais qui présente un meilleur compromis entre efficacité 25 de résultat et simplicité de mise en oeuvre, surtout dans le cas d'une application informatique utilisant des séquences temporelles d'accès mémoire de type complexe. L'invention propose de préférence un procédé d'amélioration du temps d'exécution d'une application informatique tournant sur un grand nombre de noeuds de calcul et susceptible d'utiliser 30 plusieurs types de séquences temporelles d'accès mémoire. 3 Pour cela, l'invention propose l'utilisation d'un modèle d'apprentissage, qui est préalablement paramétré à partir d'une base de données d'apprentissage comprenant plusieurs types prédéterminés de séquences temporelles d'accès mémoire, pour la réalisation de l'étape de 5 détermination du type de séquence temporelle d'accès mémoire, de préférence pour la réalisation de cette seule étape de détermination et de préférence pour la détermination seulement de ce type de séquence temporelle d'accès mémoire. Cela contribue à simplifier la mise en oeuvre, tout en garantissant l'efficacité du résultat, cette utilisation limitée du 10 modèle d'apprentissage se révélant suffisante. L'invention propose un procédé d'amélioration du temps d'exécution d'une application informatique, comprenant au moins un cycle comprenant : > une étape de détermination du type de séquence temporelle d'accès mémoire se déroulant lors de l'exécution de ladite 15 application informatique, > une étape de pré-chargement de données, à partir d'un système de fichier, vers un système de mémoire cache, en fonction du type de de séquence temporelle d'accès mémoire déterminé, caractérisé en ce que : 20 ladite étape de détermination est réalisée par un modèle d'apprentissage ayant été préalablement paramétré à partir d'une base de données de certains types prédéterminés de séquences temporelles d'accès mémoire. Ainsi, le temps d'exécution de l'application informatique est 25 grandement amélioré puisque les données à utiliser dans un futur proche ont déjà été chargées dans la mémoire cache, en particulier parce-que ce sont les bonnes données qui ont été chargées dans la mémoire cache, c'est-à-dire celles dont l'application informatique en cours de déroulement va effectivement avoir besoin juste après leur pré-chargement. 4 Selon un autre aspect, le cycle est répété en permanence et en temps réel. De cette manière, le gain de temps d'exécution de l'application informatique est obtenu sur tout le déroulement de l'exécution de 5 l'application informatique. Selon un autre aspect, l'étape de pré-chargement associe respectivement aux types de séquence temporelle d'accès mémoire déterminés des types prédéterminés de pré-chargement de données. En effet, les stratégies de pré-chargement à mettre en oeuvre ne sont 10 pas identiques pour tous les types de séquences temporelles d'accès mémoire. L'association d'un type prédéterminé de pré-chargement de données à un type de séquence temporelle d'accès mémoire permet de réduire encore plus le temps d'exécution de l'application informatique. En effet, le pré-chargement des données est plus efficace car il permet ensuite 15 un déroulement plus rapide de l'exécution de l'application lorsqu'il est fait en fonction du type de données à charger. Selon un autre aspect, l'étape de détermination comprend 4 types de séquence temporelle d'accès mémoire qui sont : o le type d'accès séquentiel dans lequel des blocs de données 20 sont lus et/ou écrits consécutivement dans une zone mémoire, o le type d'accès multi-séquentiel avec un décalage régulier entre les séquences, dans lequel des blocs de données sont lus et/ou écrits à partir de plusieurs endroits différents 25 d'une zone mémoire, en passant régulièrement d'un endroit à l'autre, o le type d'accès aléatoire, o le type d'accès complexe dans lequel la séquence est formée de sous-séquences régulières ou quasi-régulières 30 qui se répètent mais de manière désordonnée et/ou dans lequel la séquence est régulière ou quasi-régulière et est 5 formée de sous-séquences qui se répètent mais de manière désordonnée. De cette manière, les nombreuses séquences temporelles d'accès mémoire sont regroupées en un nombre limité de catégories aux quelles sont 5 respectivement associés des types de pré-chargement adaptés et homogènes, améliorant encore la réduction du temps d'exécution de l'application informatique, en ayant encore mieux anticipé les données à pré-charger pour usage immédiat par l'application informatique en cours d'exécution. Selon un autre aspect, aucune donnée n'est pré-chargée dans l'étape 10 de pré-chargement associée au type d'accès aléatoire. De cette manière, le modèle d'apprentissage n'associe pas un type de pré-chargement prédéterminé au type d'accès aléatoire. Cela permet de ne pas fausser les futurs pré-chargements de données en associant un mauvais type de pré-chargement à un type de séquence temporelle d'accès mémoire. 15 Cela évite également de pré-charger des données totalement inadaptées lesquelles devront ensuite être déchargées avant de pouvoir recharger avec les bonnes données, entraînant alors du travail inutile et du retard dans le traitement du travail utile. Selon un autre aspect, une séquence temporelle d'accès mémoire 20 comprend plusieurs opérations d'accès mémoire qui se succèdent dans le temps : > de préférence au moins 30 opérations, encore plus de préférence au moins 40 opérations, > et/ou de préférence au plus 100 opérations, encore plus de 25 préférence au plus 60 opérations. De cette manière, le regroupement de plusieurs opérations permet d'obtenir un résultat statistique et fiable du type de séquence temporelle d'accès mémoire. D'autre part, le nombre d'opérations nécessaires pour obtenir un résultat fiable est assez peu élevé, puisqu'entre 30 et 100 30 opérations maximum, le taux de fiabilité du procédé est déjà très bon. Le 6 compromis entre simplicité de mise en oeuvre et efficacité de prédiction est ainsi encore amélioré et bien optimisé. Selon un autre aspect, une séquence temporelle d'accès mémoire est sous la forme d'une fenêtre glissante au cours du temps et comprenant un 5 nombre fixe d'opérations. La fenêtre glissante peut être choisie pour glisser d'opération d'accès mémoire en opération d'accès mémoire successive. Dans ce cas, le nombre de calculs est augmenté, ainsi que la robustesse du procédé. En variante, le regroupement peut être réalisé de bloc d'opérations 10 d'accès mémoire en bloc d'opérations d'accès mémoire, par exemple toutes les 40 opérations. Dans ce cas, le procédé est moins réactif mais il est moins gourmand en temps de calcul. Selon un autre aspect, le cycle comprend, après ladite étape de pré-chargement de données, une étape d'utilisation desdites données pré- 15 chargées dans le système de mémoire cache. Selon un autre aspect, le modèle d'apprentissage n'a été préalablement paramétré, à partir d'une base de données de certains types prédéterminés de séquences temporelles d'accès mémoire, qu'une seule fois, mais il peut être re-paramétré en cas d'ajout d'au moins un nouveau type prédéterminé de 20 séquence temporelle d'accès mémoire dans ladite base de données. De cette manière, de nouveaux types de séquence temporelle d'accès mémoire peuvent être intégrés la base de données. Cela permet d'améliorer encore le temps d'exécution de l'application informatique puisque la base de données comprend une plus large gamme de types de séquence 25 temporelle d'accès mémoire différents. D'autre part, même si un type de séquence temporelle d'accès mémoire n'est pas inclus dans la base de données au départ, la mise à jour de la base de données en re-paramétrant le modèle d'apprentissage permet de reconnaître ce type de séquence temporelle d'accès mémoire pour la détermination future de ce type de 30 séquence temporelle d'accès mémoire. 7 Selon un autre aspect, le type de séquence temporelle d'accès mémoire est défini par la variation au cours du temps de deux caractéristiques qui sont d'une part la taille des blocs de données lus et/ou écrits et d'autre part la position des blocs de données dans la zone mémoire 5 où ils sont lus et/ou écrits. De cette manière, la séquence temporelle d'accès mémoire est définie de manière simple et efficace, car il suffit de deux caractéristiques simples pour que cette séquence temporelle d'accès mémoire soit définie de manière bien représentative. 10 Selon un autre aspect, le modèle d'apprentissage est basé sur l'utilisation d'un algorithme de type «K-moyennes ». L'algorithme k-moyennes est un algorithme dont l'implémentation est relativement aisée et rapide et qui se trouve être particulièrement bien adaptée pour déterminer un type d'élément qui appartient à l'une ou l'autre 15 d'un nombre limité de classes prédéterminées. Il permet de regrouper des données en un nombre de classes prédéfinies, ce qui est idéal pour la détermination de types de séquences temporelles d'accès mémoire. L'algorithme k-moyennes peut être entraîné afin de former un modèle d'apprentissage fiable. 20 Selon un autre aspect, le nombre des classes dudit algorithme est strictement supérieur au nombre de types prédéterminés de pré-chargement de données. De cette manière, un type de séquence temporelle d'accès mémoire peut être associé à au moins une classe. Chaque classe de l'algorithme k- 25 moyennes est associée à un unique type prédéterminé de pré-chargement de données. Plusieurs classes peuvent être associées au même type prédéterminé de pré-chargement de données. En effet, le regroupement de points correspondant à un même type de séquence temporelle d'accès mémoire, au sein d'une seule classe, peut ne pas être possible spatialement 30 ou bien se révéler particulièrement difficile. La création de plusieurs classes pour un même type de séquence temporelle d'accès mémoire permet d'éviter 8 des erreurs d'attribution, et donc des erreurs de pré-chargement des données. Selon un autre aspect, le nombre des classes dudit algorithme est compris entre 2 et 10, de préférence entre 3 et 10. 5 Le fait de ne pas augmenter significativement le nombre de classes de l'algorithme permet de réduire le temps d'implémentation de l'algorithme. Cela permet également de réduire le temps d'exécution de l'application informatique puisque le nombre de calculs permettant la détermination d'un type de séquence temporelle d'accès mémoire est lié au nombre de classes. 10 Selon un autre aspect, le cycle comprend, préalablement à ladite étape de détermination, successivement : > une étape d'extraction de propriétés de données représentatives du type de séquence temporelle d'accès mémoire, suivie d'une étape de regroupement de ces propriétés extraites en vecteurs 15 multidimensionnels, > ladite étape d'extraction étant de préférence précédée d'une étape de prétraitement réalisant une normalisation desdites données représentatives, > ladite étape de regroupement étant de préférence suivie par une 20 étape de projection par analyse en composantes principales, réduisant le nombre de dimensions desdits vecteurs. De cette manière, le nombre de calculs est allégé tout en conservant la pertinence du résultat. Avantageusement, la normalisation permet d'éviter des distorsions dans le traitement des données en fonction de leur seule 25 amplitude, non représentative du type de séquence temporelle d'accès mémoire. Avantageusement, la projection permet de réduire le volume de calcul tout en conservant l'intégralité de l'information utile. Selon un autre aspect, l'application informatique tourne sur au moins plusieurs centaines de processus d'un ensemble de noeuds de calcul d'un 30 même réseau, de préférence sur au moins plusieurs milliers de ces processus, encore plus de préférence sur au moins plusieurs dizaines de 9 milliers de ces processus et l'application a accès à plusieurs centaines de fichiers depuis un même processus. Le procédé est donc particulièrement intéressant pour être mis en oeuvre sur des systèmes complexes, car d'une part les séquences temporelles 5 d'accès mémoire ont tendance à y être plus répétitives que sur les systèmes plus simples, et d'autre part le temps d'exécution gagné par chaque pré-chargement réalisé à bon escient est démultiplié par le grand nombre d'opérations effectuées. 10 BREVE DESCRIPTION DES DESSINS La figure la est un ordinogramme représentant les principales étapes du procédé selon un exemple de réalisation de l'invention. La figure lb est un ordinogramme représentant les principales étapes 15 du procédé selon un autre exemple de réalisation de l'invention. Les figures 2a et 2b sont un ordinogramme représentant les principales étapes du cycle du procédé selon un exemple de réalisation de l'invention. Les figures 3a et 3b sont un ordinogramme représentant les 20 principales étapes de l'apprentissage du procédé, ainsi que l'étape de détermination du type de séquence temporelle d'accès mémoire se déroulant au moyen de l'étape d'apprentissage selon un exemple de réalisation de l'invention. 25 DESCRIPTION DETAILLEE DE L'INVENTION La figure la représente schématiquement, sous la forme d'un ordinogramme, le principe général d'un exemple de procédé selon un mode de réalisation de l'invention. 30 L'étape d'apprentissage du procédé selon le mode de réalisation illustré figure la est illustrée par les blocs S1 à S3. L'étape de détermination du 10 type de séquence temporelle d'accès mémoire est illustrée par les blocs S4 à S7. L'étape de pré-chargement de données et l'étape d'utilisation des données pré-chargées dans le système de mémoire cache sont respectivement illustrées par les blocs S8 et S9. 5 L'étape d'apprentissage peut être réalisée à partir d'une base de données, illustrée au bloc Si, comprenant une base de séquences temporelles d'accès mémoire. Au bloc S2, les données représentatives des types de séquences temporelles d'accès mémoire comprises dans la base de données sont extraites. Les données représentatives peuvent être regroupées 10 en des vecteurs multidimensionnels. Les vecteurs peuvent être ensuite utilisés pour la création du modèle d'apprentissage à l'étape S3. Le modèle d'apprentissage est notamment utilisé pour détecter le type de séquence temporelle d'accès mémoire correspondant à des séquences temporelles d'accès mémoire générées durant l'exécution de l'application. 15 L'étape d'apprentissage peut être réalisée hors ligne, c'est-à-dire lorsque l'application informatique ne tourne pas. L'apprentissage n'est par exemple réalisée qu'une seule fois, et préalablement à l'étape de détermination. Toutefois, lorsqu'un type de séquence temporelle d'accès mémoire non existant dans la base de données est déterminé, il est possible de rejouer 20 l'apprentissage afin d'y intégrer ce type de séquence temporelle d'accès mémoire dans la base de données. Ainsi, le type de séquence temporelle d'accès mémoire peut être reconnu pour une future séquence temporelle d'accès mémoire. D'autre part, le modèle d'apprentissage étant construit à partir d'un 25 grand nombre de séquences temporelles d'accès mémoire, il est possible d'assimiler un type de séquence temporelle d'accès mémoire non directement connu à un type de séquence temporelle d'accès mémoire déjà connu de la base de données, notamment lorsque les deux types de séquence temporelle d'accès mémoire se ressemblent. Par exemple, le modèle 30 d'apprentissage est apte à déterminer qu'une séquence temporelle d'accès 11 mémoire est un accès multi-séquentiel, même si le décalage entre les opérations d'accès mémoire n'est pas directement connu du modèle d' apprentis sage. L'étape de détermination est représentée par les blocs S4 à S7. L'étape 5 de détermination S4 à S7 est réalisée en ligne, c'est-à-dire en cours d'exécution de l'application informatique. L'application informatique tourne sur au moins plusieurs centaines de processus d'un ensemble de noeuds de calcul d'un même réseau, de préférence sur au moins plusieurs milliers de ces processus, encore plus de préférence sur au moins plusieurs 10 dizaines de milliers de ces processus. Un noeud est une unité de calcul. Un processus est un programme en cours d'exécution sur un ordinateur. Il peut être défini comme un ensemble d'instructions à exécuter, pouvant être dans la mémoire morte ou pouvant être chargé depuis la mémoire de masse la mémoire vive. L'application a accès à plusieurs centaines de fichiers depuis 15 un même processus. L'étape de détermination comprend par exemple quatre types de séquences temporelles d'accès mémoire. Le type de séquence temporelle d'accès mémoire est notamment défini par la variation au cours du temps de deux caractéristiques qui sont la taille des blocs de données lus et/ou écrits 20 ainsi que la position des blocs de données dans la zone mémoire où ils sont lus et/ou écrits. Le premier type est un accès séquentiel dans lequel des blocs de données sont lus et/ou écrits consécutivement dans une zone mémoire. Le deuxième type est un accès multi-séquentiel avec un décalage régulier entre les 25 séquences temporelles d'accès mémoire, dans lequel des blocs de données sont lus et/ou écrits à partir de plusieurs endroits différents d'une zone mémoire, en passant régulièrement d'un endroit à l'autre. Le troisième type est un accès aléatoire, dans lequel la position des blocs de données dans la zone mémoire où ils sont lus et/ou écrits et la taille des blocs de données 30 varient aléatoirement. Le quatrième type est un accès complexe dans lequel 12 la séquence temporelle d'accès mémoire est formée de sous-séquences régulières ou quasi-régulières qui se répètent de manière désordonnée. L'accès complexe comprend également un accès dans lequel la séquence temporelle d'accès mémoire est régulière ou quasi-régulière et est formée de 5 sous-séquences se répétant de manière désordonné. Chaque séquence temporelle d'accès mémoire peut notamment comprendre plusieurs opérations d'accès mémoire se succédant dans le temps. Dans un exemple de réalisation, chaque séquence temporelle d'accès mémoire comprend au moins trente opérations, et de préférence au moins 10 quarante opérations. Chaque séquence temporelle d'accès mémoire peut comprendre au plus cent opérations, et de préférence au plus soixante opérations. De cette manière, le regroupement de plusieurs opérations d'accès mémoire en une même séquence temporelle d'accès mémoire permet d'obtenir un résultat statistique fiable. Notamment, pour une 15 séquence temporelle d'accès mémoire comprenant au moins trente, voire de préférence quarante opérations d'accès mémoire, la détermination du type de séquence temporelle d'accès mémoire est effectuée avec une précision de 99%. L'exécution de l'application informatique est représentée par le bloc S4. 20 A partir de l'exécution de l'application informatique, des séquences temporelles d'accès mémoire sont générées. L'étape S5 comprend l'extraction des données représentatives des séquences temporelles d'accès mémoire générées durant l'exécution de l'application. Les données représentatives sont par exemple identiques aux 25 propriétés et aux données extraites durant l'étape S2 de l'apprentissage. Les données représentatives peuvent être regroupées en des vecteurs multidimensionnels. A l'étape S6, les vecteurs multidimensionnels peuvent être injectés dans le modèle d'apprentissage construit à l'étape S3. Puis, le type de séquence temporelle d'accès mémoire généré par l'application en 13 cours d'exécution est déterminé à l'étape S7. Le cycle peut se répéter de l'étape S7 à l'étape S4. A partir de l'étape de détermination, une étape de pré-chargement de données, notamment à partir d'un système de fichier, vers un système de 5 mémoire cache, est effectuée à l'étape S8. L'étape de pré-chargement de données dépend avantageusement du type de séquence temporelle d'accès mémoire déterminé à l'étape S7. Plus précisément, l'étape de pré-chargement associe respectivement aux types de séquences temporelles d'accès mémoire déterminés des types prédéterminés de pré-chargement de 10 données. Le cycle peut être répété de l'étape S7 à l'étape S4. Les données pré-chargées sont utilisées à l'étape S9. La figure lb représente schématiquement, sous la forme d'un ordinogramme, une variante d'implémentation du procédé décrit en référence à la figure la. 15 L'étape d'apprentissage est illustrée par les blocs S21 à S25. Le cycle est illustré par les blocs S26 à S213. Plus précisément, l'étape de détermination du type de séquence temporelle d'accès mémoire est illustrée par les blocs S26 à S211. L'étape de pré-chargement de données est illustrée par le bloc S212. L'étape d'utilisation des données pré-chargées dans le 20 système de mémoire cache est illustrée par l'étape S213. L'étape d'apprentissage peut être réalisée à partir d'une base de données, illustrée au bloc S21. La base de données comprend une base de séquences temporelles d'accès mémoire. La base de séquences temporelles d'accès mémoire est par exemple celle décrite en référence à la figure la. 25 Les séquences temporelles d'accès mémoire comprises dans la base de données sont, dans cet exemple, soumises à un prétraitement à l'étape S22. Le prétraitement comprend par exemple une normalisation d'une caractéristique définissant les séquences temporelles d'accès mémoire. Par exemple, les positions des blocs de données dans la zone mémoire où ils 30 sont lus/écrits sont normalisées. La méthode de prétraitement utilisée est par 14 exemple une méthode de normalisation « minmax », pouvant être écrite sous la forme : - min (.i.) - riirJ. avec zi la caractéristiques normalisée, et x la caractéristique à normaliser. 5 Ici, x correspond à la position des blocs de données dans la zone mémoire où ils sont lus et/ou écrits. Au bloc S23, les données représentatives des séquences temporelles d'accès mémoire normalisées sont extraites et regroupées en vecteurs multidimensionnels. L'étape S23 peut être assimilée à l'étape S2 décrite en 10 référence à la figure la. Les données représentatives sont par exemple les mêmes que celles extraites durant l'étape d'apprentissage. Les vecteurs multidimensionnels peuvent être soumis à une projection selon une analyse en composantes principales (ou « ACP » dans la suite de la description) à l'étape S24. L'ACP permet notamment de réduire le 15 nombre de dimensions des vecteurs multidimensionnels. Plus précisément, le but de l'ACP est de projeter les vecteurs multidimensionnels dans des espaces propres pour détecter les axes principaux des propriétés des données représentatives. Les composantes principales comprenant l'essentiel de l'information sont identifiées, permettant de réduire le nombre de 20 dimensions des vecteurs multidimensionnels. Dans cet exemple de réalisation, les vecteurs multidimensionnels sont par exemple projetés selon deux axes. Suite à l'ACP, les vecteurs multidimensionnels réduits sont utilisés pour la création d'un modèle d'apprentissage à l'étape S25. 25 Dans l'exemple particulier de réalisation décrit en référence à la figure lb, le modèle d'apprentissage est basé sur l'utilisation d'un algorithme de type k-moyennes (ou « k-means » en anglais). L'algorithme k-moyennes (ou « k-means » en anglais) est utilisé pour regrouper des données selon un nombre de classes prédéfinies. Dans cet exemple, une classe peut être 15 associée à au moins un type de séquence temporelle d'accès mémoire. L'algorithme k-moyennes comprend la génération de centroïdes de manière aléatoire. La génération de centroïdes est notamment basée sur la projection des vecteurs multidimensionnels réduits dans le système à deux axes obtenu 5 suite à l'ACP. Les vecteurs multidimensionnels réduits sont assignés aux centroïdes les plus proches. Puis, les centroïdes sont recalculés en fonction des vecteurs multidimensionnels réduits qui leur ont été assignés. Le modèle d'apprentissage, basé sur l'algorithme k-moyennes, peut être utilisé lorsque les centroïdes convergent vers un couple de coordonnées stable. 10 En variante, la projection en ACP peut être faite selon plus de deux axes. L'étape de détermination, représentée par les blocs S26 à S211, comprend l'exécution de l'application informatique représentée par le bloc S26. Le bloc S26 correspond au bloc S4 décrit en référence à la figure la. A partir de l'exécution de l'application informatique, des séquences 15 temporelles d'accès mémoire sont générées. L'étape de détermination est par exemple effectuée pour une séquence temporelle d'accès mémoire à la fois. En variante, l'étape de détermination est appliquée à plus d'une séquence temporelle d'accès mémoire à la fois. La séquence temporelle d'accès mémoire est dans cet exemple soumise à un prétraitement à l'étape S27. Le 20 prétraitement comprend par exemple une normalisation d'une caractéristique définissant la séquence temporelle d'accès mémoire, telle que les positions des blocs de données dans la zone mémoire où ils sont lus/écrits. La méthode de prétraitement utilisée est par exemple une méthode de normalisation « minmax », pouvant être écrite sous la forme : ï. - min 25 1- niin avec zi la caractéristiques normalisée, et xi la caractéristiques à normaliser. Ici, x correspond à la position des blocs de données dans la zone mémoire où ils sont lus et/ou écrits. 16 Au bloc S28, les données représentatives de la séquence temporelle d'accès mémoire normalisée sont extraites et regroupées en un vecteur multidimensionnel. L'étape S28 peut être assimilée à l'étape S5 décrite en référence à la figure la. 5 Le vecteur multidimensionnel peut être soumis à une projection selon une analyse en composantes principales (ou « ACP » dans la suite de la description) à l'étape S29. L'ACP effectuée à l'étape S29 peut être identique à l'ACP effectuée à l'étape S24. Ainsi, le vecteur multidimensionnel réduit est par exemple projeté selon deux axes. 10 Puis, à l'étape S210, le vecteur multidimensionnel réduit est injecté dans le modèle d'apprentissage obtenu à l'étape S25. L'étape S210 correspond à l'étape S6 décrite en référence à la figure la. Plus précisément, le vecteur multidimensionnel réduit est injecté dans le modèle d'apprentissage basé sur l'algorithme k-moyennes. Un calcul de la distance 15 du vecteur multidimensionnel réduit avec chaque centroïde est effectué pour déterminer à l'étape S211 le type de la séquence temporelle d'accès mémoire. Par exemple, la distance euclidienne entre le vecteur multidimensionnel réduit et le vecteur coordonnée d'un centroïde est calculée comme suit : 20 d(p,q) = Le vecteur multidimensionnel réduit est associé au centroïde avec lequel il possède la plus petite distance euclidienne. En fonction du centroïde 25 auquel le vecteur multidimensionnel réduit est associé, le type de la séquence temporelle d'accès mémoire est déterminé. Le nombre de classes, chaque classe étant associée à un centroïde, est supérieur ou égal au nombre de types de séquences temporelles d'accès mémoire. Par exemple, si le nombre de types de séquences temporelles 17 d'accès mémoire est égal à quatre, l'algorithme k-moyennes génère au moins quatre centroïdes, donc au moins quatre classes. En effet, deux vecteurs, correspondant à un même type de séquence temporelle d'accès mémoire, peuvent être projetés dans l'espace propre à des positions ne 5 permettant pas de les associer à un même centroïde. Ainsi, la création de deux centroïdes (ou deux classes) pour un même type de séquence temporelle d'accès mémoire permet d'éviter la création d'erreurs de détermination des types de séquences temporelles d'accès mémoire. Le nombre de classes de l'algorithme k-moyennes est par exemple compris 10 entre 2 et 10. Avantageusement, le nombre de classes est compris entre 3 et 10. De manière encore plus avantageuse, le nombre de classes est compris entre 4 et 10. Le cycle peut être répété de l'étape S211 à l'étape S26. A l'étape S212, une étape de pré-chargement de données, notamment à partir d'un système de fichier, vers un système de mémoire cache, est 15 effectuée. L'étape S212 correspond avantageusement à l'étape S8. L'étape de pré-chargement de données dépend du type de séquence temporelle d'accès mémoire déterminé à l'étape S211. En variante, le cycle peut être répété suite à l'étape de pré-chargement S212. L'étape S213 comprend une utilisation des données pré-chargées à 20 l'étape S212. Le cycle peut se répéter, de l'étape S26 jusqu'à l'étape S213. Le procédé selon l'invention nécessite donc très peu de calculs, ce qui en fait une méthode simple d'implémentation, mais en même temps très fiable. 25 Les figures 2a à 3b illustrent un exemple particulier de réalisation du procédé décrit en référence à la figure lb. 18 Les figures 2a et 2b sont un ordinogramme illustrant un exemple particulier de réalisation du cycle du procédé selon l'invention pour une unique séquence temporelle d'accès mémoire. L'étape S31 correspond à l'exécution de l'application informatique. La 5 séquence temporelle d'accès mémoire générée durant l'exécution de l'application informatique peut être définie par la taille nd, des blocs de données lus et/ou écrits, ainsi que les positions des blocs xd de données dans la zone mémoire où ils sont lus et/ou écrits, l'indice i correspondant à chaque bloc de données (ou à chaque opération d'accès mémoire). Dans la 10 suite de la description, la taille nd, des blocs de données lus et/ou écrits est appelée « taille nd, », et la position des blocs xd, de données dans la zone mémoire où ils sont lus et/ou écrits est appelée « position xd, ». A l'étape S32, les positions xd, des blocs de données sont normalisées, utilisant la méthode de normalisation minmax décrite en référence à la 15 figure lb. La valeur des positions normalisées zd, est comprise entre 0 et 1. La normalisation des positions xd, permet de pouvoir appliquer les étapes du procédé sur des valeurs identiques, afin de ne pas fausser le résultat de la détermination du type de séquence temporelle d'accès mémoire. A l'étape S33, chaque position xd, est remplacée par la position 20 normalisée zd, correspondante. La séquence temporelle d'accès mémoire est donc définie par sa taille nd' et les positions normalisées zd,. A l'étape S34, et à partir de chaque position normalisée zd, calculée, deux données représentatives de la séquence temporelle d'accès mémoire sont calculées. La première donnée est le taux de passage de la séquence 25 temporelle d'accès mémoire par sa valeur moyenne ZCRdz. La deuxième donnée est le nombre d'emplacements mémoire non vides BINdz dans l'histogramme représentant les positions zd, de la séquence temporelle d'accès mémoire. Plus précisément, les emplacements mémoire non vides BINdz de l'histogramme de la séquence temporelle d'accès mémoire 30 représentent le nombre d'accès mémoire à un emplacement mémoire 19 commun. Un emplacement non vide représente un emplacement mémoire dans lequel une opération d'accès mémoire a lieu. A l'étape S35, la séquence temporelle d'accès mémoire est transformée. La séquence temporelle d'accès mémoire est définie par sa taille ncl, -1 et la 5 différence Mi entre deux positions successives xd, et xcl,±1, avec 15d,= xd,,/ - xcli. Cela permet d'intégrer un aspect temporel aux opérations d'accès mémoire de la séquence temporelle d'accès mémoire. A l'étape S36, des données représentatives sont extraites de la séquence temporelle d'accès mémoire définie par les caractéristiques ncl, -1 et M. Plus 10 précisément, le taux de passage de la séquence temporelle d'accès mémoire par sa valeur moyenne ZCRdc5 et le nombre d'emplacements mémoire non vides BINdÔ dans l'histogramme représentant les positions Mi de la séquence temporelle d'accès mémoire sont extraits. La valeur maximale de la séquence temporelle d'accès mémoire MAXdÔ est également extraite. 15 Enfin, l'écart type des valeurs de la séquence STDdc5est extrait. A l'étape S37, les données représentatives calculées aux étapes S34 et S36 sont regroupées en un vecteur multidimensionnel Vd de dimension 4: 20 Les taux de passage de la séquence temporelle d'accès mémoire par sa valeur moyenne ZCRdz et ZCRdc5 sont assemblés pour ajouter de la dépendance entre les séquences temporelles d'accès mémoire. Les nombres 25 d'emplacements mémoire non vides BINdz et BINdÔ sont également assemblés pour ajouter de la dépendance entre les séquences temporelles définies aux étapes S33 et S35. A l'étape S38, le vecteur Vd est projeté selon l'analyse en composantes principales (ou «ACP »), afin d'obtenir un vecteur V'd multidimensionnel 20 réduit à l'étape S39. Plus précisément, la projection selon l'ACP est par exemple effectuée selon deux axes. Le vecteur multidimensionnel Vd à 4 dimensions devient le vecteur V'd à 2 dimensions. Le vecteur multidimensionnel réduit V'd peut ensuite être appliqué au 5 modèle d'apprentissage à l'étape S40. Le cycle peut se répéter pour chaque nouvelle séquence temporelle d'accès mémoire. Les étapes du cycle peuvent en outre être effectuées simultanément pour plusieurs séquences temporelles d'accès mémoire. 10 Les figures 3a et 3b sont un ordinogramme illustrant un exemple de réalisation du modèle d'apprentissage du procédé selon l'invention, ainsi que la détermination du type de séquence temporelle d'accès mémoire à partir du modèle d'apprentissage. Les étapes S41 à S411 forment l'étape d'apprentissage. La base de 15 données comprend une pluralité de séquences temporelles d'accès mémoire définies par leur taille na, des blocs de données lus et/ou écrits, ainsi que les positions des blocs xa, de données dans la zone mémoire où ils sont lus et/ou écrits. L'indice i correspond à chaque bloc de données (ou à chaque opération d'accès mémoire). Dans la suite de la description, la taille na, des 20 blocs de données lus et/ou écrits est appelée « taille na », et la position des blocs xa de données dans la zone mémoire où ils sont lus et/ou écrits est appelée « position xa, ». Cela correspond à l'étape S41. L'étape d'apprentissage est décrite pour une unique séquence temporelle d'accès mémoire, bien que l'étape d'apprentissage soit effectuée pour la 25 pluralité de séquences temporelles d'accès mémoire comprises dans la base de données. A l'étape S42, les positions xa, des blocs de données de la séquence temporelle d'accès mémoire sont normalisées en utilisant la méthode de normalisation « minmax » décrite en référence à la figure lb. La valeur des 30 positions normalisées za, est comprise entre 0 et 1. 21 A l'étape S43, chaque position xa, est remplacée par la position normalisée za, correspondante. A l'étape S44, et à partir de la séquence temporelle d'accès mémoire normalisée, deux données représentatives de la séquence temporelle d'accès 5 mémoire sont calculées. La première donnée est le taux de passage de la séquence temporelle d'accès mémoire par sa valeur moyenne ZCRaz. La deuxième donnée est le nombre d'emplacements mémoire non vides BINaz dans l'histogramme représentant les positions za, de la séquence temporelle d'accès mémoire. Plus précisément, les emplacements mémoire non vides de 10 l'histogramme de la séquence temporelle d'accès mémoire représentent le nombre d'accès mémoire à un emplacement mémoire commun. Un emplacement non vide représente un emplacement mémoire dans lequel une opération d'accès mémoire a lieu. A l'étape S45, la séquence temporelle d'accès mémoire est transformée 15 en une séquence temporelle d'accès mémoire représentée par sa taille na, -1 et la différence Ôa, entre deux positions successives xa et xa,±1, avec xa,±1 - xat. Cela permet d'intégrer un aspect temporel aux opérations d'accès mémoire de la séquence temporelle d'accès mémoire. A l'étape S46, des données représentatives sont extraites de la séquence 20 temporelle d'accès mémoire définie par les caractéristiques na, -1 et Ôa. Plus précisément, le taux de passage de la séquence temporelle d'accès mémoire par sa valeur moyenne ZCRac5 est extrait et le nombre d'emplacements mémoire non vides BIN4 dans l'histogramme est extrait. La valeur maximale de la séquence temporelle d'accès mémoire MAX4 est également 25 extraite. Enfin, l'écart type des valeurs de la séquence STD4 est extrait. A l'étape S47, les propriétés des données représentatives calculées sont regroupées en un vecteur multidimensionnel Va de dimension 4: 22 Les taux de passage de la séquence temporelle d'accès mémoire par sa 5 valeur moyenne ZCRdz et ZCRdc5 sont assemblés pour ajouter de la dépendance entre les séquences temporelles d'accès mémoire. Les nombres d'emplacements mémoire non vides BINdz et BINdÔ sont également assemblés pour ajouter de la dépendance entre les séquences temporelles définies aux étapes S43 et S45. 10 A l'étape S48, le vecteur Va est projeté selon l'analyse en composantes principales (ou «ACP »), afin d'obtenir un vecteur V'a multidimensionnel réduit à l'étape S49. Plus précisément, la projection selon l'ACP est par exemple effectuée selon deux axes. Le vecteur multidimensionnel Va à 4 dimensions devient le vecteur V'a à 2 dimensions. 15 A l'étape S410, l'algorithme de type k-moyennes (ou « k-means » en anglais) est appliqué au vecteur multidimensionnel réduit V'a. L'algorithme k-moyennes, à partir du vecteur V'a, génère de manière aléatoire des centroïdes correspondant à une classe. Dans l'exemple décrit ci-avant, un unique vecteur multidimensionnel V'a est obtenu. Lorsque l'étape 20 d'apprentissage est effectuée sur une pluralité de séquences temporelles d'accès mémoire, le nombre de vecteurs multidimensionnels réduits V'a est important. Cela permet de créer autant de classes que voulues. Le nombre de classes est prédéterminé en fonction du nombre de types de séquences temporelles d'accès mémoire à déterminer. Une classe peut correspondre à 25 un type de séquence temporelle d'accès mémoire. Lorsque les centroïdes convergent vers un vecteur coordonnées stable, le modèle d'apprentissage est construit. A l'étape S411, les classes définies par leur centroïdes de vecteur Vcn, sont définies. L'indice m représente chaque classe, avec m compris entre 1 30 et M, M étant le nombre total de classes. Chaque classe correspond à un type 23 de séquence temporelle d'accès mémoire. Un type de séquence temporelle d'accès mémoire peut correspondre à plusieurs classes. A l'étape S412, le vecteur multidimensionnel réduit V'd, obtenu à l'étape S39 décrite en référence à la figure 2b, est appliqué au modèle 5 d'apprentissage. Le modèle est utilisé pour classifier chaque séquence temporelle d'accès mémoire correspondant à un vecteur multidimensionnel réduit V'd. Le vecteur multidimensionnel réduit V'd est projeté dans l'espace propre défini par l'ACP et l'algorithme K-moyennes. La distance euclidienne entre chaque vecteur Vc., correspondant à un centroïde, et le 10 vecteur multidimensionnel réduit V'd est calculée à l'étape S413. Les étapes S414 et S415 permettent de vérifier que la distance euclidienne entre le vecteur multidimensionnel réduit V'd et tous les centroïdes a bien été effectuée. La distance euclidienne minimale dm est retenue à l'étape S416. Le type de séquence temporelle d'accès mémoire est 15 celui associé à la classe dont le centroïde présente la plus petite distance euclidienne avec le vecteur multidimensionnel réduit V' d. La détermination du type de séquence est effectuée à l'étape S417. La détermination du type de séquence temporelle d'accès mémoire permet de déclencher un mécanisme de pré-chargement des données associé 20 au type de séquence temporelle d'accès mémoire déterminé à l'étape S418. Une étape d'utilisation REVENDICATIONS1. Procédé d'amélioration du temps d'exécution d'une application informatique, comprenant au moins un cycle comprenant : > une étape de détermination du type de séquence temporelle d'accès mémoire se déroulant lors de l'exécution de ladite application informatique, > une étape de pré-chargement de données, à partir d'un système de fichier, vers un système de mémoire cache, en fonction du type de de séquence temporelle d'accès mémoire déterminé, caractérisé en ce que : > ladite étape de détermination est réalisée par un modèle d'apprentissage ayant été préalablement paramétré à partir d'une base de données de certains types prédéterminés de séquences temporelles d'accès mémoire. 2. Procédé d'amélioration du temps d'exécution d'une application informatique selon la revendication 1, caractérisé en ce que : > ledit cycle est répété en permanence et en temps réel. 3. Procédé d'amélioration du temps d'exécution d'une application informatique selon la revendication 1 ou 2, caractérisé en ce que : > ladite étape de pré-chargement associe respectivement aux types de séquence temporelle d'accès mémoire déterminés des types prédéterminés de pré-chargement de données. 4. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que : 25 > l'étape de détermination comprend 4 types de séquence temporelle d'accès mémoire qui sont : o le type d'accès séquentiel dans lequel des blocs de données sont lus et/ou écrits consécutivement dans une zone 5 mémoire, o le type d'accès multi-séquentiel avec un décalage régulier entre les séquences, dans lequel des blocs de données sont lus et/ou écrits à partir de plusieurs endroits différents d'une zone mémoire, en passant régulièrement d'un endroit 10 à l'autre, o le type d'accès aléatoire, o le type d'accès complexe dans lequel la séquence est formée de sous-séquences régulières ou quasi-régulières qui se répètent mais de manière désordonnée et/ou dans 15 lequel la séquence est régulière ou quasi-régulière et est formée de sous-séquences qui se répètent mais de manière désordonnée. 5. Procédé d'amélioration du temps d'exécution d'une application 20 informatique selon la revendication 4, caractérisé en ce que : > aucune donnée n'est pré-chargée dans l'étape de pré-chargement associée au type d'accès aléatoire. 6. Procédé d'amélioration du temps d'exécution d'une application 25 informatique selon l'une quelconque des revendications précédentes, caractérisé en ce qu'une séquence temporelle d'accès mémoire comprend plusieurs opérations d'accès mémoire qui se succèdent dans le temps : > de préférence au moins 30 opérations, encore plus de préférence 30 au moins 40 opérations, 26 > et/ou de préférence au plus 100 opérations, encore plus de préférence au plus 60 opérations. 7. Procédé d'amélioration du temps d'exécution d'une application 5 informatique selon la revendication 6, caractérisé en ce que : > une séquence temporelle d'accès mémoire est sous la forme d'une fenêtre glissante au cours du temps et comprenant un nombre fixe d'opérations. 10 8. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que : > le cycle comprend, après ladite étape de pré-chargement de données, une étape d'utilisation desdites données pré-chargées 15 dans le système de mémoire cache. 9. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que : 20 > ledit modèle d'apprentissage n'a été préalablement paramétré, à partir d'une base de données de certains types prédéterminés de séquences temporelles d'accès mémoire, qu'une seule fois, mais il peut être re-paramétré en cas d'ajout d'au moins un nouveau type prédéterminé de séquence temporelle d'accès mémoire dans ladite 25 base de données. 10. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que : 30 > le type de séquence temporelle d'accès mémoire est défini par la variation au cours du temps de deux caractéristiques qui sont 27 d'une part la taille des blocs de données lus et/ou écrits et d'autre part la position des blocs de données dans la zone mémoire où ils sont lus et/ou écrits. 5 11. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que : > ledit modèle d'apprentissage est basé sur l'utilisation d'un algorithme de type «k-Moyennes ». 10 12. Procédé d'amélioration du temps d'exécution d'une application informatique selon la revendication 3 et selon la revendication 11, caractérisé en ce que : > le nombre des classes dudit algorithme est strictement supérieur au 15 nombre de types prédéterminés de pré-chargement de données. 13. Procédé d'amélioration du temps d'exécution d'une application informatique selon la revendication 11 ou 12, caractérisé en ce que : > le nombre des classes dudit algorithme est compris entre 2 et 10, 20 de préférence entre 3 et 10. 14. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, caractérisé en ce que le cycle comprend, préalablement à ladite étape de 25 détermination, successivement : > une étape d'extraction de propriétés de données représentatives du type de séquence temporelle d'accès mémoire, suivie d'une étape de regroupement de ces propriétés extraites en vecteurs multidimensionnels, 28 > ladite étape d'extraction étant de préférence précédée d'une étape de prétraitement réalisant une normalisation desdites données représentatives, > ladite étape de regroupement étant de préférence suivie par une 5 étape de projection par analyse en composantes principales, réduisant le nombre de dimensions desdits vecteurs. 15. Procédé d'amélioration du temps d'exécution d'une application informatique selon l'une quelconque des revendications précédentes, 10 caractérisé en ce que : > ladite application informatique tourne sur au moins plusieurs centaines de processus d'un ensemble de noeuds de calcul d'un même réseau, de préférence sur au moins plusieurs milliers de ces processus, encore plus de préférence sur au moins plusieurs 15 dizaines de milliers de ces processus. > ladite application accède à plusieurs centaines de fichiers depuis un même processus.