démon de trace

Objectif

Enregistre les événements système sélectionnés.

Syntaxe

trace [ -a [ -g ] ] [ -f | -l ] [ -c] [ -C [ CPUList | all ] ] [ -d ] [ -e string-cmd ] [ -h ] [ -j EventList ] [ -k EventgroupList ] [ -J EventgroupList ] [ -K EventgroupList ] [ -m Message ] [ -M ] [ -N ] [  -n ] [ -o Nom ] [ -o- ] [ -p ] [ -r reglist ] [ -s ] [ -A ProcessIDList ] [ -t ThreadIDList ] [ -x spécification-programme | -X spécification-programme ] [ -I ] [ -P trace-propagation ] [ -L Taille ] [ -T Taille ] [ -W ] [ -@ WparList ]

Descriptif

Le démon trace configure une session de trace et démarre la collecte des événements système. Les données collectées par la fonction de trace sont enregistrées dans le fichier journal de trace. Un rapport du journal de trace peut être généré à l'aide de la commande trcrpt .

Lorsqu'il est appelé avec les indicateurs -a, -xou -X , le démon de trace est exécuté de manière asynchrone (par exemple, en tant que tâche d'arrière-plan). Sinon, il est exécuté de manière interactive et vous invite à entrer des sous-commandes.

Pour placer l'ID configuré (CID) WPARdans les points d'ancrage de trace, utilisez l'indicateur -W .

Pour tracer une WPARspécifique, utilisez l'indicateur -@ avec une liste de noms WPAR à tracer.

Vous pouvez utiliser l'outil SMIT (System Management Interface Tool) pour exécuter le démon trace . Pour utiliser SMIT, entrez:

smit trace

Les modes de collecte des données de trace sont les suivants:

Article Descriptif
Autre (valeur par défaut) Tous les événements de trace sont capturés dans le fichier journal de trace.
Circulaire ( -l) Les événements de trace sont encapsulés dans les mémoires tampon en mémoire et ne sont pas capturés dans le fichier journal de trace tant que la collecte des données de trace n'est pas arrêtée.
Unique ( -f) La collecte des événements de trace s'arrête lorsque la mémoire tampon de trace en mémoire se remplit et que le contenu de la mémoire tampon est capturé dans le fichier journal de trace.
Allocation de la mémoire tampon Les tampons de trace sont alloués à partir du segment de mémoire du noyau ou placés dans des segments distincts. Par défaut, les mémoires tampon sont allouées à partir du segment de mémoire du noyau, sauf si la taille de mémoire tampon demandée est trop grande pour que les mémoires tampon puissent tenir dans le segment de mémoire du noyau, auquel cas elles sont allouées dans des segments distincts. L'allocation de mémoires tampon à partir de segments distincts entrave quelque peu les performances de la trace. Cependant, les mémoires tampon dans des segments distincts ne prendront pas d'espace de pagination, uniquement de la mémoire réservée.

Vous pouvez choisir de ne tracer que les processus ou les unités d'exécution sélectionnés. Vous pouvez également tracer un seul programme. Vous pouvez indiquer si la trace doit être propagée ou étendue aux processus ou unités d'exécution nouvellement créés. Lorsque le canal 0 est actif, vous pouvez éventuellement inclure des événements d'interruption dans ces traces.

Remarque :
  1. A moins que la trace ne soit démarrée avant le processus en cours de trace, les événements de démarrage du processus ne sont pas capturés. Si la trace est démarrée avant le processus en cours de trace, certains événements provenant de processus autres que le processus en cours de trace seront également capturés.
  2. Lorsque la trace utilise la mémoire du segment de mémoire du noyau, cette mémoire reste une partie de la mémoire du noyau jusqu'au prochain réamorçage du système. Par conséquent, vous devez être prudent lorsque vous utilisez des tampons de grande taille.

Indicateurs

