Sommaire | ||
---|---|---|
|
Génération des OF en mode parallèle
La parallélisation ne s’applique que pour les programmes qui génèrent des OF, en mode fichier GtfPlan
et que dans le cas ou le nombre de ligne d’OF est supérieur à 8.
...
Génération des OF à l’affaire
Génération des OF à la commande
Instance de pilotage et instances de génération des OF
Le programme de génération des OF ggppfab100
est appelé en mode tunnel OF_Creation_Reel_Fichier
. Cette instance sert à lancer et piloter les instances qui vont générer les OF - C’est l’instance de pilotage.
L’instance de pilotage va lire le contenu du fichier GtfPlan
et transférer son contenu dans la table temporaire TmpBl
en indiquant, pour chaque ligne OF, le numéro de l’instance qui devra générer l'OF.
...
Lorsque la dernière instance de génération des OF se termine, l’instance de pilotage reprend la main et traite le contenu de TmpBl
pour alimenter le fichier GtfTmp.
L’instance de pilotage se termine pour rendre la main au programme appelant.
Nombre d’instances de générations d’OF lancés
Le nombre d’instance d’instances est calculé par la fonction OF_Moteur_X12_Caluler_NoInstanceMax
à partir du nombre de ligne d’OF à généré.
La limite est fixée à 5 instances.
Au delà on constate une dégradation des performanceperformances.
Nb OF | Nombre d’instances du programme ggppfab100 |
---|---|
>= 20 | 5 |
>= 16 et < 20 | 4 |
>=12 et < 16 | 3 |
>=8 et < 12 | 2 |
< 8 | 1 |
Equilibrage de charge des instances de programme
L’instance de pilotage doit attendre que toutes les instances de génération des OF se terminent.
La durée totale du traitement correspond donc à la durée de l'instance de génération des OF la plus longue.
Instance du programme | Nombre de ligne d’OF | Durée |
---|---|---|
#1 | 6 | 62 secondes |
#2 | 6 | 45 secondes |
#3 | 6 | 183 secondes |
#4 | 6 | 52 secondes |
#5 | 5 | 33 secondes |
Dans ce cas l’exemple ci-dessus, la durée totale de génération des OF du fichier GtfPlan
correspond à l’instance #3 soit 183 secondes
On ne peut donc pas faire un équilibrage en se basant uniquement sur le nombre de ligne d’OF.
Chaque OF est plus ou moins complexe, en fonction de ses données techniques. Un OF qui produit plusieurs sous-OF et qui possède de nombreux composants ou séquences, nécessitera une durée de génération plus importante.
On va donc utiliser une mécanique de métriques OF pour répartir la charge sur chaque instance de génération d’OF en se basant sur les données techniques de l’OF.
Métriques OF
On a vu précédemment que la composition des données techniques influençait la durée de génération d’un OF.
...
une entête d’OF produit une commande interne + une ligne sur la commande interne
un composant produit une ligne sur la commande interne
une séquence produit des données de jalonnement
les ressources et outillages sont négligeables sur le durée du traitement
Pour chaque données techniques donnée technique, un programme va permettre de calculer et stocker une métrique MetricCoutTraitement
dans la table NOMMETRIC
...
D’après la formule on a bien Métrique OF = 3 x 1,5 + 8 x 1 + 12 x 0.5 = 19
...
Equilibrage de charge des instances de génération d’OF à partir des métriques OF
Pilotage_OF_Creation_par_GtfPlan
est la fonction qui transfère le contenu du fichier GtfPlan
dans la table temporaire TmpBl
Elle calcule le nombre d’instances nécessaires (voir https://divalto.atlassian.net/wiki/spaces/RDI/pages/edit-v2/11576803336#Nombre-d%E2%80%99instances-de-g%C3%A9n%C3%A9rations-d%E2%80%99OF-lanc%C3%A9s) et affecte chaque ligne d’OF à 1 l’une des 5 x instances calculées en fonction du nombre d’OF à générer, en fonction de la valeur de sa métrique OF.
La fonction affecte toujours l’OF a l’instance qui est toujours la moins chargée.
Etude de cas
...
Le mode d'équilibrage est assez basique, mais d’après les tests réalisés il s’avère suffisant.
Désactiver la parallélisation sur un programme
Il est possible d’utiliser le nouveau moteur 10.12, sans avoir recourt au lancement simultané de plusieurs instances du programme de génération des OF.
...