Schnellstart | Beitragen
Dieses Projekt enthält eine Bibliothek für die Linux-Perf-Event-APIs. Im Kern handelt es sich um eine Implementierung des Systemaufrufs perf_event_open (2)
, der unverändert verwendet werden kann.
Die Bibliothek enthält außerdem mehrere Dienstprogramme, die für eine stabile Nutzung der APIs erforderlich sind. Die Dienstprogramme bieten Fehlerbehandlung, unterstützen die Validierung und mehr.
Der Fokus dieser Bibliothek liegt auf hochpräzisen Ergebnissen ohne Mehraufwand bei der Messung . Das heißt, das Einrichten von Messungen kann kostspielig sein, aber die Durchführung von Messungen erfordert durch diese Bibliothek keinen Mehraufwand. Dies bringt den großen Vorteil mit sich, auf Kosten der UX möglichst genaue Ergebnisse zu erzielen und so flexibel wie möglich zu sein.
Um das Projekt zu erstellen, installieren Sie zunächst libcap
:
sudo apt install libcap-dev
sudo yum install libcap-devel
sudo zapper install libcap-devel
Dann erstellen Sie einfach das Projekt.
make build
Beispiele sind im examples
verfügbar und werden im Verzeichnis build/examples
ausgegeben.
./build/examples/full
Schnellstart
Merkmale
Dokumentation
Beitragen
CAP_PERFMON
wurde in 5.9 hinzugefügt). Für Linux sind zahlreiche Profilierungstools verfügbar. Tools wie Valgrind (und Callgrind) sind großartige und genaue Methoden zur Durchführung einer Leistungsanalyse des Speichers und des Callstacks. Es liefert jedoch vereinfachte Messungen für Werte wie CPU-Zyklen und Anweisungen, da keine native Hardware gemessen wird. Andere Tools wie gprof, prof und gperftools kommen der Hardware sehr nahe, unterstützen jedoch nicht die Messung von Kernel- und Leerlaufereignissen. Andere Methoden zur Messung von Anweisungen und Zyklen, die in SUPERCOP, Papi usw. verwendet werden, können ungenau sein und einfach die Gesamtzyklen zählen, die von einem CPU-Kern ausgeführt werden. Hier glänzen die Linux-Perf-APIs. Die APIs bieten einen umfassenden Satz an Tools zum Messen von Benutzer- und Kernel-Ereignissen – sei es über softwaredefinierte Haltepunkte oder Hardware-Zähler.
Das perf
-CLI-Tool eignet sich hervorragend zur Verwendung dieser APIs, misst jedoch die Ausführung eines gesamten Programms. Der zugrunde liegende Systemaufruf perf_event_open (2)
hat keinen Glibc-Wrapper und ist daher recht ausführlich – insbesondere bei der Durchführung vieler Messungen.
Diese Bibliothek zielt darauf ab, diese kleine Nischenlücke zu schließen, in der hochpräzise Messungen eines bestimmten Codes in einer Binärdatei erfolgen.
Wird fortgesetzt, sobald sich die API stabilisiert.
Jeder Beitrag ist willkommen. Wenn Sie nicht in der Lage sind, es selbst zu programmieren, kann es vielleicht jemand anderes sein – also posten Sie ein Problem, wenn Ihnen etwas auf dem Herzen liegt.
Stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
$CC
bezieht sich auf gcc
8 oder neuerlibcap
ist installiertclang-format
ist installiert (wenn Sie Code formatieren möchten)compiledb
ist installiert (wenn Sie Code formatieren oder ihn mit anderen llvm-Tools analysieren möchten) # Clone the repository
git clone https://github.com/AlexGustafsson/perf && cd perf
# Format the code
make format
# Build the library
make library
# Build examples
make examples
Die Beispiele können mit Docker getestet werden.
docker build -t perf .
docker run -it --rm --privileged perf ./pi
mmap
ed-Ereignisse hinzufügen