Article Descriptif
-@ WparList Trace les partitions de charge de travail que vous spécifiez dans le paramètre WparList . Plusieurs noms de WPAR peuvent être séparés par des virgules ou entre guillemets et séparés par des espaces. Pour inclure le système global en cours dans la trace, indiquez Global. Vous pouvez uniquement spécifier l'indicateur -@ dans le système global dans un environnement de partition de charge de travail .
-a Exécute le démon trace de manière asynchrone (c'est-à-dire en tant que tâche d'arrière-plan). Une fois que la trace a été démarrée de cette manière, vous pouvez utiliser les commandes trcon, trcoffet trcstop pour démarrer le traçage, arrêter le traçage ou quitter la session de trace. Ces commandes sont implémentées sous forme de liens vers la trace .
-A ProcessIDList Trace uniquement les processus et, éventuellement, leurs enfants spécifiés avec ProcessIDList. Un ID de processus est un nombre décimal. Plusieurs ID de processus peuvent être séparés par des virgules ou placés entre guillemets et séparés par des espaces. L'indicateur -A n'est valide que pour le canal de trace 0; les indicateurs -A et -g sont incompatibles.

Toutes les unités d'exécution existantes pour les processus spécifiés lors du démarrage de la fonction de trace sont tracées. Par défaut, si, après le démarrage de la trace, les processus tracés créent des unités d'exécution ou des processus supplémentaires, ils ne sont pas tracés sauf si l'indicateur -P est spécifié.

-c Sauvegarde le fichier journal de trace en ajoutant .old à son nom.
-C [ CPUList | tout ] Les traces utilisent un ensemble de mémoires tampon par processeur dans CPUList. Les processeurs peuvent être séparés par des virgules ou placés entre guillemets et séparés par des virgules ou des blancs. Pour tracer tous les processeurs, spécifiez all. Etant donné que cet indicateur utilise un ensemble de mémoires tampon par processeur et génère un fichier par processeur, il peut consommer de grandes quantités de mémoire et d'espace fichier et doit être utilisé avec précaution. Les fichiers générés sont nommés trcfile, trcfile-0, trcfile-1, etc., où 0, 1, etc. sont les numéros de processeur. Si -T ou -L sont spécifiés, les tailles s'appliquent à chaque ensemble de mémoires tampon et à chaque fichier. Sur un système uniprocesseur, vous pouvez spécifier-C all, mais-Cavec une liste de numéros de processeur est ignorée.
Attention : L'option -C ne peut être utilisée que par l'utilisateur root.
-d Désactive le démarrage automatique de la collecte des données de trace. Retarde le démarrage de la collecte des données de trace. Normalement, la collecte des données de trace démarre automatiquement lorsque vous exécutez le démon trace . Utilisez la commande trcon pour démarrer la collecte des données de trace.
-e cmd-chaîne Configure la trace de composant en exécutant ctctrl avec string-cmd comme argument avant le démarrage de la trace. En d'autres termes, il exécute ctctrl string-cmd. La transmission de plusieurs options -e est autorisée et équivaut à l'exécution successive de la commande ctctrl avec chaque string-cmd d'arguments. Cette option peut être utilisée pour configurer le mode de trace système (en définissant le mode de trace système sur On, en modifiant le niveau de trace, etc.) pour certains composants juste avant de commencer à tracer le système.
-f Exécute trace dans un mode unique. Provoque l'arrêt de la collecte des données de trace dès que la mémoire tampon en mémoire est remplie. Les données de trace sont ensuite écrites dans le journal de trace. Utilisez la commande trcon pour redémarrer la collecte des données de trace et capturer une autre mémoire tampon complète de données. Si vous exécutez la sous-commande trcoff avant que la mémoire tampon ne soit saturée, la collecte des données de trace est arrêtée et le contenu en cours de la mémoire tampon est consigné dans le journal de trace.
-g Démarre une session de trace sur un canal de trace générique (canaux 1 à 7). Cet indicateur fonctionne uniquement lorsque la trace est exécutée de manière asynchrone (-a). Le code retour de la commande est le numéro de canal ; le numéro de canal doit ensuite être utilisé dans les appels de sous-programmes de trace génériques. Pour arrêter la session de trace générique, utilisez la commande trcstop-<channel_number>.
-h Omet l'enregistrement d'en-tête dans le journal de trace. Normalement, tracedaemonécrit un enregistrement d'en-tête avec la date et l'heure (à partir de la commande date ) au début du journal de trace ; le nom du système, la version et l'édition, l'identification du nœud et l'identification de la machine (à partir de la commande uname -a ) ; et un message défini par l'utilisateur. Au début du journal de trace, les informations de l'enregistrement d'en-tête sont incluses dans la sortie de la commande trcrpt .
-I Trace des événements d'interruption. Lorsqu'il est spécifié avec -A ou -t, l'indicateur -I inclut les événements d'interruption ainsi que les événements des processus ou des unités d'exécution spécifiés. Lorsque -I est spécifié, mais que ni -A ni -t ne sont spécifiés, seuls les événements au niveau de l'interruption sont tracés. L'indicateur -I n'est valide que pour le canal de trace 0 ; les indicateurs -I et -g sont incompatibles.
-j EventList Indique les événements définis par l'utilisateur pour la collecte des données de trace. Les éléments de liste spécifiés dans le paramètre EventList peuvent être séparés par des virgules ou placés entre guillemets et séparés par des virgules ou des espaces. Dans AIX 6.1 et les éditions antérieures, la spécification d'un ID de point d'ancrage à deux chiffres sous la forme hh indique hh00, hh10,...,hhF0. La spécification d'un ID de point d'ancrage à trois chiffres au format hhh indique hhh0. La spécification d'un ID de point d'ancrage à quatre chiffres au format hhhh indique hhhh.

