Zum Inhalt springen

samply - Sampling Profiler with Firefox Profiler UI Cheatsheet

samply - Sampling Profiler with Firefox Profiler UI Cheatsheet

samply ist ein Cross-Plattform Command-Line Sampling Profiler für macOS, Linux und Windows. Es tastet Stack Traces von einem Befehl oder einem laufenden Prozess (Default ~1000 Hz) und dient dann die Ergebnisse zur Firefox Profiler Web UI — eine Reife, Interaktive Front End mit Flame Graphs, Stack Charts, ein Call Tree und Pro-Thread Timelines. Es profilet Native Code (C/C++/Rust/Go) und Andere Sprachen, die Standard Stack Info ausgeben, mit Keine Code Änderungen erforderlich.

Installation

MethodeBefehl
Cargocargo install --locked samply
BinärDownload von der GitHub Releases Seite
Linux perf Event ZugriffKönnte sysctl kernel.perf_event_paranoid=1 (oder niedriger) brauchen
Überprüfensamply --version

Grundlegende Nutzung

BefehlBeschreibung
samply record ./my-program argsProfile einen Befehl, dann öffne die UI
samply record -- cargo run --releaseProfile nach -- (Pass Flaggen durch)
samply record --pid 1234Profile einen bereits-laufenden Prozess
samply load profile.json.gzRe-öffne ein Gespeicherts Profil in der UI
samply --helpVollständige Optionenliste

Recording Optionen

OptionBeschreibung
-r, --rate NSampling Rate in Hz (Default ~1000)
-o, --output FILESpeicher das Profil zu einer Datei
--save-onlyAufzeichnung ohne Starten der Browser UI
-p, --pid PIDAttach zu einem laufenden Prozess
-d, --duration SECSProfile für eine Feste Duration
--reuse-threadsThread Handling Tweak für einige Workloads
--Alles nach das ist der Befehl + seine Args

Die Firefox Profiler UI

Nach Aufzeichnung öffnet Samply eine Lokale Firefox Profiler Ansicht. Key Panels:

PanelZeigt
Flame GraphAggregierte Stacks (wo Zeit ausgegeben wird)
Stack ChartZeit auf den X-Axis, Stacks vertikal stapeln
Call TreeTop-Down / Bottom-Up Hierarchie mit Self/Total Zeit
Marker ChartEvents über Zeit (wenn vorhanden)
TimelinePro-Thread Aktivität; Wähle einen Bereich um Fokus zu setzen
UI AktionNutzung
Wähle einen Zeit BereichFokus Analyse auf Teil des Runs
Invert Call StackFinde Heiße Blatt Funktionen (Self Zeit)
SucheFilter den Call Tree nach Funktions Namen
Teile/ExportSpeicher oder Upload das Profil

Workflow Tips

ZielAnsatz
Finde CPU Heiße PathsAufzeichnung, öffne Flame Graph, Look für Breite Frames
Finde ein Spezifisches Langsames PhaseWähle diesen Zeit Bereich in der Timeline
Vergleiche BuildsSpeicher Profile und Lade Seite an Seite
Reduziere RauschenProfile Release Builds mit Debug Info (debug = true)

Common Workflows

# Profile ein Rust Release Build (Halten Sie Symbols mit Debug Info)
samply record -- cargo run --release

# Profile ein laufender Server für 20 Sekunden
samply record --pid $(pgrep -n myserver) -d 20

# Aufzeichnung Headless in CI, Inspiziere den Artifact später
samply record --save-only -o prof.json.gz ./bench
samply load prof.json.gz

samply vs Andere Profilers

Aspektsamplyperf + FlameGraphhotspot
PlattformenmacOS/Linux/WindowsLinuxLinux
UIFirefox Profiler (Reichlich)Static SVGQt GUI
SetupSingle BinaryMultiple ToolsGUI Install
Beste fürCross-Plattform, InteraktivScripted Linux ProfilingQt/perf GUI Users

Ressourcen