Brevet FR3034540A1 — publié le 20161007

La présente invention concerne un procédé pour analyser le contenu de très grands volumes de données au moyen d'un système consistué d'un dispositif de calcul parallèle. Il est possible aujourd'hui d'analyser de très grands volumes de données grâce des procédés fondés sur un dispositif de calcul parallèle doté d'une part d'une mémoire dynamique dont la dimension est supérieure à la taille du plus grand bloc de données à analyser et d'autre part d'un composant de stockage dont la dimension est supérieure à la taille de la totalité des données à traiter. De tels procédés fonctionnent selon le principe suivant: - un dispositif de stockage commun conserve l'intégralité des données à traiter sous forme d'un ensemble de blocs indivisibles ; - un dispositif de calcul parallèle charge itérativement et parallèlement en mémoire dynamique chaque bloc indivisible de données à traiter ; - ledit dispositif de calcul effectue parallèlement un calcul sur chacun desdits blocs de données indivisibles précédemment chargés afin d'analyser leur contenu ; - ledit dispositif de calcul stocke dans ledit dispositif de stockage commun le résultat dudit calcul effectué sur chacun desdits blocs indivisibles de données. Cependant, de tels procédés nécessitent de disposer d'un dispositif de calcul parallèle doté d'une mémoire dynamique de très grande taille dès que les blocs indivisibles de données sont eux-mêmes de grande taille. De tels dispositifs de calcul parallèle présentent l'inconvénient d'être onéreux et imposent une limite à la taille maximale des blocs indivisibles de données à analyser. Le procédé de l'invention vise à remédier à cet inconvénient en ajoutant une étape de segmentation transparente de blocs indivisibles de données s'appuyant sur le système de gestion de mémoire dynamique du dispositif de calcul parallèle. L'invention a donc pour objet un procédé permettant d'analyser de très grands volumes de 25 données en utilisant un dispositif de calcul parallèle, et un système afférent de gestion de mémoire dynamique, caractérisé en ce qu'il comporte une étape de segmentation transparente de blocs indivisibles de données chargés en mémoire dynamique. De la sorte, il est possible d'analyser de très grands volumes de données au moyen de dispositifs de calcul parallèle sans limites ou contraintes liées à la taille de la mémoire 30 dynamique dudit dispositif de calcul parallèle. Le procédé peut aussi comporter une ou plusieurs des étapes suivantes : - le noyau système du calculateur parallèle émet un signal de notification de non présence d'une plage d'adresses d'un bloc indivisible de données ; 3034540 2 - la mise à disposition d'une plage d'adresse d'un bloc indivisible de données est réalisée par un composant dit de segmentation transparente exécuté en espace utilisateur ; - la mise à disposition d'une plage d'adresse d'un bloc indivisible de données est accélérée par le noyau système du calculateur parallèle ; 5 - la modification d'une plage d'adresse d'un bloc indivisible de données est notifiée audit composant de segmentation transparente ; - l'enregistrement de plages d'adresses d'un bloc indivisible de données après modification est effectué sur demande du composant de stockage au composant de segmentation transparente ; 10 - la validation d'une transaction sur une plage d'adresses d'un bloc indivisible est effectuée sur demande du composant de stockage au composant de segmentation transparente. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant au dessin annexé. La terminologie technique utilisée est celle des environnements d'exploitation POSIX (marque déposée). 15 Le système afférent du procédé selon l'invention est représenté à la figure 1. Ce système comporte un ou plusieurs sous-systèmes d'analyse (a.1, a.2, a.N), un ou plusieurs gestionnaire de mémoire dynamique (g.1, g.2, g.N) en charge d'espaces mémoire physiques indépendants, un ou plusieurs composants de segmentation transparente (e.1, e.2, e.N), un ou plusieurs composants d'accès au composant de stockage (d.1, d.2, d.N) 20 et un composant de stockage commun (s.1) contenant des blocs de données indivisibles. Le procédé selon l'invention comporte une étape de chargement de plage d'adresses d'un bloc de données indivisible. Au cours de cette étape, le sous-système d'analyse (a.1) exécuté en espace utilisateur accède à une plage d'addresses (hl) d'un bloc indivisible. Cette plage d'adresse n'etant pas présente dans la liste des pages mémoire gérées par le gestionnaire de mémoire dynamique (g.1), ledit gestionnaire de mémoire dynamique (g.1) - exécuté dans l'espace noyau - suspend le sous-système d'analyse (a.1) et émet un signal de non disponibilité de la plage d'adresses au composant segmentation transparente (e.1) qui est lui exécuté dans l'espace utilisateur. Le composant de segmentation transparente (e.1) effectue une demande de bloc au composant d'accès au composant de stockage (d.1) qui transmet cette demande au composant de stockage (s.1). Le composant de stockage (s.1) transmet la plage d'adresses (bl) au composant d'accès au composant de stockage (d.1), qui la transmet au gestionnaire de segmentation transparente (e.1), qui charge la plage d'adresses en mémoire dynamique et notifie enfm le gestionnaire de mémoire dynamique (g.1). Une fois la plage d'adresses (bl) mise à disposition, le gestionnaire de mémoire dynamique (g.1) rend la main et le processus en cours au sein du sous-système d'analyse (a.1) reprend. Le procédé selon l'invention comporte une étape de réutilisation d'une plage d'adresses d'un 3034540 3 bloc de données indivisible ayant éte déjà chargée. Au cours de cette étape, le sous-système d'analyse (a.2) exécuté en espace utilisateur accède à une plage d'addresses (b2) d'un bloc indivisible déjà présente physiquement dans la liste des pages mémoire gérées par le gestionnaire de mémoire dynamique (g.2), le sous-système d'analyse (a.2) poursuit son 5 fonctionnement sans être suspendu. Le procédé selon l'invention comporte une étape d'optimisation du chargement lorsque le noyau du système du calculateur parallele le permet. Au cours de cette étape, le composant de stockage (s.3) transmet la plage d'adresses (b3) au composant d'accès au composant de stockage (d.3), qui la charge directement la plage d'adresses en mémoire dynamique et 10 notifie le gestionnaire de mémoire dynamique (g.3) sans passer par le composant de segmentation transparente. Le procédé selon l'invention comporte une étape d'enregistrement d'une plage d'adresses d'un bloc de données indivisible partiellement modifié. Au cours de cette étape, le sous-système d'analyse (a.1) exécuté en espace utilisateur modifie partiellement une plage 15 d'addresses (bl) d'un bloc indivisible. La modification de cette plage d'adresse déclenche un signal transmis au gestionnaire de mémoire dynamique (g.1) afin de notifier ledit gestionnaire de mémoire dynamique (g.1) de la modification d'une page mémoire. Lorsque le sous-système d'analyse (a.1) a terminé d'effectuer des calculs, ledit sous-système (a.1) transmet au composant d'accès au composant de stockage (d.1) une demande 20 d'enregistrement des modifications. Ledit composant d'accès au composant de stockage (d.1) se connecte au gestionnaire de mémoire dynamique (g.1) pour obtenir la liste des pages mémoire physiques modifiées et de leurs plages d'addresses correspondantes. Ledit composant d'accès au composant de stockage (d.1) transmet au composant de stockage (s) les plages d'adresses modifiées. Le composant de stockage (s) enregistre par un procédé 25 d'enregitrement lesdites plages d'adresses modifiées. Le procédé selon l'invention comporte une étape de rejet de transaction. Au cours de cette étape, le sous-système d'analyse (a.1) exécuté en espace utilisateur modifie partiellement une plage d'addresses (1)1) d'un bloc indivisible. La modification de cette plage d'adresse déclenche un signal transmis au gestionnaire de mémoire dynamique (g.1) afin de notifier 30 ledit gestionnaire de mémoire dynamique (g.1) de la modification d'une page mémoire. Lorsque le sous-système d'analyse (a.1) a terminé d'effectuer des calculs, ledit sous-système (a.1) transmet au composant d'accès au composant de stockage (d.1) une demande d'enregistrement des modifications. Ledit composant d'accès au composant de stockage (d.1) se connecte au gestionnaire de mémoire dynamique (g.1) pour obtenir la liste des 35 pages mémoire modifiées et de leurs plages-d'addresses correspondantes. Ledit composant d'accès au composant de stockage (d.1) transmet au composant de stockage (s) les plages d'adresses modifiées. Le composant de stockage (s) rejette la demande. L'enregistrement desdites plages d'adresses modifiées n'est pas effectué. Il apparaît clairement que le procédé selon l'invention remédie aux inconvénients des 3034540 4 procédés classiques d'analyse de très grands volumes de données. Il permet par exemple de traiter avec un ordinateur disposant de 2GB de RAM des matrices FORTRAN de 20GB stockées dans un fichier. Il permet par exemple de traiter avec une grappe de 100 ordinateurs disposant chacun de 32GB de RAM des matrices FORTRAN de plus de 10TB 5 stockées dans une base de données NoSQL répartie. Il permet de traiter avec une grappe de 1000 ordinateurs disposant chacun de 4TB de RAM des matrices FORTRAN de près de lEB stockés dans une base objet répartie et transactionnelle. Un autre avantage de ce procédé est de pouvoir définir intégralement dans l'espace utilisateur les procédés d'adressesage, de réutilisation et d'optimisation quelque soit le noyau 10 système sous-jacent. REVENDICATIONS1. Procédé permettant d'analyser de très grands volumes de données en utilisant un dispositif de calcul parallèle, et un système afférent de gestion de mémoire dynamique, caractérisé en ce qu'il n'impose aucune limite ou contraintes liées à la taille physique de la mémoire dynamique dudit dispositif de calcul parallèle grâce à une étape de segmentation transparente par plages d'adresses des blocs indivisibles de données chargés en mémoire dynamique à partir d'un dispositif de stockage commun. 2. Procédé selon la revendication 1, caractérisé par l'exécution de ladite étape de segmentation transparente de blocs indivisibles dans espace utilisateur du calculateur parallèle. 3. Procédé selon les revendications 1 ou 2, caractérisé en qu'il comporte une étape d'enregitrement des seules plages d'adresses modifiées. 4. Procédé selon les revendications 1 à 3, caractérisé en qu'il comporte une étape de validation de transaction.