Si l'un de ces événements est manquant, les informations signalées par la commande trcrpt seront incomplètes. Par conséquent, lorsque vous utilisez l'indicateur -j , incluez tous ces événements dans EventList. Si vous démarrez la trace avec SMIT ou l'indicateur -J , ces événements se trouvent dans le groupe tidhk .

-J EventgroupList Indique les groupes d'événements à inclure. Les éléments de liste spécifiés dans le paramètre EventgroupList peuvent être séparés par des virgules ou placés entre guillemets et séparés par des virgules ou des espaces. Les indicateurs -J et -K fonctionnent comme -j et -k, sauf avec des groupes d'événements au lieu d'ID de point d'ancrage individuels. Vous pouvez spécifier chaque indicateur -j, -J, -ket -K dans la commande.
-k EventgroupList Indique les événements définis par l'utilisateur pour exclure les données de trace. Les éléments de liste spécifiés dans le paramètre EventgroupList peuvent être séparés par des virgules ou placés entre guillemets et séparés par des virgules ou des espaces. Dans AIX 6.1 et les éditions antérieures, la spécification d'un ID de point d'ancrage à deux chiffres sous la forme hh indique hh00, hh10,...,hhF0. La spécification d'un ID de point d'ancrage à trois chiffres au format hhh indique hhh0. La spécification d'un ID de point d'ancrage à quatre chiffres au format hhhh indique hhhh.
Astuce: Les événements suivants sont utilisés pour déterminer le pid, le cpuidet le nom de chemin exec dans le rapport trcrpt :
106 DISPATCH
10C DISPATCH IDLE PROCESS
134 EXEC SYSTEM CALL
139 FORK SYSTEM CALL
465 KTHREAD CREATE

Si l'un de ces événements est manquant, les informations signalées par la commande trcrpt seront incomplètes. Lorsque vous utilisez l'indicateur -k , n'incluez pas ces événements dans le paramètre EventgroupList . Si vous démarrez la trace avec SMIT ou l'indicateur -J , ces événements se trouvent dans le groupe tidhk .

-K EventgroupList Indique les groupes d'événements à exclure. Les éléments de liste spécifiés dans le paramètre EventgroupList peuvent être séparés par des virgules ou placés entre guillemets et séparés par des virgules ou des espaces. Les indicateurs -J et -K fonctionnent comme -j et -k, sauf avec des groupes d'événements au lieu d'ID de point d'ancrage individuels. Vous pouvez spécifier chaque indicateur -j, -J, -ket -K dans la commande.
-l Exécute trace en mode circulaire. Le démon trace écrit les données de trace dans le journal de trace lorsque la collecte des données de trace est arrêtée. Seule la dernière mémoire tampon des données de trace est capturée. Lorsque vous arrêtez la collecte des données de trace à l'aide de la commande trcoff , redémarrez-la à l'aide de la commande trcon.
-L Taille Remplace la taille du fichier journal de trace par défaut de 1 Mo par la valeur indiquée. Si vous spécifiez une taille de fichier égale à zéro, la taille du fichier journal de trace est définie sur la taille par défaut.

