Xperf et XPerfSql sont des puissants outils permettant d'analyser par un mécanisme de traçage, puis d'améliorer les performances d'un programme.
Statistiques, disponible depuis le Runtime Harmony 406 Hotfix 5, est une mesure simple intégrée à tous les traitements.
Généralités
L'expérience nous montre qu'il est difficile de trouver rapidement les causes de la lenteur d'un programme, de pointer les fonctions qui ont pris beaucoup de temps.
De plus les systèmes de traitement de l'information se complexifient et les architectures sur lesquelles ils reposent également, notamment en étant davantage distribuées. Dans ce contexte, l'analyse des problèmes de performances et leur compréhension devient moins aisée.
Avec Xperf, l'identification des problèmes de performances devient chose aisée, puisque Xperf nous donne le temps passé dans chaque fonction du programme et fournit des mesures de performances très précises des traitements métiers, et XPerfSql nous donne le temps passé dans les échanges avec le serveur de base de données.
Statistiques donne des indicateurs de performances simples et toujours disponibles.
XPerf / XPerfSql
Le principe de fonctionnement est simple:
activation de la trace (performance programme et/ou performance SQL)
le programme est exécuté tout à fait normalement mais sous contrôle de l'analyseur. A la fin du programme, un rapport est créé dans un fichier.
(de-activation de la trace)
observation du résultat.
Remarques
Les programmes n'ont pas besoin d'être compilés avec l'option Debug pour être analysés.
Pour que les résultats soit les plus précis possibles, les temps passés dans les saisies clavier (XmeInput etc.) et les chargement de modules ne sont pas comptabilisés
Le fichier résultat n'est disponible qu'à la fin du programme. Il faut donc nécessairement fermer le programme pour avoir sa trace
Les traces ne fonctionnent que pour un programme lancé après activation. Avoir une trace d'un programme déjà lancé n'est pas possible
C'est un mécanisme optionnel, enclenché à la demande, pour la session windows de l'utilisateur qui l'enclenche.
Il permet d'obtenir, sur le serveur d'application, la trace d'un traitement lancé en client léger depuis un autre serveur ou poste client, car le traitement effectif (xrtdiva.exe) est effectué sur le serveur applicatif.
Ralentissement
L'enclenchement d'un mécanisme de traçage de performance a un impact, même minime, sur les temps d'exécution et les mesures. Il ne doit donc être activé que sur demande pour un but précis
L'exploitation des résultats doit également tenir compte du fait que l'exécution réelle (sans trace) est forcément plus rapide qu'une exécution tracée.
Ce qui est tracé, et comment :
XPerf (Xperf.dhop) | Pendant l'exécution d'un programme Diva (xRtDiva.exe), trace tous les appels effectués La date/heure à la millisecondes est tracée, ainsi que le nombre d'occurrences
Le programme d'analyse affiche le temps passé dans chaque fonction, le nombre d'appels, avec la possibilité de visualiser la pile et de visualiser la liste des fonctions appelées par une fonction. |
XPerfSql (xperfsql.dhop) | Pendant l'exécution d'un programme Diva (xRtDiva.exe), trace tous les échanges avec la base de données (requêtes SQL éxécutées) La date/heure à la millisecondes est tracée, ainsi que le nombre d'occurrences Le programme d'analyseaffiche le temps passé par chaque requête SQL et le détail de la requête A noter que l'interface d'accueil n'est pas tracée. |
Statistiques
Depuis le runtime Harmony 406 Hotfix 5, la fonction Statistiques mesure systématiquement des indicateurs de temps sur les performances des traitements côté serveur, sans aucun impact sur les performance d'exécution.
Ce qui est tracé, et comment :
Statistiques | Pendant l'exécution d'un programme Diva (xRtDiva.exe), mesure quelques indicateurs généraux Ces indicateurs sont directement accessible depuis le menu windows (coin en haut à gauche de tout programme Windows) |
Activation XPerf et/ou XPerfSql
Depuis le runtime Harmony 405, l'activation se fait
via harmony dans le menu Paramétrage / Saisie des paramètres technique
ou via Divalto infinity dans le menu Administration / Paramètres utilisateurs / Saisie des paramètres techniques
puis par les boutons "Activer XPERF" ou "Activer XPERFSQL"
Information technique
L'activation du mode Analyse XPerf correspond a l'entrée suivante dans Divalto.ini (xDivaltoMajIni): [system] xperf=1
XPERF
Le programme « XPerf » décompose l’ensemble des opérations d’un programme Divalto dans le but de déceler d’éventuelles anomalies qui peuvent potentiellement engendrer un temps de traitement anormal. Il doit être utilisé si vous constatez un problème de performance sur un traitement bien particulier.
Nom du bouton | Fonction / Utilisation |
---|---|
Activer XPERF Desactiver XPERF | Active ou désactive la fonction de traçage des performances programme. Concerne les programmes lancés dans la session windows de l’utilisateur |
Rafraîchir l'écran | Va chercher le dernier fichier de trace connu, et afficher son chemin dans le cadre "Fichier xperf" |
Charger le dernier fichier dans XPERF | Ouvre l'analyse XPERF pilotée sur le dernier fichier du cadre "Fichier xperf". Cette action désactive automatiquement la trace |
Télécharger le dernier fichier XPERF | Télécharge sur le poste local le dernier fichier du cadre "Fichier xperf" Cette action désactive automatiquement la trace |
Pour activer la trace, il s'agit donc
de cliquer sur le bouton "Activer XPERF"
de lancer un programme Diva dans la session de l'utilisateur (depuis l'interface d'accueil Divalto ou non) puis effectuer le scénario souhaité (ouverture d’un programme puis consultation de données par exemple)
afin d’obtenir le résultat, il est impératif de fermer les applications ouvertes lors du déroulement du scénario avant de désactiver XPERF
de cliquer sur le bouton "Rafraîchir l'écran"
de cliquer sur le bouton "Charger le dernier fichier dans XPERF" qui va ouvrir l'outil d'analyse du fichier, et stopper l'analyse
(pour relancer une trace, reprendre a la première étape, car le chargement du fichier a stoppé l'analyse)
Assistance
Le fichier de trace obtenu est au format XML, pour être analysé ultérieurement ou transmis
Le fichier de trace doit être envoyé avec les demandes d'assistance lorsque cette demande concerne la performance.
Attention, une manipulation dans un traitement Divalto peut faire appel a plusieurs programmes, et donc produire plusieurs fichiers
XPERFSQL
C'est directement l'outil d'analyse (voir plus bas) qui est lancé, mais il faut noter ici deux modes de fonctionnement:
Mode DIALOGUE : ce mode affiche directement le résultat de la trace des échanges de base de données à l'écran. Il sera possible d'enregistrer le fichier ultérieurement, mais il n'y a pas de fichier par défaut
Mode FICHIER : ce mode enregistre la trace dans un fichier, pour une restitution ultérieure
Analyse avec XPerf - Outil pour la performance d'exécution d'un programme Diva
Ecran XPerf
L’analyse des informations qui figurent dans le rapport nécessite des compétences en développement sur le langage Diva afin d’identifier les anomalies.
L'écran de Xperf contient deux tableaux :
le tableau du haut contient la liste de toutes les fonctions du programme.
le tableau du bas contient le détail pour la ligne courante du tableau du haut. En fonction du bouton Afficher les fonctions appelées, il contient soit la liste des différentes piles, soit la liste des fonctions appelées.
Le bouton « Ouvrir » vous permet d’ouvrir d’autres fichiers de trace (XML) générés lors de cette session d’analyse ou lors d’une session précédente.
Fonction harmony_*
Attention, les données concernant les fonctions harmony_* (par exemple harmony_client_display, harmony_load_module, harmony_xlan_request, ...) sont particulières.
Ce sont des groupes de fonctions internes à l'exécuteur qui viennent apporter une information COMPLEMENTAIRE.
Elles ne peuvent donc pas être interprétées comme les autres : les informations en ligne sont bien celles de la fonction, mais les cumuls (durée totale) ignorent ces valeurs
Filtrage
Le bouton Filtrage permet d'afficher ou non les instructions du langage Diva et les fonctions des modules système (ysystemxxx).
Les fonctions des modules d'exécution des masques écran et imprimante (xm*) sont toujours affichées.
Précédent / Suivant
A chaque nouvelle navigation (double-clic sur une ligne dans le tableau inférieur) , les résultats de la navigation précédente sont gardés dans une liste. Les boutons Précédent et Suivant permettent ensuite de se déplacer dans cette liste.
Sélection de l'unité d'affichage
Le multi-choix Afficher les temps en permet de choisir l'unité de temps pour l'affichage des durées, entre la micro-seconde et la seconde.
Tri de colonnes
Le clic dans un entête de colonne permet de trier les lignes suivant la valeur de la colonne.
Export - Impression
Ctrl+clic dans le coin supérieur gauche d'un tableau ouvre un menu popup permettant de paramétrer les impressions, de la même manière que le zoom.
Affichage des piles
Lorsque l'option Afficher les fonctions appelées n'est pas sélectionnée, le tableau inférieur contient la liste des piles d'appels de la fonction pointée dans le tableau supérieur.
Exemple
Soit le programme suivant
procedure B beginp endp procedure A beginp B endp main A B
L'affichage des piles pour la procédure B donne :
La première pile indique que B a été appelée depuis A qui elle même est appelée depuis Main.
La seconde pile indique que B a été appelée directement depuis Main.
Affichage des fonctions appelées
Lorsque l'option Afficher les fonctions appelées est sélectionnée, le tableau inférieur contient la liste des fonctions appelées par la fonction pointée dans le tableau supérieur.
Exemple
Soit le programme suivant :
procedure C beginp endp procedure B beginp endp procedure A beginp B C endp main A B
L'affichage des piles pour la procédure A donne :
On voit donc que la fonction A appelle les fonctions B et C
perf ajoute une ligne Corps de la fonction qui correspond au temps passé dans la fonction sans la durée des fonctions appelées.
Navigation
Un double-clic sur une ligne du tableau inférieur place le curseur dans le tableau supérieur sur la ligne correspondant à la fonction cliquée.
A chaque nouvelle navigation, les résultats de la navigation précédente sont gardés dans une liste. Les boutons Suivant et Précédent permettent de se déplacer dans cette liste.
Analyse avec XPerfSql - Outil pour la performance d'exécution de requêtes SQL d'un programme Diva
XPerfSql permet de se dispenser d'outils tiers et des niveaux de privilèges élevés requis comme par exemple "SQL Server Profiler" en interceptant les requêtes SQL effectuées dans la session de l’utilisateur.
L'outil n'analyse est centré sur l'usage fait par l'ERP de la base de données.
La plupart des architectures sur lesquelles reposent les composants Divalto infinity sont distribuées, et les échanges réseaux ne sont pas à négliger dans ces analyses.
Ainsi on gagnera souvent en performance si on arrive à limiter le nombre d'échanges XLAN ou SQL, provenant d'une complexité grandissante ou de surcharges.
Quand l'outil est activé, une fenêtre de travail lui est dédiée et les programmes peuvent continuer d'être utilisés normalement.
Cet outil s’exécute en parallèle des applications habituelles et permet de récupérer les requêtes SQL avec les informations de contexte d’exécution (programme Diva, …) ainsi que le temps d’exécution de chaque requête.
Activation et mode de gestion : Dialogue ou Fichier
L'activation va positionner une indicateur dans la session windows courante, pour que les prochains programmes lancés se fassent avec trace SQL.
Informations techniques
L'interface d'accueil n'est pas tracée
La trace ne fonctionne que pour la session windows courante de l'utilisateur et des programmes interactifs. Ne fonctionne donc pas avec un programme lancé par service (service diva, service web, scrutateur,...)
La trace fonctionne en client léger (même si xrtdiva.exe n'est pas exécuté dans la session)
En mode fichier, il sera produit un fichier par programme (xrtdiva.exe)
L’outil se focalise sur les opérations de type « RecordSQL » et n’intègre pas les opérations d’accès à la base de données effectuées par le biais du composant DhsXlanServer
En mode DIALOGUE, le résultat est directement affiché à l'écran, avec rafraîchissement automatique.
Il est possible d'enregistrer le résultat courant dans un fichier XML pour une analyse ultérieure.
En mode FICHIER, le résultat est écrit dans un fichier au format XML.
Il est possible d'ouvrir le dernier fichier XML pour une analyse.
Statistiques SQL détaillées
Disponible à partir du runtime Harmony 408 2022, un bouton ‘Stats’ permet d’activer les statistiques SQL détaillées pour le moteur de base de données Microsoft SQL Server uniquement.
Les statistiques détaillées SQL permettent d’avoir des informations complémentaires telles que
la colonne “Nombre de colonnes retournées” qui indique le nombre de colonnes de la requête SQL retournées par la requête
la colonne “Audit” qui donne des informations sur les jointures et indexes.?
L’affichage est sous la forme X / Y
Y est la somme du nombre de jointures, du nombre d’index scan et du nombre d’index seek de la requête
X est le nombre d’index seek de la requête
on peut résumer cet audit ainsi : indication du nombre de recherches de tables extérieures à la table principales en comparant leur nombre de recherche optimisées sur leur nombre total
le plan d’exécution de la requête SQL
Lorsque le mode ‘Stats’ n’est pas actif, les colonnes complémentaires ci-dessus son présentes mais non garnies
La majorité des données SQL ne sont récupérées qu'à la fermeture du curseur de lecture SQL . Cela signifie qu’il faut FERMER le zoom ou le programme tracé pour obtenir toutes les statistiques SQL détaillées (Reader close requis pour obtenir les informations de la base MS SQL)
Ecran XPerfSql
Tableau principal
Dans la fenêtre de l'outil xPerfSQL, les requêtes SQL des différents programmes ouverts dans la session de l'utilisateurs vont venir s'afficher.
Elles sont complétées avec les informations sur le contexte d'exécution (programme) et le temps d'exécution de la requête ce qui permet d'identifier très rapidement les requêtes peu performantes.
Mode Fiche
Le mode fiche donne le détail de la ligne courante.
Cela permet principalement de voir la requête SQL en entier
Options et appliquer le filtrage
Le bouton « Options » permet d’affiner les résultats afin de n’afficher que les requêtes les plus pertinentes et affiche un indicateur. Vous pouvez par exemple exclure de la liste les requêtes qui présentent une durée d’exécution faible.
Le bouton « Appliquer le filtrage» permet d’activer ou de désactiver les paramètres définis dans « Options »
Options | Effet |
---|---|
Mettre un indicateur si le temps est plus grand que | Un colonne 'indicateur' affiche un symbole d'alerte. Une durée en ms saisie ici permet d'indiquer à partir de quelle valeur l'indicateur est mis. Sans valeur, l'indicateur n'est pas mis |
Nombre de ligne à garder | Nombre de lignes conservées pour l'affichage |
Filtrage si te temps est plus petit que | Permet d'éliminer de l'affichage les temps trop faibles qui ne font pas l'objet de l'analyse |
Filtrage selon le nom du dictionnaire SQL Filtrage selon le nom du record SQL Filtrage selon le nom du programme Filtrage selon le numéro de tâche | Permet de filtrer / cibler selon les colonnes indiquées. Ce filtre n'est pas sensible à la casse, et le symbole '*' placé en fin permet de faire une recherche approximative Exemple : gt* (qui est donc équivalent a GT*) sur le nom du dictionnaire et ne laissera passer que les nom de dictionnaires commençants par GT |
Détail d'une requête SQL
Le mode fiche donne tout le détail d'une requête SQL
Disponible à partir du runtime Harmony 408 2022, un bouton ‘Stats’ permet d’activer les statistiques SQL détaillées pour le moteur de base de données Microsoft SQL Server uniquement.
Lorsque le mode ‘Stats’ SQL détaillées est actif, des boutons permettent d’obtenir ces détails
PROFIL D’EXECUTION |
| |
COPIER LE PROFIL | Copie le plan ou profil d’exécution de la requête SQL dans le presse-papier | |
ENREGISTRER LE PLAN | Enregistre plan ou profil d’exécution de la requête SQL dans un fichier |
La fonction “Enregistrer le plan” est la plus utile pour une exploitation dans les outils Microsoft SQL Server.
En effet, après avoir renommé le fichier contenant le plan ou profil SQL au format JSON avec l’extension .SQLPLAN
et à condition d’avoir les outils Microsoft SQL Management Studio, le double-clic (ou le menu Fichier / Ouvrir / Fichier depuis SSMS) ouvre le plan d’exécution.
Fonction Statistiques
Les données statistiques
La fonction Statistiques s'obtient par le menu windows système de la fenêtre (sur le client léger WPF), dans le coin supérieur gauche
Client HTML
La fonction Statistiques n'est pas disponible sur les clients léger HTML
Les mesures sont actualisées à chaque appel a ce menu. Les valeurs sont donc cumulées depuis le lancement du programme.
Les indicateurs mesurés sont
Cpu | X ms | Temps CPU : temps X en millisecondes passé par le processeur côté serveur uniquement pour effectuer le traitement (xRtDiva.exe) | |
RecordSQL | Y ms | (Queries : A, Reads B) | Temps SQL : temps Y en millisecondes passé dans les échanges avec la base de données (entre le processus xRtDiva.exe et la base de données) A : nombre de requêtes SQL exécutées B : nombre de requêtes SQL exécutées de type Select/ReaderSelect |
Xlan | Z ms | (C) | Temps XLAN : temps Z en millisecondes passé par XLAN a traiter les demandes du traitement C : nombre d'échanges entre xRtDiva et DhsXlanServer |
La compréhension de ces indicateurs est aussi simplifiée et se fait assez naturellement :
Quand le temps CPU est élevé, comparativement a une autre traitement
Le programme effectue donc un algorithme long ou complexe (ou non optimisé)
Quand le temps SQL est élevé, comparativement a une autre traitement
Le programme est donc souvent en attente des réponses du serveur de base de données (SQL Server ou DB2)
Quand le temps XLAN est élevé
Le programme effectue beaucoup de dialogue avec le composant XLAN
Les échanges XLAN concernent les communications suivantes :
La demande de licence
La gestion des réservations
Les primitives d'accès aux données historiques "séquentiel indexé"
Journalisation des statistiques
Il est possible, via un paramétrage du serveur applicatif, de journaliser les temps d'exécution des différents traitements dans un fichier journal.
Ce journal, consultable ensuite depuis la xConsole, permet donc d'analyser la répartition de ces temps à postériori.
Pour activer cette journalisation sur le serveur, il faut passer par xDivaltoMajIni pour ajouter le chapitre "xrtdiva" et la valeur "StatsJournal"
1 = activer le journal de stats
0 = désactiver le journal de stats
Le fichier journal fstatperf.log est stocké dans /divaltolog (OnPremise) ou /harmony/cloud/numerodesite/divaltolog (Cloud)