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