Red Hat Training

A Red Hat training course is available for RHEL 8

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).