Pour le dimensionnement des tâches, on doit estimer la mémoire nécessaire pour la gestion des objets algorithmiques.
La version actuelle de l'outil fonctionne correctement, mais il y a parfois des exigences mémoire beaucoup trop importantes, notamment dans le cas de dictionnaires de très grande taille, avec des demandes de plusieurs centaines de Mb parfois sur-estimées.
Problème non urgent, mais amélioration potentielle de la scalabilité et des performances
Piste de solution
Dans le cas des dictionnaires Khiops, la méthode usuelle basé sur les sizeof des objets utilisés fournit une valeur largement sous-estimée en raison du morcellement mémoire lié à la multitude de petits objets (variable, règles, opérandes...) impliquée dans le gestion des dictionnaires.
Cette sous-estimation est corrigée brutalement par un facteur 2 dans les méthodes suivantes:
PLSTDatabaseTextFile::ComputeOpenInformation
PLMTDatabaseTextFile::ComputeOpenInformation
// La memoire precedente est estimee principalement en fonction de la taille occupee par le dictionnaire
// qui peut etre largement sous-estimee dans certains cas (difference d'occupation memoire selon que le
// dictionnaire vient d'etre charge en memoire, est optimise, compile...)
// On corrige cette sous-estimation en prenant en compte en plus deux fois les dictionnaires
Il s'agirait d'avoir une estimation plus fine et donc d'être moins gourmand en mémoire dans le cas de dictionnaire de très grande taille, par une majoration moins basique qu'un simple facteur 2 (par exemple, par une fonction affine de type a x + b, avec a < 2 au lieu de linéaire en a x avec a=2).
Il faut dans un premier temps collecter des stats sur la mémoire estimée et la mémoire réellement nécessaire pour la gestion des dictionnaires, puis remplacer le facteur 2 par une estimation plus fine.
Les deux pièces jointes suivantes constituent une première étape de ce travail de collecte de stats.
Description
Pour le dimensionnement des tâches, on doit estimer la mémoire nécessaire pour la gestion des objets algorithmiques. La version actuelle de l'outil fonctionne correctement, mais il y a parfois des exigences mémoire beaucoup trop importantes, notamment dans le cas de dictionnaires de très grande taille, avec des demandes de plusieurs centaines de Mb parfois sur-estimées.
Problème non urgent, mais amélioration potentielle de la scalabilité et des performances
Piste de solution
Dans le cas des dictionnaires Khiops, la méthode usuelle basé sur les sizeof des objets utilisés fournit une valeur largement sous-estimée en raison du morcellement mémoire lié à la multitude de petits objets (variable, règles, opérandes...) impliquée dans le gestion des dictionnaires.
Cette sous-estimation est corrigée brutalement par un facteur 2 dans les méthodes suivantes:
Il s'agirait d'avoir une estimation plus fine et donc d'être moins gourmand en mémoire dans le cas de dictionnaire de très grande taille, par une majoration moins basique qu'un simple facteur 2 (par exemple, par une fonction affine de type
a x + b
, avec a < 2 au lieu de linéaire ena x
avec a=2).Il faut dans un premier temps collecter des stats sur la mémoire estimée et la mémoire réellement nécessaire pour la gestion des dictionnaires, puis remplacer le facteur 2 par une estimation plus fine. Les deux pièces jointes suivantes constituent une première étape de ce travail de collecte de stats.
README.txt
DictionaryMemAnalysis.xlsx
Context