Red Hat Training
A Red Hat training course is available for RHEL 8
16.2. Muestreo de acceso a la memoria con perf mem
Puede utilizar perf mem
para muestrear los accesos a la memoria de su sistema. El comando toma las mismas opciones que perf record
y perf report
, así como algunas opciones exclusivas del subcomando mem
. Los datos registrados se almacenan en un archivo perf.data
en el directorio actual para su posterior análisis.
Requisitos previos
-
Tiene la herramienta de espacio de usuario
perf
instalada como se describe en Instalación de perf.
Procedimiento
Muestrear los accesos a la memoria:
# perf mem record -a sleep seconds
Este ejemplo muestrea los accesos a la memoria en todas las CPUs durante un período de seconds segundos, según lo dictado por el comando
sleep
. Puede reemplazar el comandosleep
por cualquier comando durante el cual desee muestrear los datos de acceso a la memoria. Por defecto,perf mem
muestrea tanto las cargas como los almacenamientos de memoria. Puede seleccionar sólo una operación de memoria utilizando la opción-t
y especificando "load" o "store" entreperf mem
yrecord
. Para las cargas, se captura la información sobre el nivel de la jerarquía de memoria, los accesos a la memoria TLB, los snoops del bus y los bloqueos de memoria.Abra el archivo
perf.data
para su análisis:# perf mem report
Si ha utilizado los comandos de ejemplo, la salida es:
Available samples 35k cpu/mem-loads,ldlat=30/P 54k cpu/mem-stores/P
La línea
cpu/mem-loads,ldlat=30/P
denota los datos recogidos sobre las cargas de memoria y la líneacpu/mem-stores/P
denota los datos recogidos sobre los almacenes de memoria. Resalte la categoría de interés y pulse Enter para ver los datos:Samples: 35K of event 'cpu/mem-loads,ldlat=30/P', Event count (approx.): 4067062 Overhead Samples Local Weight Memory access Symbol Shared Object Data Symbol Data Object Snoop TLB access Locked 0.07% 29 98 L1 or L1 hit [.] 0x000000000000a255 libspeexdsp.so.1.5.0 [.] 0x00007f697a3cd0f0 anon None L1 or L2 hit No 0.06% 26 97 L1 or L1 hit [.] 0x000000000000a255 libspeexdsp.so.1.5.0 [.] 0x00007f697a3cd0f0 anon None L1 or L2 hit No 0.06% 25 96 L1 or L1 hit [.] 0x000000000000a255 libspeexdsp.so.1.5.0 [.] 0x00007f697a3cd0f0 anon None L1 or L2 hit No 0.06% 1 2325 Uncached or N/A hit [k] pci_azx_readl [kernel.kallsyms] [k] 0xffffb092c06e9084 [kernel.kallsyms] None L1 or L2 hit No 0.06% 1 2247 Uncached or N/A hit [k] pci_azx_readl [kernel.kallsyms] [k] 0xffffb092c06e8164 [kernel.kallsyms] None L1 or L2 hit No 0.05% 1 2166 L1 or L1 hit [.] 0x00000000038140d6 libxul.so [.] 0x00007ffd7b84b4a8 [stack] None L1 or L2 hit No 0.05% 1 2117 Uncached or N/A hit [k] check_for_unclaimed_mmio [kernel.kallsyms] [k] 0xffffb092c1842300 [kernel.kallsyms] None L1 or L2 hit No 0.05% 22 95 L1 or L1 hit [.] 0x000000000000a255 libspeexdsp.so.1.5.0 [.] 0x00007f697a3cd0f0 anon None L1 or L2 hit No 0.05% 1 1898 L1 or L1 hit [.] 0x0000000002a30e07 libxul.so [.] 0x00007f610422e0e0 anon None L1 or L2 hit No 0.05% 1 1878 Uncached or N/A hit [k] pci_azx_readl [kernel.kallsyms] [k] 0xffffb092c06e8164 [kernel.kallsyms] None L2 miss No 0.04% 18 94 L1 or L1 hit [.] 0x000000000000a255 libspeexdsp.so.1.5.0 [.] 0x00007f697a3cd0f0 anon None L1 or L2 hit No 0.04% 1 1593 Local RAM or RAM hit [.] 0x00000000026f907d libxul.so [.] 0x00007f3336d50a80 anon Hit L2 miss No 0.03% 1 1399 L1 or L1 hit [.] 0x00000000037cb5f1 libxul.so [.] 0x00007fbe81ef5d78 libxul.so None L1 or L2 hit No 0.03% 1 1229 LFB or LFB hit [.] 0x0000000002962aad libxul.so [.] 0x00007fb6f1be2b28 anon None L2 miss No 0.03% 1 1202 LFB or LFB hit [.] __pthread_mutex_lock libpthread-2.29.so [.] 0x00007fb75583ef20 anon None L1 or L2 hit No 0.03% 1 1193 Uncached or N/A hit [k] pci_azx_readl [kernel.kallsyms] [k] 0xffffb092c06e9164 [kernel.kallsyms] None L2 miss No 0.03% 1 1191 L1 or L1 hit [k] azx_get_delay_from_lpib [kernel.kallsyms] [k] 0xffffb092ca7efcf0 [kernel.kallsyms] None L1 or L2 hit No
También puede ordenar los resultados para investigar diferentes aspectos de interés al mostrar los datos. Por ejemplo, para ordenar los datos sobre las cargas de memoria por tipo de accesos a la memoria que se producen durante el período de muestreo en orden descendente de la sobrecarga que representan:
# perf mem -t load report --sort=mem
Por ejemplo, la salida puede ser:
Samples: 35K of event 'cpu/mem-loads,ldlat=30/P', Event count (approx.): 40670 Overhead Samples Memory access 31.53% 9725 LFB or LFB hit 29.70% 12201 L1 or L1 hit 23.03% 9725 L3 or L3 hit 12.91% 2316 Local RAM or RAM hit 2.37% 743 L2 or L2 hit 0.34% 9 Uncached or N/A hit 0.10% 69 I/O or N/A hit 0.02% 825 L3 miss
Recursos adicionales
-
Para una explicación de las opciones de comando específicas del subcomando
mem
, consulte la página de manualperf-mem(1)
.