Remarque: Dans les modes circulaire et alternatif, la taille du fichier journal de trace doit être au moins deux fois supérieure à la taille de la mémoire tampon de trace. En mode unique, le fichier journal de trace doit avoir au moins la taille de la mémoire tampon. Voir l'indicateur -T pour plus d'informations sur le contrôle de la taille de la mémoire tampon de trace.

-m Message Indique le texte à inclure dans la zone de message de l'enregistrement d'en-tête du journal de trace.
-M Vide la mappe d'adresses des processus en cours d'exécution dans la trace. L'indicateur -M doit être spécifié si le fichier de trace doit être traité par la commande tprof .
-n Ajoute des informations à l'en-tête du journal de trace: informations de verrouillage, informations matérielles et, pour chaque entrée de chargeur, le nom du symbole, l'adresse et le type.
-n Vider la mappe d'adresses des processus spécifiés dans la trace. L'option -N est utilisée conjointement avec l'option -M .
-o Nom Remplace le fichier journal de trace par défaut /var/adm/ras/trcfile et écrit les données de trace dans un fichier défini par l'utilisateur.
-o- Remplace le nom du journal de trace par défaut et écrit les données de trace dans la sortie standard. L'indicateur -c est ignoré lors de l'utilisation de cet indicateur. Une erreur est générée si -o- et -C sont spécifiés.
-P Inclut le cpuid du processeur en cours avec chaque point d'ancrage. Cet indicateur est valide uniquement pour les traces de noyau 64 bits.

Remarque: La commande trcrpt peut indiquer le cpuid, que cette option soit spécifiée ou non.

-P propagation La propagation est spécifiée avec les lettres p pour la propagation dans la création de processus, t pour la propagation dans la création d'unité d'exécution et n pour la non propagation. La propagation à travers la création de processus implique la propagation à travers la création d'unités d'exécution. Par exemple, si -A est spécifié pour tracer un processus, toutes les unités d'exécution de ce processus qui existent au moment du démarrage de la trace sont tracées. Les indicateurs -Pt entraînent également la trace de toutes les unités d'exécution créées ultérieurement par ce processus. Si -Pp est spécifié, tous les processus et unités d'exécution créés ultérieurement par ce processus sont tracés. Si -t all a été spécifié pour tracer toutes les unités d'exécution, -P est ignoré. L'indicateur -P n'est valide que pour le canal de trace 0; les indicateurs -P et -g sont incompatibles.
-r liste de valeurs Facultatif et valide uniquement pour un trace exécuté sur un noyau 64 bits. Les éléments reglist sont séparés par des virgules ou placés entre guillemets et séparés par des blancs. Vous pouvez indiquer jusqu'à 8 registres. Les valeurs reglist valides sont les suivantes:
PURR-Le PURR
S'enregistrer pour ce processeur
SPURR
Registre SPURR pour ce processeur
MCR0, MCR1, MCRA-MCR
Registres, 0, 1 et A
PMC1, PMC2, ... PMC8 -PMC
Registres 1 à 8.

Lorsque l'indicateur -r est spécifié, la commande trace vide les valeurs d'enregistrement spécifiées dans l'en-tête.

Restriction: tous les registres ne sont pas valides pour tous les processeurs.
-S Arrête le traçage lorsque le journal de trace est rempli. Le démon trace encapsule normalement le journal de trace lorsqu'il se remplit et continue à collecter des données de trace. Lors d'une opération asynchrone, cet indicateur provoque l'arrêt de la collecte des données de trace par le démon trace . (Au cours d'une opération interactive, la sous-commande quit doit être utilisée pour arrêter la trace.)
-t ThreadIDList Trace uniquement les unités d'exécution spécifiées avec le paramètre ThreadIDList . Un ID d'unité d'exécution est un nombre décimal. Plusieurs ID d'unité d'exécution peuvent être séparés par des virgules ou placés entre guillemets et séparés par des espaces.

De plus, la liste des unités d'exécution peut être all ou *, ce qui indique que toutes les unités d'exécution doivent être tracées. Cela est utile pour le traçage de tous les événements liés aux unités d'exécution sans traçage des événements liés aux interruptions. Toutefois, si -t all et -I sont tous deux spécifiés, cela revient à ne spécifier aucun événement ; tous les événements sont tracés. Une autre façon de dire cela est que trace et trace -It all sont identiques.

