Optimisation de la file d'attente d'expressions

Il peut être nécessaire d'optimiser le moteur d'expression en fonction des ressources du serveur, du nombre d'expressions et de la complexité de chaque installation. Généralement, le processus implique d'optimiser et de mesurer les performances d'un paramètre à la fois de manière répétée jusqu'a ce que les performances ne puissent plus être améliorées. Il est nécessaire de suivre les enregistrements. Une nouvelle optimisation est nécessaire pour la modification du matériel, de l'utilisation et de la configuration.
En tant qu'administrateur, vous devez vérifier les paramètres d'application suivants pour chaque installation :
Tableau 1. Paramètres d'application d'optimisation de la file d'attente d'expressions
Paramètre Unité Par défaut Exécution* Description Conseil d'optimisation
formula.queue.maxage h 24 Oui Nombre maximal (non garanti) d'heures de conservation de l'historique de la file d'attente d'expressions. Seules les expressions d'exécution sont supprimées. Cette opération est effectuée par le travail de nettoyage de formule. Les entrées de file d'attente exécutées dans la table de file d'attente de formules sont conservées en tant qu'historique d'exécution. Ce historique permet de vérifier les boucles d'exécution et de générer des statistiques. Si les statistiques ne sont pas requises, ce nombre peut être revu à la baisse dans le cas d'une configuration à forte capacité de traitement pour maintenir une taille de la table basse. Vous ne devez jamais affecter la valeur zéro à ce paramètre, car la vérification des boucles nécessite au moins un historique d'une heure.
formula.queue.maxsize entrées 500000 Oui Nombre maximal d'entrées souhaité dans la file d'attente d'expressions. Le travail de nettoyage vise à maintenir le nombre d'entrées en dessous de ce nombre en éliminant l'historique. Seules les expressions d'exécution sont supprimées. Cette opération remplace le paramètre formula.queue.maxage. Ce nombre peut être revu à la baisse pour maintenir une taille de file d'attente de formules basse pendant les périodes de forte charge, sinon, pour enregistrer l'historique. Cette valeur doit être généralement légèrement inférieure au traitement moyen pendant la période formula.queue.maxage.
formula.execution.batch.size entrées 30 Oui Nombre d'entrées de file d'attente d'expressions allouées à une unité d'exécution à chaque exécution d'allocation. Les entrées portent la mention "Démarrées". L'unité d'exécution est exécutée et se termine avant l'allocation d'un nouvel lot.

Il s'agit d'un paramètre important. Informations d'arrière-plan : Les expressions sont exécutées simultanément, dans n'importe quel ordre, sur plusieurs unités d'exécution sur plusieurs noeuds, mais toujours dans un ordre chronologique en fonction de la dépendance. Par exemple, si deux expressions dans la file d'attente ne sont pas associées, elles peuvent être exécutées dans un ordre différent de celui dans lequel elles ont été ajoutées. Par conséquent, les entrées d'une expression ne peuvent pas être exécutées s'il s'agit d'instances de cette expression ou d'entrées dont les valeurs sont dépendantes qui ne sont pas exécutées avant elle. Cela, ainsi que les accès concurrents, nécessite une allocation pour éviter les collisions, un ordre incorrect et la redondance du travail.

L'allocation étant une opération onéreuse, plusieurs expressions sont allouées en même temps avec les exigences ci-dessus et à condition qu'elles soient exécutées dans un ordre donné. Si un grand nombre d'expressions sont allouées, l'allocation supplémentaire est enregistrée, mais la concurrence est "verrouillée" et vice versa. En règle générale, il convient d'utiliser une valeur basse, si les expressions forment de longues chaînes de dépendances et de l'augmenter si elles sont courtes ou qu'il existe peu de dépendances. Vous pouvez changer cette valeur lors de l'exécution et donc l'ajuster jusqu'à ce que vous trouviez une valeur optimale. Les valeurs inférieures à 10 ou supérieures à 200 sont rarement optimales.

