Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

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.

Sommaire

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.

Info

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

  • a chaque entrée et sortie de code Diva (fonction, procédure)

  • a chaque instruction Diva (instruction du langage)

  • a chaque appel aux données (recordSql)

  • a chaque appels au Runtime Harmony (affichage, lecture de fichiers, impression, chargement de DLL,...

  • les temps d'attente utilisateur (saisie clavier) ne sont pas comptés

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

Activation pour un traitement ERP classique

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"

Info

Information technique

L'activation du mode Analyse XPerf correspond a l'entrée suivante dans Divalto.ini (xDivaltoMajIni): [system] xperf=1


Activation pour un traitement en service Diva

Depuis le runtime Harmony 409 il est possible d’activer XPerf ou XPerfSQL pour un service Diva.

Cette activation se fait uniquement depuis la fenêtre de Gestion des services Diva

  • en On Premise depuis la console d’administration avec le menu “Services Diva”

  • en Saas depuis la console d’administration cloud avec le menu “Services Diva”

Info

L’activation avec mesure de performance se fait nécessairement après arrêt préalable du service (il n’est pas possible de l’activer sur un service en cours)

Il faudra stopper le service pour obtenir la trace du service sous contrôle de perf

L’activation

performance

  • En SaaS, l’activation se fait, après sélection d’une ligne de service, avec le bouton “Démarrer…”

Image RemovedImage Added

qui ouvre une fenêtre de dialogue permettant de choisir d’activer XPerf et/ou XPerfSQL avec le lancement du service. Le champ “Durée d’activation des perfs en minutes” permet d’indiquer une durée maximale (entre 10mn et 72h) d’activation de la trace ; c’est une sécurité en cas d’oubli de désactivation manuelle afin de ne pas tracer tout le temps et ralentir les services.

Une fois lancé, la console de gestion des services indique un pictogramme et deux colonnes permettant de savoir si le contrôle de performance est actif sur un service

  • En On Premise, l’activation se fait avec les cases à cocher en mode liste ou fiche

image-20240927-134134.pngImage Added

Remarque

La mesure de performance sur un service doit être limité dans le temps en raison de l’impact sur les performances et sur la taille des journaux

Les fichiers de trace générés pour un service sont stockés au même emplacement que les traces de programmes (voir plus bas) et se consultent de la même manière.

A noter que la console propose dans le menu ACTIONS deux entrées (Lancer XPerf et Lancer XPerfSql) pour lancer les outils d’analyse directement depuis la console des services.

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

  1. de cliquer sur le bouton "Activer XPERF"

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

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

  4. de cliquer sur le bouton "Rafraîchir l'écran"

  5. de cliquer sur le bouton "Charger le dernier fichier dans XPERF" qui va ouvrir l'outil d'analyse du fichier, et stopper l'analyse

  6. (pour relancer une trace, reprendre a la première étape, car le chargement du fichier a stoppé l'analyse)


Info

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. D’un manière générale les fichiers nommée “ia*” ou “xnop*” sont inutiles mais les autres le sont.



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

Info

Ralentissement

L’activation de XPerfSql a un effet sur les performances visibles, mais pas sur les mesures. Cela signifie que le traitement avec trace SQL est ralenti par les mécanismes de traçage, mais que les mesures sont faites à des moments choisis qui n’ont pas d’incidence sur le résultat.

A noter que le mode DIALOGUE a un effet de ralentissement visible alors que le mode FICHIER n’a quasiment pas d’impact visible



Ancre
XPERF
XPERF

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

    Tutoriel XPerf

    Astuce

    Un tutoriel dédié à l’utilisation de XPerf en mode On Premise ou Cloud est disponible

    Inclure page
    TUTO:Mesure de performance d'exécution SQL en mode On Premise (XPerfSql OP)
    TUTO:Mesure de performance d'exécution SQL en mode On Premise (XPerfSql OP)
    Inclure page
    TUTO:Mesure de performance d'un traitement en mode SaaS (XPerf CLOUD)
    TUTO:Mesure de performance d'un traitement en mode SaaS (XPerf CLOUD)

    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.

    Info

    La colonne commentaires (v408) est alimentée par des informations concernant les impressions uniquement. La colonne indique par une ‘*' la présence d’un commentaire dont le détail est visible par le bouton “Commentaires”


    Ouvrir

    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.

    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.

    Info

    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

    Info

    Fonctions harmony_xmiprint_* : voir plus bas le chapitre dédié


    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.

    Affichage pile ou fonctions appelées

    Ce radio bouton permet de choisi le mode d’affichage de la fenêtre au base de l'écran. Voir plus bas l’explication des deux modes

    Télécharger (V407)

    Le bouton télécharger permet, notamment en mode SAAS de récupérer sur le poste local le fichier de trace XPerf.

    Envoi par mail (V407)

    Le fichier actuellement affiché peut être envoyé par mail. Cette fonction fait appel au logiciel de messagerie du poste appelant avec une création d’un nouveau message

    Commentaire (V408)

    Le menu commentaire, puis le sous-menu “Détails” permet de visualise la colonne “Commentaires” en mode fiche


    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

    Bloc de code
    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 :

    Bloc de code
    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.

    Information techniques concernant les fonctions harmony_xmiprint

    Dans un XPerf on trouve des informations détaillées concernant les fonctions d’impression “harmony_xmiprint_xxxx” donc voici les détails

    Nom de la fonction principale

    Nom de la fonction secondaire

    Description

    harmony_xmiprint_writedebug

    temps d'écriture du debug , c'est global a toutes les fonctions ( détail avec le temp user/kernel et le temp passe e

    ntre le début du programme et le premier printBegin)

    harmony_xmiprint_call_diva

    le temps des xmt diva , donc temps des appels des fc diva avant et apres bloc

    harmony_xmiprint_nocalldiva

    xmiprint sans les call diva donc on aura

    le temps de la fc xmiprint = harmony_xmiprint_call_diva + harmony_xmiprint_nocalldiva comme ca on sait ce qui est liee a l'impression et au code diva

    ** attention lancienne valeur harmony_xmiprint_fcXmiPrint_nocalldiva est fausse, elle a été remplacée par harmony_xmiprint_nocalldiva **

    harmony_xmiprint_WaitSpool

    on a aussi un mode pour limiter et donc reduire la vitesse d'envoi de l'édition vers le spool afin de ne pas saturer le spool d’impression de windows ,

    si cette vérification est activée alors on vérifie a chaque début de page que le volume d'impression en cours du spool de l'imprimante de window

    s n'est pas supperieure a une valeur, si c'est le cas alors on attend n secondes et on refait le test , mais toutefois au bout de n test on fini par

    quand même sortir la page pour ne pas bloquer le programme diva cela se paramètre dans xdivaltoprinters.exe

    harmony_xmiprint_NBPagesEdition

    nombre de pages reelle de l'impression (que a partir de la 409a), la valeur est dans la colonne nombre d’appels

    Il y a le temps mis par les fonction de début et de fin, et la décomposition principale

    harmony_xmiprint_fcPrintBegin

    printbegin c'est le début de l'impression, en fait on fait juste positionner des flags, l'ouverture réelle de l'imprimante se fait lors de l'envoi du premier bloc

    harmony_xmiprint_fcPrintEnd

    fin de l'impression , ca cumule donc tout le chapitre "à la fin de l'impression"

    harmony_xmiprint_outof_printing

    temps en dehors des appels des fc impressions , comme xmt , et le code dia du programme principal

    harmony_xmiprint_in_printing

    temps dans les fonctions d'impressions du noyau de xrtdiva

    harmony_xmiprint_time_global

    temps entre le départ de l'impression donc du premier PrintBegin et la fin de l'impression donc du PrintEnd

    Les temps dans les fonctions d'impressions du noyau de xrtdiva qui se décompose entre

    • l'ouverture de l'imprimante

    harmony_xmiprint_fcbegin_printing

    temps de l'ouverture de l'imprimante qui se décompose

    harmony_xmiprint_PortDynamique

    temps de calcul de %port_dynamique%

    harmony_xmiprint_TempsDeChauffe

    temps de chauffe si il faut attendre avant d'envoyer des ordres à l'imprimante

    harmony_xmiprint_call_documentproperties

    temps pour mettre en place les paramètres de l'imprimante (taille de la page etc )

    harmony_xmiprint_call_driver

    temps des appels du driveur de l'imprimante

    • puis après il y a les impressions des objets

    harmony_xmiprint_objets_msq

    temps total d'impression des objets du masque d'impression

    • avec un focus spécial sur certains objets qui peuvent être long

    harmony_xmiprint_ObjImage

    images (detail avec la taille de la plus grosse image)

    harmony_xmiprint_ObjBarCode

    les code barres

    harmony_xmiprint_ObjGraph

    les dessins graphiques

    harmony_xmiprint_RTF

    es rtf (détail avec la taille en caractères du plus gros fichier RTF)

    harmony_xmiprint_RTFrectif

    avec le temps de rectification du rtf (cas où le rtf contient des images )

    harmony_xmiprint_write_cells_excel

    l'écriture des infos pour faire de l'export excel

    • Puis des infos liées à la génération de la page

    harmony_xmiprint_send_toclientxwpf

    en mode page a page avec xwpf et sans aperçu, on envoi les pages directement su l'imprimante à travers xwpf

    harmony_xmiprint_FicTxtMeta

    il existe un mode avec écriture du texte dans un fichier txt pour faire de l'archivage mais qui n'est plus vraiment utilisé maintenant,

    c'est juste au cas où il resterai un vieux paramétrage qui trainerai dans divalto.ini

    • puis a la fin de l'impression

    harmony_xmiprint_TraitementNbPages

    si l'édition est marquée avec l'option calcul du nombre de pages et $1/nbpages$ dans les blocs d'impression

    harmony_xmiprint_FaxOrMail

    envoi de mail ou de fax

    harmony_xmiprint_SendPrintToXWPF

    selon le mode (xwpf,agent imp etc ) soit on envoi le dhvw vers xwpf

    harmony_xmiprint_WriteToAgentImp

    ou si on copie le dhvw dans le répertoire pour l'agent d'impression

    harmony_xmiprint_TooManyDivaltoViewer

    ou si on appelle directement divaltoviewer en testant si le nombre de divaltoviewer > max (car il y a un temps d'attente)

    harmony_xmiprint_RunDivaltoViewer

    temps de lancement de DivaltoViewer

    harmony_xmiprint_ConvertPDFForHTML

    sinon il peut y avoir une conversion en pdf et/ou xps , par exemple en mode html5

    harmony_xmiprint_ConvertXPSForHTML

    temps de conversion en xps pour le mode html5 en mode aperçu

    harmony_xmiprint_SendPrinterOnHTML

    soit vers le programme diva d'affichage en mode apeçcu de xhtml5 ou bien en directement en téléchargement dans le navigateur web


    Ancre
    XPERFSQL
    XPERFSQL

    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.

    Info

    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 : concerne le nombre de tables extérieures à la table principale lues, en indiquant le nombre de recherche optimisées sur le nombre total de recherches

      • Exemple : 2 / 2 est une indication que toutes les recherches de tables annexes se font de manière optimisée

      • Exemple : 0 / 5 est une indication qu’aucune table annexe n’a été recherchée de manière optimisée. Attention, il n’est pas toujours possible d’avoir une recherche optimisée

    • le plan d’exécution de la requête SQL

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

    Image Removed

    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

    Image Removed

    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

    Image Removed

    PROFIL D’EXECUTION

    • Bouton bascule entre le mode ‘Affichage de la requête SQL’ et le mode ‘Affichage du profil’

    • Permet de voir au format JSON le plan ou profil d’exécution de la requête SQL

    Image Removed

    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 via un fichier XML de description du plan d’exécution.

    En effet, après avoir renommé le fichier contenant le plan ou profil SQL au format JSON avec l’extension .SQLPLAN

    Image Removed

    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.

    Image Removed

    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 

    Image Removed

    Avertissement

    Client HTML

    La fonction Statistiques n'est pas disponible sur les clients léger HTML

    Les mesures sont actualisées à chaque appel à ce menu. Les valeurs sont donc cumulées depuis le lancement du programme ; les statistiques des sous-programmes sont incluses.

    Les indicateurs mesurés sont  

    Menu STATISTIQUES

    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 lignes lues par 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

    Modules

    W ms

    (D)

    Temps de chargement W des modules par le traitement (xRtDiva.exe) en millisecondes

    D : nombre de modules chargés

    Menu STATISTIQUES TRANSPORT (SAAS ONLY, non disponible en ONPREMISE)

    Total requests

    E

    E : Nombre de demandes de paquets de transport réseau

    Total time

    F ms

    F : Durée totale du transport réseau en millisecondes

    Longuest request time

    G ms

    G : Durée du transport réseau le plus long en millisecondes

    Mean time

    H ms

    H : Durée moyenne du transport réseau en millisecondes

    Tutoriel XPerfSql

    Astuce

    Un tutoriel dédié à l’utilisation de XPerf en mode On Premise ou Cloud est disponible

    Inclure page
    TUTO:Mesure de performance d'exécution SQL en mode On Premise (XPerfSql OP)
    TUTO:Mesure de performance d'exécution SQL en mode On Premise (XPerfSql OP)
    Inclure page
    TUTO:Mesure de performance d'exécution SQL en mode SaaS (XPerfSql CLOUD)
    TUTO:Mesure de performance d'exécution SQL en mode SaaS (XPerfSql CLOUD)

    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.

    Info

    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 : concerne le nombre de tables extérieures à la table principale lues, en indiquant le nombre de recherche optimisées sur le nombre total de recherches

      • Exemple : 2 / 2 est une indication que toutes les recherches de tables annexes se font de manière optimisée

      • Exemple : 0 / 5 est une indication qu’aucune table annexe n’a été recherchée de manière optimisée. Attention, il n’est pas toujours possible d’avoir une recherche optimisée

    • le plan d’exécution de la requête SQL

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

    Image Added


    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

    Durée d’activation des perfs sql (en minutes)

    Durée pendant laquelle la trace de performance SQL reste active après son lancement. Permet d'éviter de laisser une trace active trop longtemps par oubli (entre 1mn et 72h)



    Détail d'une requête SQL

    Le mode fiche donne tout le détail d'une requête SQL

    Image Added

    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

    Image Added

    PROFIL D’EXECUTION

    • Bouton bascule entre le mode ‘Affichage de la requête SQL’ et le mode ‘Affichage du profil’

    • Permet de voir au format JSON le plan ou profil d’exécution de la requête SQL

    Image Added

    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 via un fichier XML de description du plan d’exécution.

    En effet, après avoir renommé le fichier contenant le plan ou profil SQL au format JSON avec l’extension .SQLPLAN

    Image Added

    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.

    Image Added

    Fonction Statistiques

    Tutoriel Statistiques

    Astuce

    Un tutoriel dédié à l’utilisation de la fonction Statistiques en mode On Premise ou Cloud est disponible

    Inclure page
    TUTO:Mesure statistique de performance (Stats)
    TUTO:Mesure statistique de performance (Stats)

    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 

    Image Added

    Avertissement

    Client HTML

    La fonction Statistiques n'est pas disponible sur les clients léger HTML


    Les mesures sont actualisées à chaque appel à ce menu. Les valeurs sont donc cumulées depuis le lancement du programme ; les statistiques des sous-programmes sont incluses.


    Les indicateurs mesurés sont  

    Menu STATISTIQUES

    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 lignes lues par 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

    Modules

    W ms

    (D)

    Temps de chargement W des modules par le traitement (xRtDiva.exe) en millisecondes

    D : nombre de modules chargés

    Menu STATISTIQUES TRANSPORT (SAAS ONLY, non disponible en ONPREMISE)

    Total requests

    E

    E : Nombre de demandes de paquets de transport réseau

    Total time

    F ms

    F : Durée totale du transport réseau en millisecondes

    Longuest request time

    G ms

    G : Durée du transport réseau le plus long en millisecondes

    Mean time

    H ms

    H : Durée moyenne du transport réseau en millisecondes

    Menu STATISTIQUES MEMOIRE

    Ce menu est uniquement destiné au service support. Il n’est pas actif en utilisation On Premise ou Saas

    Remarques:

    • Le ‘Statistiques : Modules’ peut faire apparaître l’effet d’un cache au niveau serveur sur le temps de chargement, puisque le premier chargement (avec mise en cache) sera plus long qu’un second chargement

    • Le ‘Statistiques : Modules’ tient compte de tout type de module chargé, y compris les masques écrans

    • Le menu ‘Statistiques transport’ est disponible uniquement en version SaaS

    • Il est recommandé de lancer deux fois le traitement à mesurer, afin de détecter des écarts liés à des caches chargés lors du premier appel

    Le résultat de la fonction Statistiques évolue dans le temps (blocs apparaissants successivement)

    Premier bloc : données cumulées

    Second bloc (le cas échéant) : données du programme actuel, c’est à dire celui qui a été lancé à l’origine

    Troisième bloc (le cas échéant) : données des programmes appelés à partir du programme d’origine. Par exemple un programme appelé depuis un zoom

    Ne sont comptabilisés que les appels en mode ‘attente’ (programcall (wait))

    Quatrième bloc (le cas échéant) : données du dernier programme appelé

    Exemples d’éléments techniques entrant en compte dans les indicateurs:

    Mesure STATISTIQUE

    Exemple d'élément concerné

    CPU

    Algorithmes de traitement, interclassement, lecture/écriture de listes, accès OpenXml,…

    XLAN

    Gestion de licences, Réservation d’entité ERP, lecture/écriture non sql

    Modules

    Chargement de modules ERP, notamment au premier appel avant mise en cache

    RecordSQL

    Temps de lecture/update, Attente de réponse du serveur de base de données, Charge serveur SQL


    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 cible (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 FSTATPERF

    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.


    Activation de la journalisation Cloud

    Pour activer cette journalisation sur le serveur, il faut passer par xCloudAdmin dans le menu Autres paramètres / Journalisation des statistiques

    puis cocher la case correspondante et valider

    Activation de la journalisation OnPremise

    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

    Journal


    Consultation du journal


    Le fichier journal est nommé fstatperf.log et est stocké dans /divaltolog (OnPremise) ou /harmony/cloud/numerodesite/divaltolog (Cloud)

    Remarques sur la journalisation :

  • la journalisation est activée/désactivée pour tous les utilisateurs du site

  • les services diva entrent dans la journalisation après re-démarrage uniquement

  • le journal est consultable depuis xConsole

    )

    Il est accessible via le menu “Journaux” / “Consulter un autre journal” pour ouvrir le fichier fstatperf.log de la console xConsole

    • depuis le menu ERP en mode Saas par Administration => Paramètres => Cloud => Console d’administration

    • depuis le menu Harmony en mode OnPremise par Administration => Console d’administration

    image-20240913-082559.pngImage Added

    Remarques sur la journalisation :

    • la journalisation est activée/désactivée pour tous les utilisateurs du site

    • les services diva entrent dans la journalisation après re-démarrage uniquement

    • Une ligne est ajoutée à FSTATPERF à chaque fermeture de programme mais également dans les cas où le processus xrtDiva n’est pas fermé et retourne dans le pool de tâches (dans ce cas les compteurs sont évidemment réinitialisés).


    Description des colonnes du journal statistiques

    Voici la description des colonnes :

    • Date : date de fin du programme

    • Heure : heure de fin du programme

    • Programme : programme DHOP

    • UserWin : nom du compte Windows qui exécute le processus xrtDiva

    • Ordinateur : nom de l’ordinateur qui exécute le processus xrtDiva

    • Commentaire : titre du programme

    • DateDebut : date de début du programme

    • HeureDebut : heure de début du programme

    • Site : numéro du site

    • VersionERP : version ERP (uniquement à partir X.10)

    • PeakPagefileUsage : (expérimental, ne pas utiliser)

    • PeakWorkingSetSize : (expérimental, ne pas utiliser)

    • ListMemoryAllValue : (expérimental, ne pas utiliser)

    • ListMemoryAllPeak : (expérimental, ne pas utiliser)

    • ListMemoryCompressedValue : (expérimental, ne pas utiliser)

    • ListMemoryCompressedPeak : (expérimental, ne pas utiliser)

    • DictionaryMemoryAllValue : (expérimental, ne pas utiliser)

    • DictionaryMemoryAllPeak : (expérimental, ne pas utiliser)

    • DictionaryMemoryCompressedValue : (expérimental, ne pas utiliser)

    • DictionaryMemoryCompressedPeak : (expérimental, ne pas utiliser)

    • Environment : nom de l’environnement Harmony

    • TaskNumber : numéro de la tâche Harmony

    • Pid : numéro de processus Windows du processus xrtDiva

    • ParentTaskNumber : numéro de la tâche Harmony parente

    • ParentPid : numéro de processus Windows du processus xrtDiva parent

    • ExitCode : code de sortie du programme (voir SetExitCode)

    • XrtdivaExternalVersion : version du runtime Harmony

    • XrtdivaInternalVersion : version interne du runtime Harmony

    • Time_Processor_N : temps “CPU utilisateur” en milli-secondes du processus xrtDiva
      -> si ce temps est élevé (et que le programme n'était pas ouvert avec analyse xPerf active) il faut utiliser xPerf pour analyser l’algorithme du programme et déterminer quelles méthodes consomment ce temps CPU (nombre d’appels, temps moyens, …)

    • Time_RecordSql_Diva_N : (expérimental, ne pas utiliser)

    • Count_RecordSqlDiva_N : (expérimental, ne pas utiliser)

    • Time_Xlan_N : Temps en milli-secondes d’attentes de réponses XLAN : (HREAD, HSEEK, RESERVATIONS, …)

    • Count_Xlan_N : Nombre d’appels XLAN
      -> si beaucoup (par rapport à d’autres programmes), cela veut dire qu’on fait probablement bcp de petites requêtes et ces données pourraient être mises en cache mémoire dans DIVA (voir “dictionnaire”)

    • Time_RecordSqlDll_N : Temps en milli-secondes d’attentes de réponses MSSQL depuis RecordSql
      -> si le temps moyen est ici long (Time_RecordSqlDll_N / Count_RecordSqlDll_N) cela peut indiquer qu’une ou plusieurs requêtes SQL est “lente”, utiliser alors xPerfSQL pour déterminer les requêtes lentes

    • Count_RecordSqlDll_N : Nombre d’appels MSSQL depuis RecordSql
      -> si beaucoup (par rapport à d’autres programmes), cela veut dire qu’on fait probablement bcp de petites requêtes et ces données pourraient être mises en cache mémoire dans DIVA (voir “dictionnaire”)

    • Count_RecordSqlDllRead_N : Nombre de lignes retournées par MSSQL depuis RecordSql

    • Time_LoadModule : Temps en milli-secondes de chargement des modules DHOP

    • Count_LoadModule : Nombre de modules DHOP chargés

    • Time_Kernel_N : temps “CPU noyau” en milli-secondes du processus xrtDiva.
      -> peut être élevé en cas d’usage xPerf sinon habituellement on observe au max temps noyau inférieur à 50% du temps CPU utilisateur