Transformers personnalisés et traitement parallèle

Chaque traduction de FME est généralement exécutée en tant que processus unique sur votre ordinateur. Cela signifie que, normalement, FME traite séquentiellement chaque groupe d'entités spécifié dans le paramètre Regrouper par. Les versions de FME 2012+ peuvent utiliser des processeurs à cœurs multiples, ce qui, sur les ordinateurs personnels modernes, permet d'exécuter plusieurs tâches en parallèle. FME utilise également l'hyperthreading, une technologie utilisée pour que chaque cœur physique apparaisse comme deux processeurs logiques au système d'exploitation hôte. En répartissant la charge de travail entre les cœurs/processeurs, la performance de FME peut être améliorée.

Dans les Transformers personnalisés qui prennent en charge cette entité, le traitement parallèle vous permet d'exécuter plusieurs processus simultanés. Le paramètre Regrouper par vous permet d'affecter des entités aux processus. Le paramètre Traitement parallèle vous permet de définir différents niveaux de traitement, de Aucun parallélisme à Extrêm.

Gestion des process

Lorsque le mode traitement parallèle est activé, FME traite les groupes d'entités en parallèle en exécutant une nouvelle instance de fmeworker.exe pour chaque groupe d'entités.

  • Dans le gestionnaire de tâches, le processus est visible comme une instance supplémentaire de fmeworker.exe

Log FME Workbench

Dans le logFME Workbench, les informations du message affichent les limites de la licence, la requête, la mémoire du processus pour chaque moteur et les informations de chaque WORKER_KEY.

Note: Lorsque FME génère un processus supplémentaire, il doit envoyer les entités d'entrée au nouveau processus et recevoir les entités de sortie du processus. Cela ajoute une surcharge supplémentaire au CPU par rapport au mode mono-processus.

Paramètre Traitement parallèle

Pour utiliser le traitement parallèle, le flux de travail doit comporter plusieurs groupes d'entités qui peuvent chacun être traités indépendamment. Chaque groupe devient un processus (parallèle) distinct. Certaines techniques de regroupement sont présentées ci-dessous.

Le niveau de parallélisme (nombre de process exécutables en même temps) dépend du paramètre Traitement parallèle, qui possède cinq modes :

  • Pas de parallélisme
  • Minimal
  • Modéré
  • Agressif
  • Extrême

Selon l'opération effectuée, un mode peut être plus avantageux qu'un autre, et les modes Agressif ou Extrême ne fournissent pas toujours les meilleures performances. Dans certains traitements, le traitement parallèle ne présente aucun avantage ; dans d'autres traitement, des niveaux de parallélisme minimaux ou modérés constituent le meilleur choix.

Pour utiliser le parallélisme pour un Transformer personnalisé, cliquer sur les paramètres du Transformer dans le Navigateur :

Un Transformer personnalisé avec un traitement parallèle ne doit pas être limité à un seul Transformer : vous devez utiliser plusieurs Transformers.

Pour plus d'informations sur le traitement parallèle avec les Transformers personnalisés, voir le blog de Safe Software.

Notes

Le traitement parallèle peut améliorer les performances de FME, mais il peut aussi les dégrader ou avoir très peu d'effet. Lors de l'utilisation de processus parallèles, il est important de prévoir que le temps de traitement (CPU) de chaque groupe sera nettement supérieur aux frais généraux liés au lancement d'un nouveau processus et à l'envoi des entités d'un processus à l'autre. Si ce n'est pas le cas, l'activation du traitement parallèle sera plus lente que l'absence de parallélisme.

Tester le parallélisme sur une échantillon de données permet de déterminer si il y a un intérêt à l'exploiter ou pas.

Plusieurs, Petits groupes

Le traitement parallèle n'est pas recommandé lorsque vous avez de nombreux groupes, chacun avec un petit nombre d'entités. Chaque groupe génère un processus FME et cela prend du temps. Par exemple, avec 10 000 groupes de 10 entités, vous pourriez constater que le fait de démarrer et d'arrêter FME 10 000 fois coûte plus cher en performance que ce que vous économisez en traitement parallèle. À l'inverse, 10 groupes de 10 000 entités pourraient s'avérer plus avantageux.

Volumes de données

Le traitement parallèle fournit un intérêt uniquement lorsque le volume de données est assez important.

Autres ressources système

Vous devez vous assurer que les autres ressources système, telles que la mémoire, sont adaptées à la tâche. Si vous disposez de huit cœurs, vous pouvez lancer huit processus pour dissoudre des polygones, mais si vous ne disposez que de 2 Go de mémoire, vous risquez de ralentir le traitement.

Le traitement parallèle est extrêmement efficace lorsque la tâche est déchargée ailleurs. Par exemple, si vous avez plusieurs requêtes HTTP à effectuer, il peut être intéressant d'utiliser le traitement parallèle car l'impact sur les ressources du système est faible.

Écriture sur disque

Exploiter le parallélisme pour écrire sur disque ne n'accélère pas la tâche.

Information complémentaire et exemples

FME Community: Parallel Processing (traitement parallèle)

Blog de Safe Software