formula.cleanup.interval ms 1 800 000 Non Fréquence de nettoyage de la file d'attente d'expressions. Ici les paramètres de durée de vie maximale et de taille maximale sont forcés. Généralement, seule la suppression de file d'attente est exécutée. Le premier nettoyage est réalisé lors du démarrage du serveur, et une maintenance spéciale est exécutée à ce moment là. En outre, toutes les deux semaines, une vérification d'intégrité d'expression de temporisation est exécutée (la nuit). En règle générale, la valeur par défaut suffit. Si le traitement est élevé, le nettoyage dure plus longtemps, mais il doit être exécuté plus souvent et vice versa. Veillez à ne pas trop augmenter cette durée pour éviter de générer des indisponibilités d'exécution ou d'affecter les performances si la charge augmente soudainement de manière significative (par exemple, après une importation ou l'ajout d'un attribut).
formula.background.interval ms 10 000 Non Fréquence de recherche des nouvelles expressions à exécuter dans la file d'attente des expressions. Lorsqu'un lot est terminé, une nouvelle vérification a lieu immédiatement sans attendre le délai. Si la file d'attente contient des entrées non évaluées au début du délai suivant, une nouvelle unité d'exécution de tâche est générée et augmente le travail. Dans les versions précédentes de Rational Focal Point, l'exécution était asynchrone et immédiate. Lorsque les expressions étaient transférées vers la base de données, cela n'était plus possible sans risques d'interblocages. Il s'agit de la fréquence à laquelle les nouvelles expressions sont recherchées dans la file d'attente d'expressions, à savoir du délai maximal (majoré du temps d'exécution) que doit attendre l'utilisateur (lire : actualiser) avant l'exécution d'une expression. L'interrogation d'entrées de file d'attente non évaluées n'est pas une opération onéreuse s'il n'existe aucune entrée de ce type, par conséquent, la durée peut être courte. Toutefois, si la fréquence est trop rapide, des ressources sont consommées inutilement. Cela affecte également l'accélération des accès concurrents. Si l'unité d'exécution de tâche démarrée lors de l'intervalle précédent n'est pas terminée dans le délai, une autre unité d'exécution (jusqu'à thread.per.nodes) est démarrée. Si l'accélération est trop lente ou si des temps d'attente d'évaluation plus lents sont requis, vous pouvez baisser ce nombre. Si des expressions sont rarement utilisées, vous pouvez l'augmenter légèrement.
formula.max.background.threads.per.node nombre 2 Non Nombre maximal d'unités d'exécution simultanées exécutant des expressions pour chaque noeud. Le nombre maximal dépend dynamiquement de l'existence ou non d'unités d'exécution libres dans le pool d'unités d'exécution de l'application. L'accélération des accès concurrents décrite dans background.interval augmente le nombre d'unités d'exécution d'évaluation d'expression sur le noeud à chaque intervalle s'il reste du travail à exécuter. Cela implique que le pool d'unités d'exécution de l'application contienne des unités d'exécution libres, ce qui est optimisé automatiquement en tenant compte du nombre de coeurs d'unité centrale (virtuels ou physiques). La valeur est également limitée pour ne pas consommer la dernière unité d'exécution du pool. Vous pouvez faire un essai avec ce nombre. L'amélioration des performances n'est pas garantie, néanmoins, car elle dépend grandement de la possibilité pour la base de données de répondre en conséquence. La valeur est trop basse si la file d'attente contient généralement des expressions qui ne sont pas évaluées et la charge de base de données est basse.
formula.cleanup.enabled booléen true Oui Le nettoyage de la file d'attente des expressions est activé par défaut. Il ne doit jamais être désactivé, sauf à des fins de débogage ou lors de mesures de performance impliquant de le désactiver. Il n'est pas nécessaire d'optimiser ce paramètre. Ne le modifiez jamais. Conservez la valeur par défaut "true".

* Exécution indique si le paramètre d'application prend effet au cours de l'exécution (valeur Oui) ou uniquement lors du démarrage (valeur Non).


Retour d'informations