Uses the prior calltree functionality to generate a native flamegraph
directly from pmc. It creates a standalone html file that only depends
on D3.js for rendering.
Details
Diff Detail
- Repository
- rG FreeBSD src repository
- Lint
Lint Skipped - Unit
Tests Skipped - Build Status
Buildable 79004 Build 75887: arc lint + arc unit
Event Timeline
codex also flags Three earlier defects also recur here: address-sign classification rejects valid low kernel addresses (line 154), unresolved frames are removed and entirely unresolved samples disappear (line 172), and L3-miss counting omits DRAM-served misses (lines 213–217).
And it flagged a couple others I wasn't sure were right, so there may be more dragons here.
| usr.sbin/pmc/cmd_pmc_flamegraph.cc | ||
|---|---|---|
| 200 | Same issue flagged before: codex says C++ functions lose IBS annotations — lines 197–200 store statistics under mangled sym.name, while getextra() receives the demangled node label. Confirmed a populated IBS record produced no annotation for demo::work(int). Use the same stable symbol key for collection and lookup. | |
| 264 | From codex: HTML pruning corrupts sample accounting — cmd_pmc_flamegraph.cc:248–262 subtracts children from node->samples during serialization, including from tree.root.samples, which remains the pruning denominator. It commonly becomes zero before descendants are processed, disabling deeper pruning. Pruned branches also disappear from the total: a 90/10 split with a 20% threshold becomes 90/90. | |