• Nenhum resultado encontrado

ACESSO À MEMÓRIA DE PERFIL COM PERF MEM

No documento Red Hat Enterprise Linux 8 (páginas 146-150)

Pré-requisitos

CAPÍTULO 16. ACESSO À MEMÓRIA DE PERFIL COM PERF MEM

16.1. O PROPÓSITO DO PERF MEM

O sub-comando mem da ferramenta perf permite a amostragem dos acessos à memória (cargas e armazéns). O comando perf mem fornece informações sobre a latência da memória, tipos de acessos à memória, funções que causam acertos e erros no cache e, através do registro do símbolo de dados, os locais da memória onde esses acertos e erros ocorrem.

16.2. ACESSO À MEMÓRIA DE AMOSTRAGEM COM PERF MEM

Você pode usar o site perf mem para experimentar acessos de memória em seu sistema. O comando toma as mesmas opções que perf record e perf report, assim como algumas opções exclusivas do subcomando mem. Os dados gravados são armazenados em um arquivo perf.data no diretório atual para análise posterior.

Pré-requisitos

Você tem a ferramenta de espaço do usuário perf instalada como descrito em Instalando o perf. Procedimento

1. Amostra os acessos à memória:

# per mem record - um sono seconds

Este exemplo mostra os acessos à memória em todas as CPUs por um período de seconds segundos, como ditado pelo comando sleep. Você pode substituir o comando sleep por qualquer comando durante o qual você queira amostrar os dados de acesso à memória. Por padrão, perf mem mostra tanto as cargas de memória quanto os armazéns. Você pode selecionar apenas uma operação de memória usando a opção -t e especificando ou "carregar" ou "armazenar" entre perf mem e record. Para cargas, são capturadas informações sobre o nível hierárquico da memória, acessos à memória TLB, bus snoops e bloqueios de memória. 2. Abra o arquivo perf.data para análise:

# relatório perf mem

Se você tiver usado os comandos de exemplo, a saída é: Available samples

35k cpu/mem-loads,ldlat=30/P 54k cpu/mem-stores/P

A linha cpu/mem-loads,ldlat=30/P denota os dados coletados sobre as cargas de memória e a linha cpu/mem-stores/P denota os dados coletados sobre os depósitos de memória. Destaque a categoria de interesse e pressione Enter para visualizar os dados:

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

Alternativamente, você pode classificar seus resultados para investigar diferentes aspectos de interesse ao exibir os dados. Por exemplo, para classificar os dados sobre as cargas de memória por tipo de acessos de memória que ocorrem durante o período de amostragem, em ordem

decrescente de despesas gerais que eles contabilizam: # perf mem -t load report --sort=mem

Por exemplo, a saída pode 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 adicionais

Para uma explicação das opções de comando específicas para o subcomando mem, consulte a página de manual perf-mem(1).

16.3. INTERPRETAÇÃO DA SAÍDA DO RELATÓRIO PERF MEM

A tabela exibida executando o comando perf mem report sem nenhum modificador ordena os dados em várias colunas:

A coluna "Custos indiretos

Indica a porcentagem de amostras totais coletadas nessa função específica. A coluna "Amostras

Exibe o número de amostras contabilizadas por essa linha. A coluna "Peso local

Exibe a latência de acesso nos ciclos centrais do processador. A coluna 'Acesso à Memória'

Exibe o tipo de acesso à memória que ocorreu. A coluna "Símbolo

Exibe o nome ou símbolo da função. A coluna "Objeto Compartilhado

Mostra o nome da imagem ELF de onde vêm as amostras (o nome [kernel.kallsyms] é usado quando as amostras vêm do kernel).

A coluna 'Símbolo de dados

Exibe o endereço do local da memória que a fila estava alvejando.

IMPORTANTE

Muitas vezes, devido à alocação dinâmica da memória ou da memória em pilha sendo acessada, a coluna 'Símbolo de Dados' exibirá um endereço bruto.

Exibe as transações de ônibus. A coluna "Acesso TLB"

Exibe acessos à memória TLB. A coluna "Trancado

Indica se uma função estava ou não bloqueada na memória.

No modo padrão, as funções são ordenadas em ordem decrescente com aquelas com a maior sobrecarga exibida primeiro.

CAPÍTULO 17. DETECÇÃO DE COMPARTILHAMENTO FALSO

No documento Red Hat Enterprise Linux 8 (páginas 146-150)