Por que não consigo encontrar o evento de cache de hardware na minha lista perf?

2

Eu tenho um problema em usar o linux perf em um laptop recém-comprado: não há nenhum efeito de cache de hardware disponível na minha lista perfeita! Bem, esta é realmente toda a informação importante que eu gostaria de provar !! Aqui está minha lista perfeita:

List of pre-defined events (to be used in -e):
cpu-cycles OR cycles                               [Hardware event]
instructions                                       [Hardware event]
cache-references                                   [Hardware event]
cache-misses                                       [Hardware event]
branch-instructions OR branches                    [Hardware event]
branch-misses                                      [Hardware event]
bus-cycles                                         [Hardware event]
ref-cycles                                         [Hardware event]

cpu-clock                                          [Software event]
task-clock                                         [Software event]
page-faults OR faults                              [Software event]
context-switches OR cs                             [Software event]
cpu-migrations OR migrations                       [Software event]
minor-faults                                       [Software event]
major-faults                                       [Software event]
alignment-faults                                   [Software event]
emulation-faults                                   [Software event]
dummy                                              [Software event]

branch-instructions OR cpu/branch-instructions/    [Kernel PMU event]
branch-misses OR cpu/branch-misses/                [Kernel PMU event]
bus-cycles OR cpu/bus-cycles/                      [Kernel PMU event]
cache-misses OR cpu/cache-misses/                  [Kernel PMU event]
cache-references OR cpu/cache-references/          [Kernel PMU event]
cpu-cycles OR cpu/cpu-cycles/                      [Kernel PMU event]
instructions OR cpu/instructions/                  [Kernel PMU event]
power/energy-cores/                                [Kernel PMU event]
power/energy-gpu/                                  [Kernel PMU event]
power/energy-pkg/                                  [Kernel PMU event]
power/energy-ram/                                  [Kernel PMU event]
ref-cycles OR cpu/ref-cycles/                      [Kernel PMU event]

rNNN                                               [Raw hardware event descriptor]
cpu/t1=v1[,t2=v2,t3 ...]/modifier                  [Raw hardware event descriptor]
(see 'man perf-list' on how to encode it)

mem:<addr>[:access]                                [Hardware breakpoint]

[ Tracepoints not available: Permission denied ]

enquanto esta é a lista perfeita que eu costumava ver: link .

O que eu costumava fazer é:

sudo perf stat -e L1-dcache-loads,L1-dcache-load-misses,LLC-loads,LLC-load-misses -a --append -o perf.txt [some command to run a file]

mas isso não funciona na minha nova máquina. Como posso coletar dados que quero neste caso?

Estou usando o Ubuntu 14.04, com kernel < 3.19.0-56 & gt ;. Versão Perf < 3.19.8-ckt15 >.

atualização

Eu instalei a biblioteca papi-tools e papi_native_avail me dá

Available native events and hardware information.

PAPI Version             : 5.3.0.0
Vendor string and code   : GenuineIntel (1)
Model string and code    : Intel(R) Core(TM) M-5Y71 CPU @ 1.20GHz (61)
CPU Revision             : 4.000000
CPUID Info               : Family: 6  Model: 61  Stepping: 4
CPU Max Megahertz        : 2900
CPU Min Megahertz        : 500
Hdw Threads per core     : 1
Cores per Socket         : 2
Sockets                  : 2
NUMA Nodes               : 1
CPUs per Node            : 4
Total CPUs               : 4
Running in a VM          : no
Number Hardware Counters : 0
Max Multiplex Counters   : 64
    
por 李哲源 02.04.2016 / 21:16

2 respostas

0

Primeiro, verifique se o processador tem até os contadores de hardware. A arquitetura Intel Haswell parou para fornecer contadores de hardware em processadores recentes (por algum motivo).

Em segundo lugar, gostaria de verificar se você pode ver o evento de hardware, por exemplo papi . O comando papi_native_avail deve listar seus eventos nativos, se o Ubuntu fornecer bancos de dados recentes o suficiente.

A terceira possibilidade é que os eventos estão aqui, mas não suportados pelo antigo perf . Sim, o Ubuntu 14.04 tem dois anos e o kernel / tools pode não suportar totalmente os processadores atuais.

    
por 03.04.2016 / 11:36
2

Também vale a pena notar que perf list pode fornecer resultados diferentes, dependendo de estar ou não sendo executado como root . (Talvez haja alguma configuração que faça com que root não seja o fator decisivo; não tenho certeza.)

Na minha caixa do Linux Mint 18.1, rodando um kernel 4.8.0-34-genérico:


$ perf list cache

List of pre-defined events (to be used in -e):

$ sudo perf list cache

List of pre-defined events (to be used in -e):

  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-icache-load-misses                              [Hardware cache event]
  LLC-load-misses                                    [Hardware cache event]
  LLC-loads                                          [Hardware cache event]
  LLC-store-misses                                   [Hardware cache event]
  LLC-stores                                         [Hardware cache event]
  branch-load-misses                                 [Hardware cache event]
  branch-loads                                       [Hardware cache event]
  dTLB-load-misses                                   [Hardware cache event]
  dTLB-loads                                         [Hardware cache event]
  dTLB-store-misses                                  [Hardware cache event]
  dTLB-stores                                        [Hardware cache event]
  iTLB-load-misses                                   [Hardware cache event]
  iTLB-loads                                         [Hardware cache event]
  node-load-misses                                   [Hardware cache event]
  node-loads                                         [Hardware cache event]
  node-store-misses                                  [Hardware cache event]
  node-stores                                        [Hardware cache event]
    
por 13.02.2017 / 19:29