2013-02-03 13 views
27

Według perf tutorials, perf stat ma zgłaszać chybienia pamięci podręcznej za pomocą liczników sprzętowych. Jednak w moim systemie (aktualny Arch Linux) nie ma:Dlaczego perf nie zgłasza błędów w pamięci podręcznej?

[[email protected] goog]$ perf stat ./hash 

Performance counter stats for './hash': 

    869.447863 task-clock    # 0.997 CPUs utilized   
      92 context-switches   # 0.106 K/sec     
      4 cpu-migrations   # 0.005 K/sec     
     1,041 page-faults    # 0.001 M/sec     
2,628,646,296 cycles     # 3.023 GHz      
    819,269,992 stalled-cycles-frontend # 31.17% frontend cycles idle 
    132,355,435 stalled-cycles-backend # 5.04% backend cycles idle 
4,515,152,198 instructions    # 1.72 insns per cycle   
             # 0.18 stalled cycles per insn 
1,060,739,808 branches     # 1220.015 M/sec     
    2,653,157 branch-misses    # 0.25% of all branches   

    0.871766141 seconds time elapsed 

Czego mi brakuje? Przeszukałem już stronę podręcznika i sieć, ale nie znalazłem nic oczywistego.

Edytuj: mój procesor to Intel i5 2300K, jeśli to ma znaczenie.

+0

To zależy od liczników sprzętu. Nigdy nie użyłem 'perf', ale użyłem' PAPI' (http://icl.cs.utk.edu/PAPI/) i możliwe jest sprawdzenie dostępnych liczników sprzętu, aby dowiedzieć się, co można uzyskać z twój procesor. – SamGamgee

+2

Wypróbuj 'perf stat -d' - wyświetli niektóre zdarzenia pamięci podręcznej. Sprawdź także nowe narzędzie 'perf mem' dla zdarzeń zapisu/raportu - udokumentowane na http://www.linuxtag.org/2013/fileadmin/www.linuxtag.org/slides/Arnaldo_Melo_-_Linux__perf__tools__Overview_and_Current_Developments.e323.pdf slide 10 i http : //man7.org/linux/man-pages/man1/perf-mem.1.html – osgx

+1

osgx, 'perf stat -d' włączy multipleksowanie zdarzeń, które czasami może zgłaszać nieprawidłowe stawki. Lepiej jest ręcznie wybierać nie więcej niż 5-7 godzinnych zdarzeń na przebieg; i używaj tylko stat -d, aby uzyskać nazwy takich zdarzeń. Innym sposobem na Intel - wypróbuj toplev.py z https://github.com/andikleen/pmu-tools – osgx

Odpowiedz

39

W moim systemie, co oznacza Intel Xeon X5570 @ 2.93 GHz byłem abl e dostać perf stat zgłosić referencje cache i tęskni za zainteresowanie tych wydarzeń wyraźnie jak to

perf stat -B -e cache-references,cache-misses,cycles,instructions,branches,faults,migrations sleep 5 
Performance counter stats for 'sleep 5': 

     10573 cache-references            
      1949 cache-misses    # 18.434 % of all cache refs  
     1077328 cycles     # 0.000 GHz      
     715248 instructions    # 0.66 insns per cycle   
     151188 branches              
      154 faults              
      0 migrations             

    5.002776842 seconds time elapsed 

domyślnego zestawu zdarzeń nie obejmuje zdarzeń Cache, dopasowując swoje wyniki, nie wiem dlaczego

perf stat -B sleep 5 

Performance counter stats for 'sleep 5': 

     0.344308 task-clock    # 0.000 CPUs utilized   
      1 context-switches   # 0.003 M/sec     
      0 CPU-migrations   # 0.000 M/sec     
      154 page-faults    # 0.447 M/sec     
     977183 cycles     # 2.838 GHz      
     586878 stalled-cycles-frontend # 60.06% frontend cycles idle 
     430497 stalled-cycles-backend # 44.05% backend cycles idle 
     720815 instructions    # 0.74 insns per cycle   
             # 0.81 stalled cycles per insn 
     152217 branches     # 442.095 M/sec     
      7646 branch-misses    # 5.02% of all branches   

    5.002763199 seconds time elapsed 
+0

Dzięki, to było pomocne. Sądzę, że musieli zmienić domyślny zestaw zdarzeń, które zostały przechwycone. –

+0

Fajnie, myślałem, że to dziwne, że zawsze muszę zapisywać informacje .. To podejście jest szybsze :) – SamGamgee

+0

Pytanie wewnątrz pytania: Jaka jest liczba 'fauts' w wyniku perf –

3

Spędziłem kilka minut próbując zrozumieć perf. Dowiedziałem się, że brakuje pamięci podręcznej przez pierwsze nagranie, a następnie zgłoszenie danych (oba narzędzia: perf).

Aby zobaczyć listę wydarzeń:

perf list 

Na przykład, aby Czeskie obciążenie last level-cache strzela będziesz chciał użyć zdarzenia LLC-loads-misses jak ten

perf record -e LLC-loads-misses ./your_program 

następnie zgłosić wyniki

perf report -v 
7

W the latest source code domyślny wydarzenie nie obejmuje cache-misses i cache-references ponownie:

struct perf_event_attr default_attrs[] = { 

    { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_TASK_CLOCK  }, 
    { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_CONTEXT_SWITCHES }, 
    { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_CPU_MIGRATIONS  }, 
    { .type = PERF_TYPE_SOFTWARE, .config = PERF_COUNT_SW_PAGE_FAULTS  }, 

    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_CPU_CYCLES  }, 
    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_FRONTEND }, 
    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_STALLED_CYCLES_BACKEND }, 
    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_INSTRUCTIONS  }, 
    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_INSTRUCTIONS }, 
    { .type = PERF_TYPE_HARDWARE, .config = PERF_COUNT_HW_BRANCH_MISSES  }, 

}; 

WIĘC mA n i większość stron internetowych jest nieaktualna jak dotąd.

Powiązane problemy