L'option -t n'est valable que pour le canal de traçage " 0, les options -t et -g sont incompatibles.

-T Taille

Remplace la taille de mémoire tampon de trace par défaut de 128 Ko par la valeur indiquée. Vous devez être l'utilisateur root pour demander plus de 1 Mo d'espace de mémoire tampon. La taille maximale possible est 268435184 octets, sauf si l'indicateur -f est utilisé, auquel cas il s'agit de 536870368 octets. La taille la plus petite possible est de 8192 octets, sauf si l'indicateur -f est utilisé, auquel cas il est de 16392 octets. Les tailles comprises entre 8192 et 16392 seront acceptées lors de l'utilisation de l'indicateur -f ; toutefois, la taille réelle utilisée sera de 16392 octets.

Remarque: Dans les modes circulaire et alternatif, la taille de la mémoire tampon de trace doit être inférieure ou égale à la moitié de la taille du fichier journal de trace. En mode unique, le fichier journal de trace doit avoir au moins la taille de la mémoire tampon. Pour plus d'informations sur le contrôle de la taille du fichier journal de trace, voir l'indicateur -L . Notez également que les tampons de trace utilisent de la mémoire réservée, ce qui signifie qu'ils ne sont pas paginables. Par conséquent, plus les tampons de trace sont grands, moins la mémoire physique est disponible pour les applications.

Le système tente d'allouer l'espace de mémoire tampon à partir du segment de mémoire du noyau. Si cette demande ne peut pas être satisfaite, le système tente alors d'allouer les mémoires tampon en tant que segments distincts.

L'indicateur -f utilise en fait deux mémoires tampon, qui se comportent comme une seule mémoire tampon (sauf qu'un point d'ancrage de trace de bouclage de mémoire tampon est enregistré lorsque la première mémoire tampon est remplie).

-W Utilisez l'indicateur -W pour inclure l'ID configuré (CID) de la partition de charge de travailpour le processus en cours avec chaque point d'ancrage. Cet indicateur n'est valide que dans le système global d'un environnement de partition de charge de travail .
Astuce: La commande trcrpt peut signaler le CID de la partition de charge de travail, que cette option soit spécifiée ou non.
-x spécification de programme Trace le programme indiqué. La spécification de programme spécifie un programme et des paramètres tels qu'ils seraient lors de l'exécution du programme à partir de l'interpréteur de commandes, à ceci près que la spécification de programme doit être entre guillemets si le nom du programme n'est pas le seul. La trace est arrêtée automatiquement lorsque le programme se ferme et renvoie le code retour du programme. Par défaut, tous les processus et unités d'exécution créés par le programme sont également tracés ; comme si -Pp était spécifié. Pour modifier ce comportement, utilisez -Pn pour ne spécifier aucune propagation de trace ou -Pt pour propager la trace uniquement aux unités d'exécution créées par le processus d'origine du programme.
Astuce: L'indicateur -x implique un traçage asynchrone, comme si l'indicateur -a avait également été spécifié.
-X spécification de programme L'option -X fonctionne comme l'option -x, sauf que la trace n'est pas automatiquement arrêtée lorsque le programme se termine. Cela est utile pour le traçage des programmes qui traitent les processus, puis s'arrêtent, et vous souhaitez que ces nouveaux processus soient également tracés.

Sous-commandes

Lorsqu'elle est exécutée en mode interactif, la fonction de trace reconnaît les sous-commandes suivantes:

Article Descriptif
trcon Démarre la collecte des données de trace.
trcoff Arrête la collecte des données de trace.
q ou quit [-serial | -dd ] Arrête la collecte des données de trace et quitte trace. Si l'option -s est spécifiée, cette commande sérialise toutes les opérations d'E-S en attente. Si l'option -d est spécifiée, toute opération d'E-S en attente est supprimée.
! Commande Exécute la commande shell spécifiée par le paramètre Commande .
? Affiche le récapitulatif des sous-commandes trace .

Signaux

Le signal INTERRUPT agit comme un bouton à bascule pour démarrer et arrêter la collecte des données de trace. Les interruptions sont définies sur SIG_IGN pour le processus tracé.

Security

