Profilage par échantillonnage
Lorsque cette méthode de mesure est activée, CODESYS génère une tâche supplémentaire. Cette tâche interrompt la tâche applicative à mesurer à des instants aléatoires et détermine son arbre d'appel courant.
L'échantillonnage n'est pris en charge que sur les systèmes multicœurs. En tant qu'utilisateur, vous devez affecter la tâche de profilage générée automatiquement à un groupe de tâches distinct dans la configuration des tâches. Ce groupe de tâches doit s'exécuter sur un cœur différent de celui de la tâche d'application à mesurer.
Les arbres d'appels enregistrés de la tâche à mesurer sont transférés par cycles au système de développement pour traitement. Pour cette raison, cette méthode ne fonctionne que lorsque le système de développement est en mode en ligne.
L'échantillonnage n'est pas adapté pour déterminer les valeurs aberrantes des exécutions de tâche. Utilisez la méthode lorsque vous souhaitez déterminer sur une longue période de temps quelles fonctions prennent beaucoup de temps et lesquelles prennent très peu de temps. Le résultat est une collecte aléatoire sur de nombreux cycles de tâches. Les effets ponctuels dans les cycles individuels ne peuvent pas être détectés.
L'un des avantages de cette méthode de mesure est que l'influence sur le temps d'exécution de la tâche est relativement faible et que la mesure peut être activée et désactivée à tout moment pendant l'exécution.
Fonctionnalité de la mesure
La tâche de profilage s'exécute dans une boucle infinie et avec une priorité élevée. A des moments aléatoires, la tâche de profilage vérifie si la tâche d'application à mesurer est en cours d'exécution ou non. S'il est en cours d'exécution, il est arrêté et l'arborescence d'appels en cours est déterminée. L'arbre d'appel déterminé est entré dans une liste (tableau).
Cette liste d'arbres d'appels est transférée cycliquement au système de développement et y est traitée avec les mesures précédentes. Par conséquent, l'échantillonnage ne s'exécute que tant que le système de développement est connecté à l'environnement d'exécution.
La méthode d'échantillonnage est utilisée pour déterminer une distribution statistique de l'exécution des POU. Les durées d'exécution affichées dans la vue des résultats ne sont pas mesurées directement, mais sont le résultat d'un calcul. Le calcul est basé sur l'hypothèse que les POU qui se trouvent souvent dans l'arborescence des appels ont également besoin d'un temps d'exécution plus long. La partie des mesures (échantillons) d'une POU par rapport au nombre total d'échantillons est convertie en partie temporelle de l'appel de la POU en temps de cycle de la tâche.
Exemple : Dans une tâche T1
, deux programmes P1
et P2
sont appelées et le temps de cycle de la tâche est de 20 ms. La tâche Profiler exécute 100 échantillons et détermine les éléments suivants :
T1
arrêts dans le programmeP1
20 fois.T1
arrêts dans le programmeP2
50 fois.T1
ne tourne pas 30 fois.
Ensuite, le profileur détecte les temps suivants à partir de la proportion de la tâche par rapport au temps de cycle et l'affiche dans la vue en ligne :
P1
: 4 msP2
: 10 msIdle
: 6ms
Le temps d'exécution de la tâche est évidemment allongé par une mesure. Cette augmentation n'est pas constante, mais dépend de la profondeur de l'arbre d'appel. Selon la plate-forme, il faut s'attendre à une extension du temps d'exécution dans la plage de 10 µs à 100 µs, voire plus.
Mesures de la catégorie "Échantillons échoués" :
Important
Des erreurs peuvent se produire lors de la détermination de l'arbre d'appel. Causes d'erreur possibles :
La longueur du tableau dans lequel l'arborescence des appels est stockée est trop courte. Dans ce cas, aucun arbre d'appel n'est déterminé du tout. L'utilisateur peut modifier la longueur du tableau dans les paramètres du profileur (Profondeur maximale de la pile d'appels).
La tâche est dans un état défavorable, par exemple dans un "verrou" car elle tente actuellement d'actionner des E/S (pour accéder au matériel). La mesure échoue.
Le nombre de mesures ayant échoué est affiché dans la vue en ligne dans la catégorie Failed Samples
:
Si le nombre de telles mesures échouées est très élevé malgré une liste suffisamment longue (tableau) pour l'arbre d'appel, alors vous devriez essayer de recourir à une autre méthode de mesure.
Mesures de la catégorie IDLE
:
Les mesures pour lesquelles la tâche n'est pas en cours d'exécution sont affichées dans la vue en ligne du IDLE
Catégorie. Contexte : Une tâche cyclique est généralement configurée avec un temps d'exécution plus court que le temps de cycle. Par conséquent, il existe une période dans le cycle pendant laquelle la tâche ne s'exécute pas.
Échantillons manquants :
Les échantillons manquants sont des enregistrements de mesure sur le contrôleur qui ne sont pas transférés au système de développement.
En raison d'un grand réseau d'arbres d'appels (grande profondeur d'arbre d'appels requise) et/ou d'un taux d'échantillonnage élevé (petit Intervalle d'échantillonnage), il peut arriver que tous les arbres d'appels enregistrés ne puissent pas être transférés vers le système de développement. Cependant, comme les mesures perdues sont réparties sur le cycle de la même manière que les mesures transmises, le résultat n'est pas altéré. Pour cette raison, le nombre d'échantillons manquants n'est affiché que dans la En ligne – Aperçu voir (Nombre d'échantillons manquants), et non en tant que catégorie distincte dans les vues de résultats (comme les échantillons ayant échoué). Mais le nombre d'échantillons perdus indique une densité d'échantillonnage peut-être trop élevée, ce qui augmente aussi inutilement le temps de cycle. Dans ce cas, vous devez soit modifier les paramètres en conséquence pour le Profondeur maximale de la pile d'appels ou pour le Intervalle d'échantillonnage.
Remarques sur les paramètres
Pour la méthode d'échantillonnage, il y a les éléments spéciaux suivants sur le Réglages de l'éditeur de profileur, dans l'onglet Paramètres d'échantillonnage grouper:
Groupe de tâches du profileur: Groupe de tâches qui contient la tâche Profiler.
Intervalle d'échantillonnage: Période de temps pendant laquelle un échantillonnage est effectué à un instant aléatoire (un enregistrement de l'arbre d'appel est effectué et stocké).
Profondeur maximale de la pile d'appels: Profondeur maximale d'emboîtement pour laquelle l'arbre d'appel doit être déterminé lors de l'échantillonnage.
Activation et exécution de l'opération de profilage par échantillonnage
Exigence:
UNE CODESYS l'application de projet avec plusieurs POU est ouverte en mode hors ligne.
La connexion à un contrôleur multicœur est configurée dans les paramètres de communication et le contrôleur est en cours d'exécution.
La tâche Profiler pour l'échantillonnage s'exécute (idéalement en tant que tâche unique) sur un autre cœur que la tâche d'application à mesurer.
Dans la configuration de la tâche, un groupe de tâches "Profiler" est donc créé sur son propre noyau (idéalement avec la propriété "FixedPinned"). La tâche de profileur générée automatiquement est la seule affectée à ce groupe. Le groupe de tâches pour la tâche de votre application CEI à mesurer se trouve sur un autre noyau.
L'application est l'application active et peut être compilée sans erreur.
Dans l'application, vous pouvez créer une variable booléenne qui peut être utilisée pour activer et désactiver le profilage par programmation. Ceci est facultatif. Le profilage peut également être activé et désactivé au moment de l'exécution en cliquant sur le bouton Pause/Démarrer bouton dans le panneau de commande du En ligne voir.
Cliquez sur Ajouter un objet pour ajouter un Profileur sous l'application dans l'arborescence des appareils.
Double-cliquez sur l'objet.
L'éditeur d'objets s'ouvre. le
Réglages l'onglet est mis au point.
Met le Méthode pour Échantillonnage.
Dans le Enregistrement groupe, sélectionnez le Tâche de votre application pour laquelle les appels de POU vous souhaitez effectuer les mesures de temps.
Pour État, clique le
et sélectionnez la variable booléenne de votre application que vous souhaitez utiliser pour activer et désactiver l'enregistrement de la valeur. Remarque : L'utilisation de ce type de variable est facultative. Si vous laissez le champ vide, chaque cycle est enregistré.
Configurez les paramètres suivants dans le Paramètres d'échantillonnage grouper:
Groupe de tâches du profileur: Nom du groupe de tâches qui contient la tâche générée automatiquement pour le profilage (voir ci-dessus : prérequis dans la configuration de la tâche).
Intervalle d'échantillonnage: Temps entre les mesures (recommandé : valeur du temps de cycle de la tâche)
Profondeur maximale de la pile d'appels qui doit être déterminé à chaque fois.
En dessous de Apparence de l'instantané, sélectionnez le Format de l'heure pour afficher l'enregistrement.
Cliquez sur
pour télécharger l'application sur le contrôleur.L'affichage
s'affiche dans la barre d'état de CODESYS Profiler.
Cliquez sur
pour lancer l'application.Le projet s'exécute et vous voyez les valeurs des variables actuelles dans la vue de surveillance habituelle.
Si vous avez configuré une variable booléenne comme condition pour démarrer le profilage, définissez maintenant cette variable sur
TRUE
.Regardez maintenant les résultats de l'échantillonnage. Ouvrez l'éditeur de l'objet Profiler et son
En ligne languette. Clique le Actualiser l'instantané bouton et de nouveau après un certain temps.
Vous voyez l'arbre d'appel de la tâche à mesurer. Pour les blocs individuels, le nombre respectif d'échantillons (mesures) et le temps total déterminé que les appels de bloc consomment sont affichés.