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 l'application suivante pour chaque installation :
Tableau 1. Paramétrage de l'application d'optimisation de la file d'attente d'expressions
Paramètre Unité Par défaut Runtime* Description Conseil d'optimisation
formula.queue.maxage h 24 Oui Nombre maximal d'heures de conservation de l'historique de la file d'attente d'expressions. Seules les expressions exécutées sont supprimées. Cette opération est exécutée en utilisant une formule. Les entrées exécutées sont conservées à des fins de statistiques d'expression (Avancé > File d'attente des expressions) et pour vérifier les boucles d'évaluations. Lors de l'évaluation des boucles, cette valeur peut être plus faible dans les configurations à forte capacité de traitement pour maintenir une taille de la table basse.
formula.queue.maxsize entrées 500000 Oui Nombre maximal d'entrées dans la file d'attente d'expressions. La tâche de nettoyage vise à maintenir le nombre d'entrées en dessous de ce nombre en éliminant l'historique. Seules les expressions exécutées sont supprimées. Cette valeur remplace le paramètre de durée de vie maximale. Pour améliorer les performances, cette valeur peut être optimisée pour maintenir une taille d'historique de file d'attente basse pendant les périodes de forte charge et enregistrer l'historique. Cette valeur doit être généralement légèrement inférieure au traitement moyen pendant la durée de vie maximale.
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 l'étiquette "Démarrées" et l'unité d'exécution est exécutée et se termine avant l'allocation d'un nouvel lot. Les expressions sont exécutées simultanément dans plusieurs unités d'exécution sur plusieurs noeuds, mais toujours dans un ordre chronologique en fonction de la dépendance. 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. Les entrées d'expression peuvent dépendre de la valeur d'une autre entrée. L'entrée d'expression peut ne pas être exécutée si l'instance de l'entrée (la valeur dont dépend l'entrée d'expression) n'est pas exécutée avant l'expression. Cela, ainsi que les accès concurrents, nécessite une allocation pour éviter les collisions, un ordre incohérent et la redondance du travail. L'allocation est un peu coûteuse et plusieurs expressions sont donc allouées immédiatement conformément à l'exigence ci-dessus et à condition qu'elles soient exécutées dans l'ordre défini. 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. Seul le nettoyage de file d'attente est exécuté. Le premier nettoyage est réalisé lors du démarrage 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. Par conséquent, 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 m 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 n'est pas "terminée" au début du délai suivant, une nouvelle unité d'exécution de tâche est générée et double 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 pas 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 avant l'exécution d'une expression. Si la fréquence est trop rapide, des ressources sont consommées inutilement. Cela affecte également le ///ramping of concurrency ; 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 également démarrée. Si le ///ramping est lent, vous pouvez diminuer cette valeur. 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. Le ///concurrency ramping décrit 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. Notez qu'il s'agit de la valeur maximale. 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 (virtuels ou autres). La valeur est également limitée pour ne pas consommer la dernière unité d'exécution du pool. Vous pouvez effectuer des essais avec cette valeur, car elle n'interrompt aucune opération. L'amélioration des performances n'est pas garantie, néanmoins, car elle dépend largement 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.
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".

Retour d'informations