Attention aux utilisateurs du contrôle d'accès à base de rôles: Cette commande peut effectuer des opérations privilégiées. Seuls les utilisateurs privilégiés peuvent exécuter des opérations privilégiées. Pour plus d'informations sur les autorisations et les privilèges, voir Base de données des commandes privilégiées dans Sécurité. Pour obtenir la liste des privilèges et des autorisations associés à cette commande, voir la commande 'lssecattr ou la sous-commande 'getcmdattr
Pour exécuter la commande trace sur le canal 0, vous devez disposer des autorisations supplémentaires suivantes, si la restriction trace du canal 0 est activée dans la commande trcctl :
Article Descriptif
aix.ras.trace.tracech0 Obligatoire pour exécuter la commande trace sur le canal 0.
Remarque: Par défaut, les utilisateurs des groupes racine et système sont des utilisateurs privilégiés.
Pour exécuter toutes les fonctionnalités de toutes les commandes, y compris la commande trace sur le canal 0, vous devez disposer des autorisations supplémentaires suivantes:
Article Descriptif
aix.ras.trace.trace Obligatoire pour effectuer toutes les opérations de trace.

Exemples

  1. Pour utiliser la trace de manière interactive, entreztrace, (le>s'affiche), puis indiquez les sous-commandes de votre choix. Par exemple, pour tracer les événements système lors de l'exécution de la commande anycmd , entrez:
    trace
    > !anycmd
    > q
  2. Pour éviter les retards à la fin de la commande, démarrez la trace de manière asynchrone ( -a), à l'aide d'une seule ligne de commande, entrez:
    trace -a; anycmd; trcstop
  3. Pour tracer le système lui-même pendant une période de 10 secondes, entrez:
    trace -a; sleep 10; trcstop
  4. Pour générer des données de trace dans un fichier journal de trace spécifique (à la place du fichier journal de trace par défaut /var/adm/ras/trcfile ):
    trace -a -o /tmp/my_trace_log; anycmd; trcstop
  5. Pour capturer l'exécution d'une commande cp , en excluant des événements spécifiques du processus de collecte:
    trace -a -k "20e,20f" -x "cp /bin/track /tmp/junk"

    Dans l'exemple ci-dessus, l'option -k supprime la collecte des événements des fonctions " verrouiller et " débloquer (événements20e et " 20f ).

    Notez également que l'indicateur -x a été utilisé, de sorte que seuls les points d'ancrage associés au processus de commande cp seront tracés et qu'aucune activité d'interruption ne sera tracée.

  6. Pour tracer le point d'ancrage 234 et les points d'ancrage qui vous permettront de voir les noms de processus, utilisez:
    trace -a -j 234 -J tidhk
    Ceci trace les points d'ancrage dans le groupe d'événements "tidhk" plus le point d'ancrage 234.
  7. Pour que la trace utilise un ensemble de mémoires tampon par processeur, spécifiez:
    trace -aC all
    Les fichiers produits sont /var/adm/ras/trcfile, /var/adm/ras/trcfile-0, /var/adm/ras/trcfile-1, etc. jusqu'à /var/adm/ras/trcfile-(n-1), où n est le nombre de processeurs dans le système.
    Astuce : trace -aCall -o myloggénère les fichiers mylog, mylog-0, mylog-1, ...
  8. Pour tracer un programme qui démarre un processus démon et poursuivre le traçage du démon une fois le programme d'origine terminé, utilisez
    trace -X "mydaemon"
    La trace doit être arrêtée avec trcstop.
  9. Pour tracer mydaemon, qui est en cours d'exécution, utilisez:
    trace -A mydaemon-process-id -Pp
    mydaemon-process-id est le processus de mydaemon renvoyé par la commande ps . L'indicateur -Pp indique à la trace de tracer également les processus et les unités d'exécution créés par mydaemon alors que la trace est en cours d'exécution.
  10. Pour capturer PURR et PMC1 et PMC2, entrez:
    trace -ar "PURR PMC1 PMC2"
  11. Pour tracer les points d'ancrage 1A00,1A10,...,1AF0, DCA0 et 1AB1, entrez:
    trace -aj 1A,DCA,1AB1 

Fichiers

Article Descriptif
/usr/include/sys/trcmacros.h Définit les macros trchook et utrchook .
/var/adm/ras/trcfile Contient le fichier journal de trace par défaut.