Aller directement à la fin des métadonnées
Aller au début des métadonnées

Vous regardez une version antérieure (v. /wiki/spaces/PAI/pages/11637489835/Parall+liser+la+g+n+ration+des+OF) de cette page.

afficher les différences afficher l'historique de la page

« Afficher la version précédente Vous regardez la version actuelle de cette page. (v. 2) Actuel »

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 GtfPlanet que dans le cas ou le nombre de ligne d’OF est supérieur à 8.

Les programmes concernés sont :

  • 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.

 

Les instances qui génèrent les OF sont appelées en mode tunnel OF_Creation_Reel_TmpBL_Par - Ce sont les instances de génération d’OF.
Chaque instance de génération d’OF traite les OF qui lui sont affectés dans la table temporaire TmpBl et renseigne le numéro d’OF qui est généré.

 

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 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 performance.

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 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 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.

La métrique OF est calculée par la fonction

gttmchknommetric.dhsp / Compute_NomMetric_Field_MetricCoutTraitement

MetricCoutTraitement =

MetricNbOFEnt * C_Poids_MetricNbOFEnt (1,5) +
MetricNbOFComp * C_Poids_MetricNbOFComp (1) +
MetricNbOFSequ * C_Poids_MetricNbOFSequ (0,5) +
MetricNbOFRess * C_Poids_MetricNbOFRess (0) +
MetricNbOFOutil * C_Poids_MetricNbOFOutil (0)

Les poids sont liés au type de traitement qui doit être réalisé :

  • 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 un programme va permettre de calculer et stocker une métrique MetricCoutTraitement dans la table NOMMETRIC

Le programme “Calculer les métriques OF” sert à générer les métriques OF

Exemple de métrique sur une données techniques

D’après la formule on a bien Métrique OF = 3 x 1,5 + 8 x 1 + 12 x 0.5 = 19

image-20241028-143533.png

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 des 5 instances en fonction de la valeur de sa métrique OF.

La fonction affecte l’OF a l’instance qui est toujours la moins chargée.

Etude de cas

La fonction a déjà traité les 8 premières lignes d’OF et la situation est la suivante :

Instance du programme

Métriques OF totale

#1

18

#2

22

#3

16

#4

21

#5

17

Le 9ème OF a une métrique OF = 19 → la fonction l’affectera à l’instance #3 (16) qui est la moins chargée

L’instance #3 passera à 35 (16 + 19)

Le 10ème OF sera affecté à l’instance #5 (17) …

Lorsque la fonction a traité toutes les lignes d’OF chaque instance du programme est équilibrée.

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.

Pour désactiver le génération des OF en mode parallèle il faut modifier le retour de la fonction Of_moteur_x12_parallele - la désactivation se fait pour chaque programme

  • Génération des OF à l’affaire

    • gattgpa120.dhsp / Of_moteur_x12_parallele

  • Génération des OF à la commande

    • ggtt105_sql.dhsp / Of_moteur_x12_parallele

  • Aucune étiquette