GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verwenden von perf zum Überwachen von Rohereigniszählern

Ok, ich glaube, ich habe es herausgefunden.

Für den von mir verwendeten Intel-Rechner lautet das Format wie folgt:<umask><eventselector> wobei beide Hexadezimalwerte sind. Die führenden Nullen der umask können weggelassen werden, aber nicht für den Ereignisselektor.

Also für das Ereignis 0xB0 mit der Maske 0x01 Ich kann anrufen:

perf record -e r1B0 ./mytestapp someargs

Ich konnte die genaue Analyse im Perf-Kernel-Code nicht finden (irgendein Kernel-Hacker hier?), aber ich habe diese Quellen gefunden:

  • Eine Beschreibung der Verwendung von perf mit Raw-Events im c't-Magazin 13/03 (Abonnement erforderlich), das einige Raw-Events mit ihrer Beschreibung aus dem Intel Architecture Software Developers Manual (Vol 3b) beschreibt
  • Ein Patch auf der Kernel-Mailingliste, in dem diskutiert wird, wie man ihn richtig dokumentiert. Es spezifizierte, dass das obige Muster "... war x86-spezifisch und noch dazu unvollständig"
  • (Aktualisiert) Die Manpage neuerer Versionen zeigt ein Beispiel auf Intel-Rechnern:man perf-list

Aktualisieren :Wie in den Kommentaren erwähnt (danke!), kann der libpfm-Übersetzer verwendet werden, um den richtigen Ereignisdeskriptor zu erhalten. Die in den Kommentaren verlinkte Website (Bojan Nikolic:How to monitor the full range of CPU performance events), die vom Benutzer 'osgx' entdeckt wurde, erklärt es ausführlicher.


Anscheinend können Sie auch Folgendes verwenden:

perf record -e cpu/event=0xB1,umask=0x1/u ./mytestapp someargs

Ich weiß nicht, wo diese Syntax dokumentiert ist.

Sie können wahrscheinlich auch die anderen Argumente (edge, inv, cmask) verwenden.


Linux
  1. Inotify verwenden, um den Zugriff auf eine Datei zu überwachen?

  2. Wenn ich Gnu Screen verwende, erhalte ich eine Raw-Eingabeaufforderung mit Backslashes?

  3. So überwachen Sie aktive VPN-Sitzungen und Temperatur mit Nagios

  4. Simulieren des Key Press-Ereignisses mit Python für Linux

  5. VirtualBox-Raw-Laufwerk mit UUID anstelle des Gerätenamens

So überwachen Sie Linux-Server mit CloudStats

So überwachen Sie Dateiänderungen mit fswatch unter Linux

So überwachen Sie die Betriebszeit von Linux-Systemen mit Uptimed

Zeigen Sie den Ereignisverlauf von USB-Geräten mit Usbrip in Linux an

So überwachen Sie den Fortschritt von Daten durch eine Pipe mit dem Befehl „pv“.

Überwachen Sie die Netzwerk-Socket-Verbindung mit dem Befehl 10 „ss“.