-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Aktuell ist es schwierig im Linux die aktuelle Stackverwendung zu analysieren. Über /proc/[pid]/maps kann zwar festgestellt werden, welche Speicherseiten gemapped wurden, was eine granularität von (maximal) 4096 byte erbringt.
Eine Perf erweiterung wäre es beim samplen nicht nur %RIP Register auszulesen, sondern auch den aktuellen Stackpointer (%ESP bei x96-64 oder %SP bei Arm/RISC-V).
Problem: sampeln beginnt nicht, nachdem das program sofort startete, Nutzer können sich ja zu einen bereits (sehr) lange laufende Applikation "attachen". Wenn nun bei jeden auslesen der %ESP genommen wird - welche Aussage könnte dann getroffen werden. Hier wäre vielmehr die Frage: kommt man an die Stack Start Adresse heran? Dies könnte man auf der Maillingliste erfragen. Bei unwindung muss es ja auch eine Abbruchbedinung geben, wann stoppt man beispielsweise beim unwinding?
Evtl kann man hier schauen: https://github.com/d99kris/stackusage.git - was wird hier als Referenz verwendet? Wie wird hier das Delta berechnet?