Was bedeuten Perf-Cache-Ereignisse?

Lesezeit: 4 Minuten

Benutzer-Avatar
Manuel Selva

Ich versuche herauszufinden, warum ein modifiziertes C-Programm schneller läuft als sein nicht modifiziertes Gegenstück (ich füge nur sehr wenige Codezeilen hinzu, um zusätzliche Arbeit zu leisten). In diesem Zusammenhang vermute ich “Cache-Effekte” soll die Haupterklärung sein (Instruction Cache). Damit erreiche ich die perf (https://perf.wiki.kernel.org/index.php/Main_Page) Profiling-Tool, aber leider kann ich die Bedeutung seiner Ausgaben in Bezug auf Cache-Fehler nicht verstehen.

Es werden mehrere Ereignisse zum Thema Cache bereitgestellt:

  cache-references                                   [Hardware event]
  cache-misses                                       [Hardware event]
  L1-dcache-loads                                    [Hardware cache event]
  L1-dcache-load-misses                              [Hardware cache event]
  L1-dcache-stores                                   [Hardware cache event]
  L1-dcache-store-misses                             [Hardware cache event]
  L1-dcache-prefetches                               [Hardware cache event]
  L1-dcache-prefetch-misses                          [Hardware cache event]
  L1-icache-loads                                    [Hardware cache event]
  L1-icache-load-misses                              [Hardware cache event]
  L1-icache-prefetches                               [Hardware cache event]
  L1-icache-prefetch-misses                          [Hardware cache event]
  LLC-loads                                          [Hardware cache event]
  LLC-load-misses                                    [Hardware cache event]
  LLC-stores                                         [Hardware cache event]
  LLC-store-misses                                   [Hardware cache event]
  LLC-prefetches                                     [Hardware cache event]
  LLC-prefetch-misses                                [Hardware cache event]
  dTLB-loads                                         [Hardware cache event]
  dTLB-load-misses                                   [Hardware cache event]
  dTLB-stores                                        [Hardware cache event]
  dTLB-store-misses                                  [Hardware cache event]
  dTLB-prefetches                                    [Hardware cache event]
  dTLB-prefetch-misses                               [Hardware cache event]
  iTLB-loads                                         [Hardware cache event]
  iTLB-load-misses                                   [Hardware cache event]
  branch-loads                                       [Hardware cache event]
  branch-load-misses                                 [Hardware cache event]
  node-loads                                         [Hardware cache event]
  node-load-misses                                   [Hardware cache event]
  node-stores                                        [Hardware cache event]
  node-store-misses                                  [Hardware cache event]
  node-prefetches                                    [Hardware cache event]
  node-prefetch-misses                               [Hardware cache event]

Wo finde ich Erklärungen zu diesen Feldern? cache-misses-Ereignis ist immer kleiner als andere Ereignisse. Was misst dieses Ereignis?

Wie sind die 26.760 L1-icache-load-misses für ls im Vergleich zu den 5.708 cache-misses im folgenden Beispiel zu interpretieren?

perf stat -e L1-icache-load-misses ls
caches  caches~  out

 Performance counter stats for 'ls':

            26,760 L1-icache-load-misses                                       

       0.002816690 seconds time elapsed



perf stat -e cache-misses ls
caches  caches~  out

 Performance counter stats for 'ls':

             5,708 cache-misses                                                

       0.002822122 seconds time elapsed

Einige Antworten:

  • L1 ist der Level-1-Cache, der kleinste und schnellste. LLC andererseits bezieht sich auf die letzte Ebene der Cache-Hierarchiewas den größten, aber langsamsten Cache bezeichnet.
  • i vs. d unterscheidet den Instruktions-Cache vom Daten-Cache. Nur L1 wird auf diese Weise aufgeteilt, andere Caches werden zwischen Daten und Anweisungen geteilt.
  • TLB bezieht sich auf Übersetzungs-Lookaside-Pufferein Cache, der beim Zuordnen virtueller Adressen zu physischen verwendet wird.
  • Unterschiedliche TLB-Zähler, je nachdem, ob sich die genannte Adresse auf eine Anweisung oder einige Daten bezieht.
  • Für alle Datenzugriffe werden unterschiedliche Zähler geführt, je nachdem, ob die gegebene Speicherstelle gelesen, geschrieben oder vorab abgerufen (dh zum Lesen zu einem späteren Zeitpunkt abgerufen) wurde.
  • Die Anzahl der Misses gibt an, wie oft aber auf ein bestimmtes Datum zugegriffen wurde nicht im Cache vorhanden.

  • Danke für die Antwort. Verwenden Sie dieses Tool? Wie erklären Sie das Cache-Miss-Ereignis, das als Hardware-Ereignis und nicht als Hardware-Cache-Ereignis bezeichnet wird? Ich dachte, es wäre die Summe von anderen, aber überhaupt nicht.

    – Manuel Selva

    26. September 2012 um 12:57 Uhr

  • Und außerdem, was ist der Unterschied zwischen “loads” und “prefetches”?

    – Manuel Selva

    26. September 2012 um 13:01 Uhr

  • @ManuelSelva: Ich benutze nicht perf Ich selbst, also habe ich wenig tatsächliche Erfahrung. Insbesondere bin ich unsicher, was die cache-misses Ereignis tatsächlich beschreibt, im Vergleich zu allen Hardware-Cache-Ereignissen. Bei Vorabrufen bin ich mir auch nicht ganz sicher: Es gibt eine Möglichkeit, Vorabrufe auf Anwendungsebene sowie automatische Vorabrufe des von der Hardware vorhergesagten Datenzugriffs auszulösen. Eines oder beide davon könnten das sein, was die Prefetch-Zähler tatsächlich beschreiben. perf Dokumentation erwähnt Herstellerspezifikationen für weitere Details, aber ich habe die relevanten Abschnitte noch nicht gefunden.

    – MVG

    27. September 2012 um 9:35 Uhr

  • @ManuelSelva Ein “Laden” ist, wenn Ihr Programm eine Ladeanweisung ausführt, um Speicher abzurufen. Ein “Prefetch” ist, wenn der Prozessor annimmt, dass Sie in naher Zukunft Speicher laden werden, und ihn vorzeitig abruft. Auf diese Weise befindet sich Ihr Programm bereits im Cache, wenn es den Speicher verwendet.

    – Raseh

    26. Oktober 2013 um 19:12 Uhr

Benutzer-Avatar
Moncef Mechri

Sie scheinen zu denken, dass die cache-misses event ist die Summe aller anderen Arten von Cache-Misses (L1-dcache-load-misses, usw). Das stimmt eigentlich nicht.

das cache-misses event stellt die Anzahl der Speicherzugriffe dar, die von keinem der Caches bedient werden konnten.

Ich gebe zu, dass die Dokumentation von perf nicht die beste ist.

Man kann jedoch ziemlich viel darüber lernen, indem man (vorausgesetzt, Sie haben bereits gute Kenntnisse darüber, wie eine CPU und eine Leistungsüberwachungseinheit funktionieren, dies ist eindeutig kein Computerarchitekturkurs) das Dokument der Funktion perf_event_open() liest:

http://web.eece.maine.edu/~vweaver/projects/perf_events/perf_event_open.html

Wenn Sie es beispielsweise lesen, können Sie sehen, dass die cache-misses Ereignis, das von der Perf-Liste angezeigt wird, entspricht PERF_COUNT_HW_CACHE_MISSES

  • Siehe auch Wie berechnet Linux perf die Cache-Referenzen und Cache-Miss-Ereignisse für einige Grundlagen zu einigen generischen Ereignissen, die HW-Ereignissen auf neueren Intel-CPUs zugeordnet sind.

    – Peter Cordes

    14. Februar 2020 um 8:41 Uhr

Benutzer-Avatar
dongxiao

Entsprechend Perfektes Tutorial, Ereignisse der Performance Monitoring Unit (PMU). oder Hardware-Ereignisse beziehen sich auf jene Ereignisse, die direkt CPU-spezifischen Ereignissen für einen CPU-Anbieter zugeordnet werden können. Aber die Hardware-Cache-Ereignisse beziehen sich auf einige Moniker für Hardwareereignisse, die von bereitgestellt werden perf, die tatsächlichen Ereignissen zugeordnet werden können, die von der CPU bereitgestellt werden. Für die Liste der perfCache-Ereignisse verwenden perf list cache im Linux-Terminal.

1385450cookie-checkWas bedeuten Perf-Cache-Ereignisse?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy