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
Ich fand das nützlich: Bestimmen, ob eine Anwendung eine schlechte Cache-Leistung hat \- Red Hat Developer
– nealmcb
28. Oktober 2020 um 14:56 Uhr