Recurso de rastreo
El recurso de rastreo le ayuda a aislar los problemas del sistema supervisando los sucesos del sistema seleccionados o los procesos seleccionados. Los sucesos que se pueden supervisar incluyen: entrada y salida a subrutinas seleccionadas, rutinas de kernel, rutinas de extensión de kernel y manejadores de interrupciones.
El rastreo también se puede restringir al rastreo de un conjunto de procesos o hebras en ejecución, o se puede utilizar para iniciar y rastrear un programa.
Cuando el recurso de rastreo está activo, la información se registra en un archivo de registro de rastreo del sistema. El recurso de rastreo incluye mandatos para activar y controlar rastreos y generar informes de rastreo. Las aplicaciones y extensiones de kernel pueden utilizar varias subrutinas para registrar sucesos adicionales.
Para obtener más información sobre el recurso de rastreo, consulte lo siguiente:
Visión general del recurso de rastreo
El recurso de rastreo se encuentra en el conjunto de archivos bos.sysmgt.trace . Para ver si este conjunto de archivos está instalado, escriba lo siguiente en la línea de mandatos:
lslpp -l | grep bos.sysmgt.trace
Si se genera una línea que incluye bos.sysmgt.trace , se instala el conjunto de archivos; de lo contrario, debe instalarlo.
El recurso de rastreo del sistema registra los sucesos de rastreo que el mandato de informe de rastreo puede formatear posteriormente. Los sucesos de rastreo se compilan en código de kernel o de aplicación, pero sólo se rastrean si el rastreo está activo.
El rastreo se activa con el mandato trace o la subrutina trcstart . El rastreo se detiene con el mandato trcstop o la subrutina trcstop . Mientras está activo, el rastreo se puede suspender o reanudar con los mandatos trcoff y trcon o las subrutinas trcoff y trcon .
Una vez que el rastreo se ha detenido con trcstop, se puede generar un informe de rastreo con el mandato trcrpt . Este mandato utiliza un archivo de plantilla, /etc/trcfmt, para saber cómo formatear las entradas. Las plantillas se instalan con el mandato trcupdate . Para obtener una descripción de las plantillas, consulte el mandato trcupdate .
Control del rastreo
El mandato trace inicia el rastreo de sucesos del sistema y controla el almacenamiento intermedio de rastreo y los tamaños de archivo de registro.
Existen tres métodos para recopilar datos de rastreo.
- El método predeterminado es utilizar 2 almacenamientos intermedios para recopilar datos de rastreo de forma continua, grabando un almacenamiento intermedio mientras los datos se colocan en el otro almacenamiento intermedio. El archivo de registro se ajusta cuando se llena.
- El método circular recopila datos de rastreo continuamente, pero sólo graba los datos en el archivo de registro cuando se detiene el rastreo. Esto es especialmente útil para depurar un problema en el que sabe cuándo se está produciendo el problema y sólo desea capturar los datos en ese momento. Puede iniciar el rastreo en cualquier momento y, a continuación, detenerlo justo después de que se produzca el problema y habrá capturado los sucesos en torno al problema. Este método se habilita con el distintivo de daemon de rastreo -l .
- La tercera opción sólo utiliza un almacenamiento intermedio de rastreo y abandona el rastreo cuando dicho almacenamiento intermedio se llena y graba el almacenamiento intermedio en el archivo de registro. El rastreo no se detiene en este punto, sino que se desactiva como si se hubiera emitido un mandato trcoff . En este punto, normalmente deseará detener el rastreo con el mandato trcstop . Esta opción se utiliza con más frecuencia para recopilar datos de rendimiento en los que no queremos que el rastreo realice un intercambio de E/S o almacenamiento intermedio hasta que se hayan recopilado los datos. Utilice el distintivo -f para habilitar esta opción.
Normalmente deseará ejecutar el mandato de rastreo de forma asíncrona, es decir, desea especificar el mandato de rastreo y, a continuación, continuar con otro trabajo. Para ejecutar el rastreo de forma asíncrona, utilice el distintivo -a o el distintivo -x . Si utiliza el distintivo -a , debe detener el rastreo con el mandato trcstop . Si utiliza el distintivo -x , el rastreo se detiene automáticamente cuando finaliza el programa.
Normalmente es deseable limitar la información que se rastrea. Utilice los distintivos -j events o -k events para especificar un conjunto de sucesos para incluir (-j) o excluir (-k).
Para visualizar los nombres de programa asociados con los enganches de rastreo, deben estar habilitados determinados enganches. Se especifican utilizando el grupo de sucesos de rastreo tidhk . Por ejemplo, si desea rastrear el enganche mbuf , 254, y mostrar también nombres de programa, debe ejecutar trace como se indica a continuación:
trace -aJ tidhk -j 254
Se produce el rastreo. Para detener el rastreo, escriba lo siguiente en una línea de mandatos:
trcstop
trcrpt -O exec=on
La opción trcrpt -O exec=on muestra los nombres de programa; consulte el mandato trcrpt para obtener más información.
A menudo es aconsejable especificar el tamaño del almacenamiento intermedio y el tamaño máximo del archivo de registro. Los almacenamientos intermedios de rastreo requieren que haya memoria real disponible para que no sea necesaria ninguna paginación para registrar los enganches de rastreo. El archivo de registro se rellenará con el tamaño máximo especificado y, a continuación, se recortará, descartando los datos de rastreo más antiguos. Los distintivos -T size y -L size especifican el tamaño de los almacenamientos intermedios de memoria y el tamaño máximo de los datos de rastreo en el archivo de registro en bytes.
El rastreo también se puede controlar desde una aplicación. Consulte los artículos trcstarty trcstop .
Registro de datos de sucesos de rastreo
Hay dos tipos de datos de rastreo.
- datos genéricos
- consta de una palabra de datos, un almacenamiento intermedio de datos opacos y la longitud de los datos opacos. Esto es útil para rastrear elementos como nombres de vía de acceso. Consulte el artículo Canales de rastreo genérico en la Visión general del recurso de rastreo. Se puede encontrar en Recurso de rastreo.Nota: El rastreo de procesos o hebras específicos sólo está soportado para el canal 0. No está soportado para canales de rastreo genéricos.
- Datos no genéricos
- Esto es lo que normalmente rastrea el sistema operativo AIX®. Cada entrada de este tipo consta de una palabra de enganche y hasta 5 palabras de datos de rastreo. Para una aplicación de 64 bits son palabras de 8 bytes. El programador C debe utilizar las macros TRCHKL0 a través de TRCHKL5, y TRCHKL0T a través de TRCHKL5T definido en el archivo /usr/include/sys/trcmacros.h , para registrar datos no genéricos. Si estas macros no se pueden utilizar, consulte el artículo sobre la subrutina utrchook .
Generación de un informe de rastreo
Consulte el artículo sobre el mandato trcrpt para obtener una descripción completa de trcrpt. Este mandato se utiliza para generar un informe de rastreo legible a partir del archivo de registro generado por el mandato trace . De forma predeterminada, el mandato formatea los datos del archivo de registro predeterminado, /var/adm/ras/trcfile. La salida trcrpt se graba en la salida estándar.
Para generar un informe de rastreo a partir del archivo de registro predeterminado y grabarlo en /tmp/rptout, especifique
trcrpt >/tmp/rptout
Para generar un informe de rastreo desde el archivo de registro /tmp/tlog a /tmp/rptout, que incluye nombres de programa y nombres de llamada al sistema, utilice
trcrpt -O exec=on,svc=on /tmp/tlog /tmp/rptout
Extracción de datos de rastreo de un vuelco
Si el rastreo estaba activo cuando el sistema realiza un vuelco, el rastreo normalmente se puede recuperar con el mandato trcdead . Para evitar sobrescribir el archivo de registro de rastreo predeterminado en el sistema actual, utilice la opción -o archivo-salida .
Por ejemplo:
trcdead -o /tmp/tlog /var/adm/ras/vmcore.0
crea un archivo de registro de rastreo /tmp/tlog que puede formatearse con lo siguiente:
trcrpt /tmp/tlog
Mandatos del recurso de rastreo
Los mandatos siguientes forman parte del recurso de rastreo:
| Mandato | Función |
|---|---|
| rastreo | Inicia el rastreo de sucesos del sistema. Con este mandato, puede controlar el tamaño y gestionar el archivo de registro de rastreo, así como los almacenamientos intermedios de rastreo internos que recopilan datos de sucesos de rastreo. |
| trcdead | Extrae información de rastreo de un vuelco del sistema. Si el sistema se detiene mientras los recursos de rastreo están activos, se capturan los contenidos de los almacenamientos intermedios de rastreo internos. Este mandato extrae los datos de sucesos de rastreo del volcado y los graba en el archivo de registro de rastreo. |
| trcnm | Genera una lista de nombres de kernel utilizada por el mandato trcrpt . Una lista de nombres de kernel se compone de una tabla de símbolos y una tabla de símbolos de cargador de un archivo de objeto. El mandato trcrpt utiliza el archivo de lista de nombres de kernel para interpretar las direcciones al formatear un informe desde un archivo de registro de rastreo. Nota: Se recomienda utilizar la opción -n trace en lugar de trcnm. Esto coloca la información de lista de nombres en el archivo de registro de rastreo en lugar de en un archivo separado, e incluye símbolos de las extensiones del kernel.
|
| trcrpt | Formatea informes de datos de sucesos de rastreo contenidos en el archivo de registro de rastreo. Puede especificar los sucesos que se deben incluir (u omitir) en el informe, así como determinar la presentación de la salida con este mandato. El mandato trcrpt utiliza las plantillas de formato de rastreo almacenadas en el archivo /etc/trcfmt para determinar cómo interpretar los datos registrados para cada suceso. |
| trcstop | Detiene el rastreo de sucesos del sistema. |
| fecha_trcupón | Actualiza las plantillas de formato de rastreo almacenadas en el archivo /etc/trcfmt . Cuando se añaden aplicaciones o extensiones de kernel que registran sucesos de rastreo, se deben añadir plantillas para estos sucesos al archivo /etc/trcfmt . El mandato trcrpt utilizará las plantillas de formato de rastreo para determinar cómo interpretar los datos registrados para cada suceso. Los productos de software que registran sucesos suelen ejecutar el mandato trcupdate como parte del proceso de instalación. |
Llamadas y subrutinas del recurso de rastreo
Las siguientes llamadas y subrutinas forman parte del recurso de rastreo:
| Subrutina | Descripción |
|---|---|
| trcgen, trcgent | Registra sucesos de rastreo de más de cinco palabras de datos. La subrutina trcgen se puede utilizar para registrar un suceso como parte del rastreo de sucesos del sistema (canal de rastreo 0) o para registrar un suceso en un canal de rastreo genérico (canales 1 a 7). Especifique el número de canal en un parámetro de subrutina al registrar el suceso de rastreo. La subrutina trcgent añade una indicación de fecha y hora a los datos de suceso. Cuando se utiliza AIX 5L Versión 5.3 con el nivel tecnológico 5300-05 y superior, la indicación de fecha y hora siempre se añade a los datos de suceso independientemente de la subrutina utilizada. Utilice trcgenk y trcgenkt en el kernel. Los programadores de C siempre deben utilizar las macros TRCGEN y TRCGENK . |
| utrchook, utrchook64 | Registra sucesos de rastreo de hasta cinco palabras de datos. Estas subrutinas se pueden utilizar para registrar un suceso como parte del rastreo de sucesos del sistema (canal de rastreo 0). Los programadores de kernel pueden utilizar trchook y trchook64. Los programadores de C siempre deben utilizar TRCHKL0 - TRCHKL5 y TRCHKL0T -TRCHKL5T macros. Si no utiliza estas macros, debe crear su propia palabra de enganche de rastreo. El formato se documenta con el archivo /etc/trcfmt . Tenga en cuenta que los rastreos de 32 bits y 64 bits tienen distintos formatos de palabras de enganche. |
| trcoff | Suspende la recopilación de datos de rastreo en el canal de rastreo de sucesos del sistema (canal 0) o en un canal de rastreo genérico (1 a 7). El canal de rastreo permanece activo y la recopilación de datos de rastreo se puede reanudar utilizando la subrutina trcon . |
| trcon | Inicia la recopilación de datos de rastreo en un canal de rastreo. El canal puede ser el canal de rastreo de sucesos del sistema (0) o un canal genérico (1 a 7). Sin embargo, el canal de rastreo debe haberse activado previamente utilizando el mandato trace o la subrutina trcstart . Puede suspender la recopilación de datos de rastreo utilizando la subrutina trcoff . |
| inicio trc | Proporciona una interfaz de biblioteca para el mandato de rastreo. Devuelve el número de canal del rastreo que inicia. Si se solicita un canal genérico, el número de canal es uno de los siguientes números: 1,2,3,4,5,6, 7. De lo contrario, el número de canal es 0. |
| trcstop | Libera y desactiva un canal de rastreo genérico. |
Archivos de recurso de rastreo
| Archivo | Descripción |
|---|---|
| /etc/trcfmt | Contiene las plantillas de formato de rastreo utilizadas por el mandato trcrpt para determinar cómo interpretar los datos registrados para cada suceso. |
| /var/adm/ras/trcfile | Contiene el archivo de registro de rastreo predeterminado. El mandato trace le permite especificar un archivo de registro de rastreo diferente. |
| /usr/include/sys/trchkid.h | Contiene definiciones de identificador de enganche de rastreo. |
| /usr/include/sys/trcmacros.h | Contiene macros utilizadas habitualmente para registrar sucesos de rastreo. |
Rastrear datos de suceso
Consulte el archivo /etc/trcfmt para ver el formato de los datos de suceso de rastreo.
Rastrear identificadores de enganche
hhh00000donde hhh es el ID de enganche.hhhh0000donde hhhh es el ID de enganche.Un identificador de tres dígitos tiene un 0 implícito en su dígito menos significativo, de modo que un identificador de enganche de 32 bits es equivalente a un enganche de 64 bits con el formato hhh0.
La mayoría de los identificadores de enganche de rastreo se definen en el archivo /usr/include/sys/trchkid.h . Los valores de 0x0100 a 0x0FF0 están disponibles para que los utilicen las aplicaciones de usuario de 64 bits. Los valores 0x010 a 0x0FF están disponibles para que los utilicen las aplicaciones de usuario de 32 bits. Todos los demás valores están reservados para uso del sistema. Los identificadores de gancho de rastreo definidos actualmente pueden listarse utilizando el comando trcrpt -j.
Canales de rastreo genérico del recurso de rastreo
El recurso de rastreo admite hasta ocho sesiones de rastreo activas a la vez. Cada sesión de rastreo utiliza un canal del archivo especial de rastreo multiplexado, /dev/systrace. El canal 0 lo utiliza el recurso de rastreo para registrar sucesos del sistema. El rastreo de sucesos del sistema se inicia y detiene mediante los mandatos trace y trcstop . Si rastrea procesos o hebras específicos, o si se rastrea un programa, sólo se utiliza el canal 0. Los canales 1 a 7 se conocen como canales de rastreo genéricos y solo los pueden utilizar los subsistemas para otros tipos de rastreo, como el rastreo de enlace de datos.
Para implementar el rastreo utilizando los canales de rastreo genéricos del recurso de rastreo, un subsistema llama a la subrutina trcstart para activar un canal de rastreo y determinar el número de canal. A continuación, los módulos de subsistema pueden registrar sucesos de rastreo utilizando las macros TRCGEN o TRCGENT , o si es necesario, trcgen, trcgent, trcgenko subrutina trcgenkt . El número de canal devuelto por la subrutina trcstart es uno de los parámetros que se deben pasar a estas subrutinas. El subsistema puede suspender y reanudar la recopilación de datos de rastreo utilizando las subrutinas trcoff y trcon y puede desactivar un canal de rastreo utilizando la subrutina trcstop . El subsistema debe proporcionar la interfaz de usuario para activar y desactivar el rastreo del subsistema.
Los ID de enganche de rastreo, la mayoría de los cuales se almacenan en el archivo /usr/include/sys/trchkid.h , y las plantillas de formato de rastreo, que se almacenan en el archivo /etc/trcfmt , se comparten entre todos los canales de rastreo.