Este es el comando perf-record que se puede ejecutar en el proveedor de alojamiento gratuito de OnWorks utilizando una de nuestras múltiples estaciones de trabajo en línea gratuitas, como Ubuntu Online, Fedora Online, emulador en línea de Windows o emulador en línea de MAC OS.
PROGRAMA:
NOMBRE
perf-record: ejecuta un comando y registra su perfil en perf.data
SINOPSIS
Perf grabar [-mi | --evento = EVENTO] [-l] [-a]
Perf grabar [-mi | --evento = EVENTO] [-l] [-a] - [ ]
DESCRIPCIÓN
Este comando ejecuta un comando y recopila un perfil de contador de rendimiento a partir de él, en
perf.data - sin mostrar nada.
Este archivo se puede inspeccionar más tarde, utilizando Perf (reporte).
OPCIONES
...
Cualquier comando que pueda especificar en un shell.
-e, --evento =
Seleccione el evento PMU. La selección puede ser:
· Un nombre de evento simbólico (use Perf lista para enumerar todos los eventos)
· Un evento PMU sin procesar (eventsel + umask) en forma de rNNN donde NNN es un hexadecimal
descriptor de evento.
· Un evento PMU formado simbólicamente como pmu / param1 = 0x3, param2 / dónde param1, param2,
etc se definen como formatos para la PMU en
/ sys / bus / event_sources / devices / /formato/*.
· Un evento formado simbólicamente como pmu / config = M, config1 = N, config3 = K /
donde M, N, K son números (en formato decimal, hexadecimal, octal). Aceptable
Los valores para cada uno de 'config', 'config1' y 'config2' están definidos por
entradas correspondientes en / sys / bus / event_sources / devices / /formato/*
param1 y param2 se definen como formatos para la PMU en:
/ sys / bus / event_sources / devices / /formato/*
También hay algunos parámetros que no están definidos en ... / /formato/*.
Estos parámetros se pueden utilizar para sobrecargar los valores de configuración predeterminados por evento.
Aquí hay una lista de los parámetros.
- 'period': establece el período de muestreo del evento
- 'freq': establece la frecuencia de muestreo del evento
- 'hora': deshabilita / habilita el sello de tiempo. Los valores aceptables son 1 para
habilitando el sellado de tiempo. 0 para deshabilitar el sello de tiempo.
El valor predeterminado es 1.
- 'call-graph': deshabilita / habilita callgraph. Los str aceptables son "fp" para
Modo FP, "enano" para el modo DWARF, "lbr" para el modo LBR y
"no" para deshabilitar el gráfico de llamadas.
- 'stack-size': tamaño de pila del usuario para el modo enano
Nota: Si el usuario establece explícitamente opciones que entran en conflicto con los parámetros,
se anulará el valor establecido por los parámetros.
· Un evento de punto de interrupción de hardware en forma de \ mem: addr [/ len] [: acceso] donde es addr
la dirección en la memoria que desea ingresar. El acceso es el tipo de acceso a la memoria
(leer, escribir, ejecutar) se puede pasar de la siguiente manera: \ mem: addr [: [r] [w] [x]]. len es
el rango, número de bytes de la dirección especificada, que cubrirá el punto de interrupción.
Si desea perfilar los accesos de lectura y escritura en 0x1000, simplemente configure mem: 0x1000: rw. Si
desea perfilar los accesos de escritura en [0x1000 ~ 1008), solo configure mem: 0x1000 / 8: w.
· Un grupo de eventos rodeado por un par de llaves ("{evento1, evento2, ...}"). Cada
El evento está separado por comas y el grupo debe estar entre comillas para evitar que el shell
interpretación. También debe usar --group en "informe de rendimiento" para ver los eventos del grupo.
juntos.
--filter =
Filtro de eventos. Esta opción debe seguir un selector de eventos (-e) que selecciona tracepoint
eventos). Múltiple --filtrar las opciones se combinan usando &&.
--excluir-perf
No registre eventos emitidos por el propio perf. Esta opción debe seguir un selector de eventos.
(-e) que selecciona eventos de puntos de rastreo. Agrega una expresión de filtro pid_común !=
$ PERFPID a los filtros. Si otro --filtrar existe, la nueva expresión de filtro será
combinado con ellos por &&.
-a, --todos-cpus
Colección de todo el sistema de todas las CPU.
-p, --pid =
Registre eventos en el ID de proceso existente (lista separada por comas).
-t, --tid =
Registra eventos en ID de hilo existente (lista separada por comas). Esta opción también desactiva
herencia por defecto. Habilítelo agregando - heredar.
-u, --uid =
Registra eventos en hilos propiedad de uid. Nombre o número.
-r, --realtime =
Recopile datos con esta prioridad RT SCHED_FIFO.
- sin almacenamiento en búfer
Recopile datos sin almacenar en búfer.
-c, --count =
Período del evento para muestrear.
-o, --salida =
Nombre del archivo de salida.
-i, --no-heredar
Las tareas secundarias no heredan los contadores.
-F, --freq =
Perfil a esta frecuencia.
-m, --mmap-pages =
Número de páginas de datos de mmap (debe ser una potencia de dos) o especificación de tamaño con
carácter de unidad - B / K / M / G. El tamaño se redondea hacia arriba para tener la potencia de dos páginas más cercana.
valor. Además, agregando una coma, el número de páginas de mmap para el rastreo del área AUX puede ser
especificado.
--grupo
Ponga todos los eventos en un solo grupo de eventos. Esto precede a la opción --event y permanece
solo para compatibilidad con versiones anteriores. Ver --evento.
-g
Habilita la grabación de gráfico de llamadas (cadena de pila / seguimiento).
- gráfico de llamadas
Configure y habilite la grabación de gráfico de llamadas (cadena de pila / rastreo inverso), implica -g. El valor predeterminado es
"fp".
Permite especificar "fp" (puntero de cuadro) o "enano"
(CFI de DWARF - Información del marco de llamada) o "lbr"
(Instalación de registro de última rama de hardware) como método para recopilar
la información utilizada para mostrar los gráficos de llamadas.
En algunos sistemas, donde los binarios se compilan con gcc
--fomit-frame-pointer, el uso del método "fp" producirá falsos
llamar a gráficos, utilizando "enano", si está disponible (herramientas de rendimiento vinculadas a
la biblioteca libunwind o libdw) debe usarse en su lugar.
El uso del método "lbr" no requiere ninguna opción del compilador. Eso
producirá gráficos de llamadas a partir de los registros LBR de hardware. los
La principal limitación es que solo está disponible en las nuevas versiones de Intel.
plataformas, como Haswell. Solo puede obtener la cadena de llamadas del usuario. Eso
no funciona con el muestreo de la pila de ramas al mismo tiempo.
Cuando se usa la grabación "enana", perf también registra el volcado de pila (del usuario)
cuando se muestrea. El tamaño predeterminado del volcado de pila es 8192 (bytes).
El usuario puede cambiar el tamaño pasando el tamaño después de una coma como
"--call-graph dwarf, 4096".
-q, - silencioso
No imprima ningún mensaje, útil para la creación de secuencias de comandos.
-v, --detallado
Sea más detallado (muestre los errores abiertos del contador, etc.).
-s, --stat
Registre los recuentos de eventos por hilo. Úselo con Perf (reporte) -T para ver los valores.
-d, --datos
Registre las direcciones de muestra.
-T, - marca de tiempo
Registre las marcas de tiempo de muestra. Úselo con Perf (reporte) -D para ver las marcas de tiempo, para
ejemplo.
-P, --período
Registre el período de la muestra.
-n, --sin muestras
No muestree.
-R, --muestras-crudas
Recopile registros de muestras sin procesar de todos los contadores abiertos (predeterminado para los contadores de puntos de seguimiento).
-C, --cpu
Recopile muestras solo en la lista de CPU proporcionada. Se pueden proporcionar varias CPU como
lista separada por comas sin espacios: 0,1. Los rangos de CPU se especifican con -: 0-2. En
modo por subproceso con el modo de herencia activado (predeterminado), las muestras se capturan solo cuando el
subproceso se ejecuta en las CPU designadas. El valor predeterminado es monitorear todas las CPU.
-N, --no-buildid-caché
No actualice la caché de buildid. Esto ahorra algunos gastos generales en situaciones en las que el
la información en el archivo perf.data (que incluye buildids) es suficiente.
-G nombre, ..., --c nombre del grupo, ...
supervisar solo en el contenedor (cgroup) llamado "nombre". Esta opción está disponible solo en
modo por cpu. El sistema de archivos cgroup debe estar montado. Todos los hilos pertenecientes a
"nombre" del contenedor se supervisan cuando se ejecutan en las CPU supervisadas. Varios cgroups
se puede proporcionar. Cada cgroup se aplica al evento correspondiente, es decir, el primer cgroup
al primer evento, segundo cgroup al segundo evento y así sucesivamente. Es posible proporcionar un
cgroup vacío (monitorear todo el tiempo) usando, por ejemplo, -G foo ,, bar. Cgroups debe tener
eventos correspondientes, es decir, siempre se refieren a eventos definidos anteriormente en el comando
la línea.
-b, - rama-cualquiera
Habilite el muestreo de la pila de ramas tomadas. Se puede muestrear cualquier tipo de rama tomada. Esto es un
atajo para --branch-filter any. Consulte --branch-filter para obtener más información.
-j, - filtro de rama
Habilite el muestreo de la pila de ramas tomadas. Cada muestra captura una serie de tomas consecutivas
sucursales. El número de ramas capturadas con cada muestra depende del subyacente
hardware, el tipo de ramas de interés y el código ejecutado. Es posible
seleccione los tipos de ramas capturadas habilitando filtros. Los siguientes filtros son
definido:
· Cualquiera: cualquier tipo de sucursales
· Any_call: cualquier llamada a función o llamada al sistema
· Any_ret: devolución de cualquier función o devolución de llamada al sistema
· Ind_call: cualquier rama indirecta
· Llamada: llamadas directas, incluidas llamadas lejanas (hacia / desde el núcleo)
· U: solo cuando el destino de la rama está en el nivel de usuario
· K: solo cuando el destino de la rama está en el kernel
· Hv: solo cuando el objetivo está en el nivel del hipervisor
· In_tx: solo cuando el objetivo está en una transacción de hardware
· No_tx: solo cuando el objetivo no está en una transacción de hardware
· Abort_tx: solo cuando el objetivo es una transacción de hardware abortar
· Cond: ramas condicionales
La opción requiere al menos un tipo de rama entre any, any_call, any_ret, ind_call,
cond. Los niveles de privilegio se pueden omitir, en cuyo caso, los niveles de privilegio del
los eventos asociados se aplican al filtro de rama. Tanto el kernel (k) como el hipervisor (hv)
los niveles de privilegios están sujetos a permisos. Al muestrear en varios eventos, bifurque
el muestreo de pila está habilitado para todos los eventos de muestreo. El tipo de rama muestreada es el
lo mismo para todos los eventos. Los distintos filtros deben especificarse como una lista separada por comas:
--branch-filter any_ret, u, k Tenga en cuenta que esta función puede no estar disponible en todos
procesadores.
--peso
Habilite el muestreo ponderado. Se registra un peso adicional por muestra y se puede
se muestra con las claves de clasificación weight y local_weight. Esto funciona actualmente para TSX
abortar eventos y algunos eventos de memoria en modo preciso en CPU Intel modernas.
--transacción
Registre banderas de transacciones para eventos relacionados con transacciones.
--por hilo
Utilice mmaps por subproceso. De forma predeterminada, se crean mmaps por cpu. Esta opción anula eso
y utiliza mmaps por hilo. Un efecto secundario de eso es que la herencia es automáticamente
discapacitado. --per-thread se ignora con una advertencia si se combina con las opciones -a o -C.
-D, --delay =
Después de iniciar el programa, espere milisegundos antes de medir. Esto es útil para filtrar
la fase de inicio del programa, que a menudo es muy diferente.
-yo, --intr-regs
Capturar el estado de la máquina (registros) en la interrupción, es decir, en los desbordamientos del contador para cada
muestra. La lista de registros capturados depende de la arquitectura. Esta opción está desactivada por
defecto. Es posible seleccionar los registros para muestrear usando sus nombres simbólicos,
por ejemplo, en x86, ax, si. Para listar los registros disponibles use --intr-regs = \ ?. Nombrar
registros, pase una lista separada por comas como --intr-regs = ax, bx. La lista de registro
depende de la arquitectura.
--tiempo de ejecución
Registro de tiempo de ejecución y habilitado para eventos de lectura (: S)
-k, --idreloj
Establece la identificación del reloj que se utilizará para los distintos campos de tiempo en los registros perf_event_type.
Consulte clock_gettime (). En particular, CLOCK_MONOTONIC y CLOCK_MONOTONIC_RAW son
admitido, algunos eventos también pueden permitir CLOCK_BOOTTIME, CLOCK_REALTIME y CLOCK_TAI.
-S, - instantánea
Seleccione el modo de instantánea de rastreo de área AUX. Esta opción es válida solo con un área AUX
evento de rastreo. Opcionalmente, el número de bytes a capturar por instantánea puede ser
especificado. En el modo de instantánea, los datos de seguimiento se capturan solo cuando la señal SIGUSR2 está
recibido.
--proc-mapa-tiempo de espera
Al procesar subprocesos preexistentes / proc / XXX / mmap, puede llevar mucho tiempo, porque
el archivo puede ser enorme. En tales casos, se necesita un tiempo de espera. Esta opción establece el tiempo
fuera del límite. El valor predeterminado es 500 ms.
--switch-eventos
Registrar eventos de cambio de contexto, es decir, eventos de tipo PERF_RECORD_SWITCH o
PERF_RECORD_SWITCH_CPU_WIDE.
--clang-ruta
Ruta al binario clang que se utilizará para compilar scriptlets BPF.
--clang-opción
Las opciones pasan a clang al compilar scriptlets BPF.
Use perf-record en línea usando los servicios de onworks.net