Brevet FR3060791A1 — publié le 20180622

Arrière-plan de l'invention L'invention se rapporte au domaine général des systèmes informatiques, et plus particulièrement des systèmes informatiques s'appuyant sur des clusters de machines (désignées également plus couramment par « serveurs »). De façon connue, un cluster (ou grappe) de serveurs regroupe plusieurs ordinateurs (ou noeuds) indépendants placés en réseau, de sorte à permettre une gestion globale et optimisée des ressources informatiques (ex. mémoire, CPU (Central Processing Unit), espace disque, accès réseau, etc.) offertes par ces ordinateurs. Un tel cluster de serveurs permet typiquement la distribution et le lancement en parallèle, sur plusieurs serveurs distincts du cluster, de différentes tâches informatiques associées à un même programme ou à une même application informatique (aussi désigné par « travail » ou encore « job » en anglais). Dans le contexte des traitements de données actuels, qui peuvent impliquer des volumes de données très importants (ex. traitements dits « Big Data »), il n'est pas rare de rencontrer des clusters de serveurs comprenant des milliers voire des dizaines de milliers de machines qu'il est nécessaire d'administrer de façon efficace. La distribution des tâches sur les différentes machines d'un cluster est généralement administrée par un système de gestion du cluster. Des systèmes de gestion de clusters connus sont par exemple le système Borg proposé par Google ou encore le système Hadoop Yarn proposé par The Apache Software Foundation. Ces systèmes sont capables d'administrer des clusters regroupant un nombre très important de machines, et de lancer en parallèle sur ces machines des centaines de milliers de tâches appartenant à plusieurs milliers d'applications logicielles différentes. Dans ce contexte, les systèmes de gestion des clusters sont très souvent confrontés à des tâches qui doivent être lancées en rafales sur les clusters. Il leur est donc nécessaire pour traiter efficacement ces tâches de prendre une décision très rapidement quant à leur distribution sur les différentes machines des clusters. A cet effet, les systèmes de gestion de clusters de l'état de la technique allouent les ressources d'un cluster aux différentes tâches d'un programme (autrement dit, associent à ces différentes tâches différents serveurs du cluster capables de fournir les ressources nécessaires à leur exécution et réservent sur ces serveurs les ressources requises) sur la base des ressources réservées par l'utilisateur du cluster qui demande l'exécution de son programme. Ainsi à titre d'exemple, le système de gestion de cluster Hadoop Yarn définit, pour chaque serveur S d'un cluster Hadoop et chaque ressource informatique R offerte par le serveur, une capacité limite CL_R. On considère ici par souci de simplification que tous les serveurs S ont la même capacité limite pour la ressource R. La ressource informatique R peut être de nature diverse comme par exemple de la mémoire, du CPU (Central Processing Unit), de l'espace disque, un accès réseau, etc. Pour décider quelle ressource allouer sur quel serveur du cluster à une tâche j d'un programme (ou job), le système de gestion de cluster Hadoop Yarn détermine rapidement quels sont les serveurs capables d'exécuter cette tâche j, autrement dit, quels sont les serveurs qui 3060791 2 disposent des ressources nécessaires à son exécution au vu des besoins en ressource R déclarés par l'utilisateur du programme. Il utilise à cet effet la capacité limite CL_R de chaque serveur, les besoins R_R _j de la tâche j en ressource R déclarés par l'utilisateur du programme, et la quantité totale T_R de ressource R déjà réservées sur chaque serveur. Un serveur est alors considéré 5 comme apte à exécuter une tâche j seulement si pour ce serveur : R_R _j+T_R n où aj indexe le début de la tâche Tj et dj la fin de la tâche Tj sur le serveur Sk. La valeur EU_R(n,Sk) peut en outre être mise à jour de la façon suivante lors de la détection d'un événement EV=RESA : EU_R(n,Sk) = EU_R(n,Sk) R_R_Tnew Ces exemples ne sont donnés qu'à titre illustratif et d'autres exemples encore peuvent 10 être envisagés pour mettre à jour la valeur EU_R(n,Sk). REVENDICATIONS1. Procédé de mise à jour, pour au moins un serveur (Sk) d'un cluster de serveurs, d'au moins une valeur courante d'une variable notée V choisie parmi une estimation d'une quantité déjà utilisée d'une ressource informatique sur le serveur ou une capacité maximale du serveur pour ladite ressource informatique, ladite au moins une valeur courante étant destinée à être prise en compte par un dispositif de gestion du cluster de serveurs pour sélectionner, sur réception d'une requête d'exécution d'une tâche informatique associée à une quantité prédéterminée de ladite ressource informatique (R) requise initialement pour son exécution, un serveur dit cible du cluster pour exécuter cette tâche informatique, ledit procédé étant tel que ladite mise à jour est réalisée à chaque détection (F10) d'un événement (EV) parmi un ensemble prédéfini d'événements et : si l'événement détecté (UPD-U) est une obtention d'une mesure (U_R(n)) d'une utilisation réelle courante de la ressource informatique sur le serveur, ladite mise à jour (F30,G30) de la valeur courante de la variable V utilise ladite mesure de l'utilisation réelle courante de la ressource informatique sur le serveur ; - si l'événement détecté (RESA) est une réservation par le dispositif de gestion pour une tâche informatique d'une quantité de la ressource informatique sur le serveur, ladite mise à jour (F40,G50) de la valeur courante de la variable V utilise ladite quantité de la ressource informatique réservée ; et - si l'événement détecté (FREE) est une libération par une tâche informatique d'une quantité de la ressource informatique sur le serveur, ladite mise à jour (F50,G60) de la valeur courante de la variable V utilise ladite quantité de la ressource informatique libérée. 2. Procédé de mise à jour selon la revendication 1 dans lequel si l'événement détecté (UPD-U) est l'obtention de la mesure de l'utilisation réelle courante de la ressource informatique sur le serveur, ladite mise à jour de la valeur courante de la variable V utilise en outre au moins une valeur de la variable V notée Vpast mise à jour à un instant précédent. 3. Procédé de mise à jour selon la revendication 2 dans lequel si l'événement détecté (UPD-U) est l'obtention de la mesure de l'utilisation réelle courante de la ressource informatique sur le serveur, lors de ladite mise à jour la mesure de l'utilisation réelle courante de la ressource informatique est pondérée par un facteur réel a compris entre 0 et 1, et ladite au moins une valeur Vpast est pondérée par un facteur égal à (1-a). 4. Procédé de mise à jour selon la revendication 3 dans lequel la variable V mise à jour est l'estimation EU_R de la quantité déjà utilisée de la ressource informatique sur le serveur, et si l'événement détecté est l'obtention de la mesure de l'utilisation réelle courante de la ressource 3060791 28 informatique sur le serveur, ladite valeur courante notée EU_R(n) de la variable V est mise à jour selon l'équation : EU _R (n) = max((1 - a)EU _R(n - 1) + aU _R (n), U _R (n)) où n désigne un entier supérieur à 1, EU_R(n- 1) est la valeur de l'estimation de la quantité déjà utilisée de la ressource informatique sur le serveur mise à jour à un instant précédent, et U_R(n) 5 désigne la mesure obtenue de l'utilisation réelle courante de la ressource informatique sur le serveur. 5. Procédé de mise à jour selon la revendication 1 dans lequel, si l'événement détecté est l'obtention de la mesure de l'utilisation réelle courante de la ressource informatique sur le 10 serveur, cette mesure correspond à une utilisation de la ressource informatique sur le serveur par une ou plusieurs tâches informatiques s'exécutant sur le serveur et toutes gérées par le dispositif de gestion du cluster. 6. Procédé de mise à jour selon la revendication 5 dans lequel la variable V mise à jour 15 est l'estimation EU_R de la quantité déjà utilisée de la ressource informatique sur le serveur, et si l'événement détecté est l'obtention de la mesure de l'utilisation réelle courante de la ressource informatique sur le serveur : la mesure de l'utilisation réelle courante de la ressource informatique sur le serveur comprend une pluralité de valeurs notées U_R(n, j), j=1,...3, associées respectivement à une pluralité de 20 tâches informatiques Tj, j=1,...J, positionnées par le dispositif de gestion du cluster sur le serveur, 3 et n désignant des entiers supérieurs ou égaux à 1, chaque valeur U_R(n, j) correspondant à une mesure de l'utilisation réelle de la ressource informatique sur le serveur par la tâche Tj ; ladite mise à jour (F30) comprend : 25 o une première étape d'évaluation pour chaque tâche Tj, d'une valeur courante EU_R(n,j) d'une estimation d'une quantité déjà utilisée de la ressource informatique sur le serveur par la tâche informatique Tj selon l'équation : EU_R(n,j) = max((1 - a)EU_R (n - 1, j) + aU_R(n,j),U_R(n,j)) ou selon l'équation : EU_R(n,j) = (1 - a)EU_R (n - 1,j) + aU_R(n,j) où : 30 ^ EU_R (n -1,j) désigne une valeur évaluée à un instant précédent de l'estimation de la quantité déjà utilisée de la ressource informatique sur le serveur par cette tâche informatique Tj ; et ^ a est un facteur réel compris entre 0 et 1 ; 3060791 29 o une deuxième étape d'évaluation de la valeur courante notée EU_R(n) de l'estimation de la quantité déjà utilisée de la ressource informatique sur le serveur selon l'équation : EU_R(n) =ZEU_R(n,j) ou selon l'équation : I EU_R(n) = max Z ( EU_R(n,j),IU_R(n,j) où 3 désigne le nombre de tâches informatiques positionnées sur le serveur par le dispositif de gestion du cluster au moment de la deuxième étape d'évaluation. 7. Procédé de mise à jour selon la revendication 1 dans lequel la variable V mise à jour est l'estimation EU_R de la quantité déjà utilisée de la ressource informatique sur le serveur, et si 10 l'événement détecté est l'obtention de la mesure de l'utilisation réelle courante de la ressource informatique sur le serveur, ladite valeur courante notée EU_R(n) de la variable V est mise à jour selon l'équation : EU_R(n) = U_R(n)+ DRR(n) où U_R(n) désigne une mesure courante de l'utilisation réelle de la ressource informatique sur le serveur, et DR_R(n) désigne une valeur courante d'une quantité de la ressource informatique 15 réservée pour au moins une tâche informatique par le dispositif de gestion sur le serveur. 8. Procédé de mise à jour selon la revendication 7 comprenant en outre : une étape de mise à jour de la valeur courante DR_R(n) de la quantité de la ressource informatique réservée pour au moins une tâche informatique par le dispositif de gestion sur le 20 serveur est obtenue selon l'équation : DR_R(n) = (1 - f3)DR_R(n - 1) où 13 désigne un facteur réel compris entre 0 et 1 et DR_R(n - 1) désigne une quantité de la ressource informatique réservée par le dispositif de gestion sur le serveur obtenue à un instant précédent ; - une étape de détection (G10) de la mise à jour (UPD-D) de la valeur courante DR_R(n) ; et 25 une étape de mise à jour (G40) de la valeur courante de la variable EU_R selon l'équation : EU_R(n) = U_R(n)+ DR_R(n). 9. Procédé de mise à jour selon la revendication 7 ou 8 comprenant en outre : - si l'événement détecté est une réservation par le dispositif de gestion pour une tâche 30 informatique d'une quantité R_R_Tnew de la ressource informatique sur le serveur, une étape de mise à jour de la valeur courante DR_R(n) de la quantité de la ressource informatique 5 3060791 30 réservée pour au moins une tâche informatique par le dispositif de gestion sur le serveur utilisant ladite quantité R_R Tnew et une quantité DR_R(n - 1) de la ressource informatique réservée par le dispositif de gestion sur le serveur obtenue à un instant précédent, 5 - si l'événement détecté est une libération par une tâche informatique d'une quantité R_R_Told de la ressource informatique sur le serveur, une étape de mise à jour de la valeur courante DR_R(n) de la quantité de la ressource informatique réservée pour au moins une tâche informatique par le dispositif de gestion sur le serveur utilisant ladite quantité R_R Told et la quantité DR_R(n - 1) ; 10 et dans lequel ladite mise à jour de la valeur courante de la variable EU_R utilise ladite quantité de la ressource informatique réservée selon l'équation : E U _R (n) = U _R (n) + D R _R (n) 10. Procédé de gestion de tâches informatiques comprenant, sur réception (E10) par 15 un dispositif (3) de gestion d'un cluster (2) de serveurs (S1,S2,...,SK) d'une requête (REQ(T,R_R_T)) d'exécution d'une tâche informatique (T), cette tâche informatique étant associée à une quantité prédéterminée (R_R_T) d'une ressource informatique (R) requise initialement pour son exécution : - une étape de détermination (E40), par le dispositif de gestion du cluster, d'au moins un 20 serveur du cluster apte à exécuter la tâche informatique, cette étape de détermination utilisant la quantité prédéterminée de la ressource informatique requise initialement pour l'exécution de la tâche informatique, une capacité maximale du serveur pour la ressource informatique et une estimation d'une quantité déjà utilisée de la ressource informatique sur le serveur ; - une étape de sélection (E70), par le dispositif de gestion du cluster, d'un serveur pour exécuter 25 la tâche informatique parmi ledit au moins un serveur du cluster déterminé ; ledit procédé étant caractérisé en ce que, pour au moins un serveur du cluster, au moins une valeur courante d'une variable notée V choisie parmi l'estimation de la quantité déjà utilisée de la ressource informatique sur le serveur et la capacité maximale du serveur pour la ressource informatique est mise à jour conformément à un procédé de mise à jour selon l'une quelconque 30 des revendications 1 à 9. 11. Procédé de gestion selon la revendication 10 dans lequel le procédé de mise à jour est mis en oeuvre par le dispositif (3) de gestion du cluster. 35 12. Procédé de gestion selon la revendication 10 dans lequel le procédé de mise à jour est mis en oeuvre par ledit au moins un serveur (Sk), ledit procédé de gestion comprenant en outre une étape de transmission de ladite valeur courante de la variable V mise à jour par ledit au moins un serveur au dispositif de gestion du cluster. 3060791 31 13. Programme d'ordinateur (PROG) comportant des instructions pour l'exécution des étapes du procédé de mise à jour selon l'une quelconque des revendications 1 à 9 ou des instructions pour l'exécution des étapes du procédé de gestion selon la revendication 10 lorsque 5 ledit programme est exécuté par un ordinateur. 14. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de mise à jour selon l'une quelconque des revendications 1 à 9 ou des instructions pour l'exécution 10 des étapes du procédé de gestion selon la revendication 10. 15. Dispositif de gestion (3) d'un cluster (2) de serveurs (S1,...,SK) comprenant : un module (3A) de réception ; un module (3B) de détermination, activé sur réception par le module de réception d'une 15 requête d'exécution d'une tâche informatique, ladite tâche informatique étant associée à une quantité prédéterminée d'une ressource informatique requise initialement pour son exécution, le module de détermination étant configuré pour déterminer au moins un serveur du cluster apte à exécuter la tâche informatique en utilisant la quantité prédéterminée de la ressource informatique requise initialement pour l'exécution de la tâche informatique, une 20 capacité maximale du serveur pour la ressource informatique et une estimation d'une quantité déjà utilisée de la ressource informatique sur le serveur ; un module (3C) de sélection configuré pour sélectionner un serveur pour exécuter la tâche informatique parmi ledit au moins un serveur du cluster déterminé par le module de détermination ; 25 ledit dispositif de gestion étant caractérisé en ce qu'il comprend en outre : - un module de détection configuré pour détecter un ensemble prédéfini d'événements ; et un module de mise à jour activé pour au moins un serveur du cluster, et configuré pour mettre à jour au moins une valeur courante d'une variable notée V choisie parmi l'estimation de la quantité déjà utilisée de la ressource informatique sur le serveur et la capacité maximale du 30 serveur pour la ressource informatique, ledit module de mise à jour étant activé sur chaque détection d'un événement parmi l'ensemble prédéfini d'événements par le module de détection, et configuré pour : o si l'événement détecté est une obtention d'une mesure (U_R(n)) d'une utilisation réelle courante de la ressource informatique sur le serveur, mettre à jour la valeur courante 35 de la variable V en utilisant ladite mesure de l'utilisation réelle courante de la ressource informatique sur le serveur ; o si l'événement détecté est une réservation par le dispositif de gestion pour une tâche informatique d'une quantité de la ressource informatique sur le serveur, mettre à jour 3060791 32 la valeur courante de la variable V en utilisant ladite quantité de la ressource informatique réservée ; et o si l'événement détecté est une libération par une tâche informatique d'une quantité de la ressource informatique sur le serveur, mettre à jour la valeur courante de la variable 5 V en utilisant ladite quantité de la ressource informatique libérée. 16. Serveur (Sk) appartenant à un cluster (2) de serveurs géré par un dispositif (3) de gestion, ledit serveur étant apte à exécuter au moins une tâche informatique gérée par ledit dispositif de gestion, ladite au moins une tâche informatique utilisant lors de son exécution au 10 moins une ressource informatique du serveur, ledit serveur comprenant : un module de mesure configuré pour mesurer une utilisation réelle de la ressource informatique sur le serveur ; - un module de détection configuré pour détecter un ensemble prédéfini d'événements ; et un module de mise à jour configuré pour mettre à jour au moins une valeur courante d'une 15 variable notée V choisie parmi une estimation d'une quantité déjà utilisée de la ressource informatique sur le serveur et une capacité maximale du serveur pour la ressource informatique, ledit module de mise à jour étant activé sur chaque détection par le module de détection d'un événement parmi l'ensemble prédéfini d'événements et configuré pour : o si l'événement détecté est une obtention d'une mesure (U_R(n)) d'une utilisation réelle 20 courante de la ressource informatique sur le serveur, mettre à jour la valeur courante de la variable V en utilisant ladite mesure de l'utilisation réelle courante de la ressource informatique sur le serveur ; o si l'événement détecté est une réservation par le dispositif de gestion pour une tâche informatique d'une quantité de la ressource informatique sur le serveur, mettre à jour 25 la valeur courante de la variable V en utilisant ladite quantité de la ressource informatique réservée ; et o si l'événement détecté est une libération par une tâche informatique d'une quantité de la ressource informatique sur le serveur, mettre à jour la valeur courante de la variable V en utilisant ladite quantité de la ressource informatique libérée ; et 30 un module de transmission, configuré pour transmettre au dispositif de gestion ladite valeur courante de la variable V mise à jour. 17. Système informatique (1) comprenant : - un cluster (2) de serveurs comprenant une pluralité de serveurs, chaque serveur comprenant 35 au moins une ressource informatique permettant l'exécution de tâches informatiques ; un dispositif (3) de gestion du cluster de serveurs ; dans lequel ledit dispositif de gestion du cluster est conforme à la revendication 15 et/ou au moins un serveur du cluster est conforme à la revendication 16.