Befehl zum Messen von TLB-Fehlern unter LINUX?

10

Könnte mich jemand an einen Befehl weiterleiten, um TLB-Fehler unter LINUX zu messen? Ist es in Ordnung, kleinere Seitenfehler zu berücksichtigen (oder ungefähr), wenn TLB fehlt?

Samarasa
quelle

Antworten:

9

Sie können perf verwenden, um auf die Hardware-Leistungsindikatoren zuzugreifen:

$ perf stat -e dTLB-load-misses,iTLB-load-misses /path/to/command

z.B :

$ perf stat -e dTLB-load-misses,iTLB-load-misses /bin/ls > /dev/null

 Performance counter stats for '/bin/ls':

             5,775 dTLB-load-misses                                            
             1,059 iTLB-load-misses                                            

       0.001897682 seconds time elapsed
gby
quelle
2

Ein kleiner Fehler und ein TLB-Fehler sind keine guten Analoga. Ein kleiner Fehler tritt auf, wenn sich eine angeforderte Seite im Speicher befindet, aber nicht in der aktuellen Seitentabelle zugeordnet ist. Es wäre sicherlich der Fall, dass ein geringfügiger Fehler mit einem TLB-Fehler verbunden ist (da die TLB-Einträge Verknüpfungen zu Seitentabelleneinträgen sind), aber TLB-Fehler werden durch viele andere Dinge verursacht, z. B. schwere Fehler oder einen Übergang in der Lokalität eines Programms .

adrianmcmenamin
quelle
1

Kleinere Seitenfehler treten auf, wenn die Seite bereits in den Speicher geladen ist, der zugehörige Seitentabelleneintrag jedoch noch nicht erstellt wurde. Als Nebeneffekt führen kleinere Seitenfehler immer zu TLB-Fehlern. Andererseits tritt ein TLB-Fehler auf, wenn sich der Übersetzungseintrag für eine Seite nicht im TLB befindet (bei dem es sich um einen Cache handelt). Dies kann vorkommen, wenn dieser TLB-Eintrag aufgrund der begrenzten Kapazität des TLB zuvor entfernt wurde.

rlavaee
quelle